Rahul,
Sorry, seems there is an error in the docs. You can only use the up-front binding notation when you use infix OR, not the prefixed OR:
$binding : ( A(...) or A(...) ) // this is valid
$binding : (or A(...) A(...) ) // this is not
Maybe we need to start supporting prefix notation for this too, but I really don't like this up-front binding notation. This is handled as a special case in the grammar, where you can't nest other CEs, etc... in other words, it is not orthogonal. It was good when we didn't supported nesting, but now that we do support, it makes things dangerous. Example: this is not valid:
$x : ( X(...) or ( X(...) and Y(...) ) ) // obviously, not valid
But if you remove the binding or move the binding inside, it is valid:
( X(...) or ( X(...) and Y(...) ) ) // valid
(
$x : X(...) or (
$x : X(...) and Y(...) ) ) // valid
Problem is that Mark does like that up-front notation, and he is the boss... ;)
Anyway, I would like to hear your opinion about it (and possibly other users too), if you prefer this up-front notation even being handled as a special case, or the multi-binding is ok for you.
Meanwhile, the workaround is either use the multi-bind as you are using or the infix OR as I showed above.
[]s
Edson
2007/10/23, Rahul Phadnis <
rahul.phadnis@yahoo.com>:I am using Jboss Rules 4.0.2 version.
I am trying to using or with binding. However the
following doesn't work
rule "RulesTest"
# the if part
activation-group "ActivationGroup1"
salience 50
when
$eventType: EventType(id ==
Constants.EVENT_DEVCOM_ID
)
$result : Result()
$param : Parameter($thresh:threshold)
# difference exceeds threshold value and
it is still day time
context: (or DevContext(difference > $thresh,
dayTime == true)
DevContext(difference > $thresh, sleepy
== false, dayTime == false) )
then
# do something here
end
I get rule compilation errors:
SEVERE: CheckedDroolsException
org.drools.CheckedDroolsException: There were errors
in the rule source: [320,18]: unknown:320:18
mismatched token:
[@1949,12142:12143='or',<34>,320:18]; expecting type
ID[321,15]: unknown:321:15 mismatched token:
[@1967,12215:12227='DevContext',<7>,321:15]; expecting
type RIGHT_PAREN[321,86]: unknown:321:86 mismatched
token: [@1990,12286:12286=')',<12>,321:86]; expecting
type THEN
at
org.drools.compiler.RuleBaseLoader.makeRuleBase(RuleBaseLoader.java:6
Is this a known bug ?
I can work around by using the alternate syntax
suggested in the documentation which is:
or $context : DevContext(difference > $thresh, dayTime
== true)
$context : DevComContext(difference > $thresh,
sleepy == false, dayTime == false) )
Rahul.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com