[rules-users] Accum question

Mike D mike.dalaker at kewill.com
Fri Jul 27 10:22:21 EDT 2007


Thanks Edson.  Yea, I typed it on the fly instead of cut/paste.  I will try
the inline eval.

Your help is appreciated!


Edson Tirelli-3 wrote:
> 
>    Sorry, it is not clear what you are trying to do.
>    There are a few clear mistakes in your rule:
> 
> 1. You can't use the $totV variable inside the accumulate, since $totV is
> the "result" of the accumulate.
> 
> 2. You can't use variables bound inside accumulate outside of it, since
> accumulate is a scope delimiter ($ciNo, $ciLineNo).
> 
> 3. If you want to sum values, use sum() function, but if you want to count
> occurrences, use the count() function.
> 
> 4. This expression is wrong: "$totV > 1". You must either compare
> something
> to a field or use an "eval()"  (inlined or not) to evaluate arbitrary
> expressions.
> 
> 5. I think it is simply a typo, but since the DRL is case sensitive, the
> java class Number must be written with capital N.
> 
>    Maybe if you can explain with more common terms what rule you are
> trying
> to write, we can help more... the best I could imagine is:
> 
> rule "00910 Pass XV sets"
>   when
>     $status : ValidationPassFailStatus()
>     exists ValidationControl(validationNo == 910)
>     CiLines( $ciNo : $ciNo, $ciLineNo : $ciLineNo, spiSecondary == "X" )
>     Number( intValue > 1 )
>           from accumulate( $c : CiLines( ciNo == $ciNo, ciLineNo ==
> $ciLineNo,
>                                          spiSecondary == "V" ),
>                            count( $c ) )
>  then
>     $status.pass(910);
> end
> 
>    Hope it helps.
> 
>    Edson
> 
> 2007/7/27, Mike D <mike.dalaker at kewill.com>:
>>
>>
>> Newbie question again...
>>
>> I'm trying to get a count of V lines if I have an X.  If more than 1 V
>> line,
>> I pass...  Obviously I can't have $totV on LHS, but you get my
>> drift.  What
>> is the correct syntax for this one?  I've been digging in the docs on
>> accum,
>> but can't find anything that fits what I'm trying to do.
>>
>> Thanks,
>> Mike
>>
>> rule "00910 Pass XV sets"
>>         when
>>                 $status : ValidationPassFailStatus()
>>                 exists ValidationControl(validationNo == 910)
>>                 $totV  : number()
>>                 from accumulate(CiLines($ciNo : $ciNo, $ciLineNo :
>> ciLineNo, spiSecondary
>> == "V"), sum($totV))
>>                 CiLines(ciNo == $ciNo, ciLineNo == $ciLineNo,
>> spiSecondary
>> == "X", $totV > 1)
>>         then
>>                 $status.pass(910);
>> end
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Accum-question-tf4157809.html#a11829193
>> Sent from the drools - user mailing list archive at Nabble.com.
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at 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
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Accum-question-tf4157809.html#a11830313
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list