[rules-users] Using global in LHS
Jaroslaw Kijanowski
jaroslaw.kijanowski at redhat.com
Thu May 29 08:48:24 EDT 2008
Hi,
there are two issues:
- the left side of contains needs to be filed of Item (it also needs to
be a Collection or array)
- in your case you should use "memberOf" to check if a field (catId) is
a member of a Collection or array.
see the docs for more info (6.5.2.1.1.3.1. Operators)
However if you're going to use an array as your global, you will run
into a CCE, because an array doesn't implement the Collection interface
[1], [2].
I'm not sure if this is a bug in drools or an expected "constraint",
hence a bug in the docs.
Anyway, your safe using a List.
Cheers,
Jarek
[1]
drools-core/src/main/java/org/drools/base/evaluators/BaseMemberOfEvaluator.java
(evaluate())
[2] drools-core/src/main/java/org/drools/spi/FieldValue.java
Markus Helbig wrote:
> Hi,
>
> again a question, any body had success using globals in LHS?
>
> Following DSL
>
> [condition][]is a Item=Item()
> [condition][]-is of type Advertisment=advertisment contains catId
>
>
> rule
> when
> $pli: is a Item
> - is of type Advertisment
> then
> // do whatever you want
> end
>
> catId is a member of Item
> advertisment is a Integer[] array set as global
>
> comiling ends with:
>
> Unable to create Field Extractor for 'advertisment' of '[ClassObjectType
>
> It works fine if advertisment is a member of Item, but i want to have
> it as global ...
>
> Cheers
>
> Markus
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list