[rules-users] looking for more information on drools expert

Gab Aldian aldian.gp at gmail.com
Thu Jul 16 10:04:47 EDT 2009


Thank you very much for the precision, I didn't see that. I used
'matches' instead of '==', because using '==' for comparing Strings in
java is very unsafe since it compares the references and not the
content of the strings. I thought it was the same in drools and I
thought 'matches' was the equivalent of the java '.equals' method.

But now you mention that in drools '==' is correct, I will use it rather.

Aldian

2009/7/16, Edson Tirelli <tirelli at post.com>:
>    Very good! :)
>
>    Just FYI, in the case of accumulate, you could also use the collectList()
> function to simplify your rule. This:
>
>         $alarmList : LinkedList()
>                         from accumulate (  ($e : Element(parentindex!=0) and
>                                           $a : Alarm( origin matches
> $e.name&& probablecause==45)),
>                                           init( LinkedList alarmList = new
> LinkedList();),
>                                           action( alarmList.add($a);),
>                                           reverse( alarmList.remove($a);),
>                                           result( alarmList ) );
>    Is the same as:
>
>         $alarmList : List()
>                         from accumulate (  ($e : Element(parentindex!=0) and
>                                           $a : Alarm( origin matches
> $e.name&& probablecause==45)),
>                                           collectList( $a ) );
>
>    Also, you can always implement your own functions for accumulate:
>
> http://blog.athico.com/2009/06/how-to-implement-accumulate-functions.html
>
>    Finally, I see you are using "matches" operator to compare equal strings.
> Not sure if that is what you want, because "==" has different semantics and
> better performance than "matches" if what you really want is compare
> equality. Remember that in regexps, some characters have special meaning,
> for instance, "." is a wildcard for any character. Meaning:
>
> "abc" matches "a.c" -> true
> "abc" == "a.c" -> false
>
>    Cheers,
>        Edson
>
>
>
> 2009/7/16 Gab Aldian <aldian.gp at gmail.com>
>
>> After some more investigation, I managed also to make it work with
>> collect: http://drools.pastebin.com/m14f0e329
>>
>> I would rather not multiplicate rules, because we probably will have
>> dozens for our system which is very big and can supervise around a
>> thousand equipements in some cases
>>
>> Thank you very much for the advices
>>
>> Aldian
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> http://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
>  Edson Tirelli
>  JBoss Drools Core Development
>  JBoss by Red Hat @ www.jboss.com
>



More information about the rules-users mailing list