[jboss-jira] [JBoss JIRA] (DROOLS-627) Rule with two accumulate followed by object type selection fail to fire rule
Mario Fusco (JIRA)
issues at jboss.org
Tue Oct 7 06:54:11 EDT 2014
[ https://issues.jboss.org/browse/DROOLS-627?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mario Fusco resolved DROOLS-627.
--------------------------------
Labels: backport-to-6.0.x (was: )
Fix Version/s: 6.2.0.CR1
Resolution: Done
Fixed by https://github.com/droolsjbpm/drools/commit/f2e2d1240
> Rule with two accumulate followed by object type selection fail to fire rule
> ----------------------------------------------------------------------------
>
> Key: DROOLS-627
> URL: https://issues.jboss.org/browse/DROOLS-627
> Project: Drools
> Issue Type: Bug
> Affects Versions: 6.1.0.Final, 6.2.0.Beta1
> Reporter: Anantjot Anand
> Assignee: Mario Fusco
> Labels: backport-to-6.0.x
> Fix For: 6.2.0.CR1
>
> Attachments: TestTwoAccumulateEval.java
>
>
> A rule with two accumulate function followed by Type(true) select fails to fire the rule.
> please note removing the second aggregation makes the Rule R1 fire.
> import java.lang.*;
> import java.util.*;
> import com.test.unittest.TestTwoAccumulateEval.TypeA;
> import com.test.unittest.TestTwoAccumulateEval.TypeB;
> import com.test.unittest.TestTwoAccumulateEval.TypeC;
> import com.test.unittest.TestTwoAccumulateEval.TypeD;
> import com.test.unittest.TestTwoAccumulateEval.TypeDD;
> rule R0
> dialect "java"
> when
> $a : TypeA( )
> $b : TypeB( parentId == $a.id)
> $c : TypeC( parentId == $b.id )
> $d : TypeD( parentId == $c.id, firings not contains "Rule R0 Fired" )
> then
> System.out.println("Rule R0 Fired");
> $d.setValue(1.0);
> $d.getFirings().add("Rule R0 Fired");
> update($d);
> end
> rule R1
> dialect "java"
> when
> $a : TypeA( )
> $b : TypeB( parentId == $a.id)
> $c : TypeC( parentId == $b.id, firings not contains "Rule R1 Fired" )
> $d : TypeD( parentId == $c.id)
> // Aggregate function [sum] creates a separate context
> $sumOfAll_1 : Double(doubleValue != Double.MAX_VALUE) from accumulate (
> $a_C1 : TypeA( )
>
> and
> $b_C1 : TypeB( parentId == $a_C1.id)
>
> and
> $c_C1 : TypeC( parentId == $b_C1.id )
>
> and
> $d_C1 : TypeD( parentId == $c_C1.id , $value_C1 : value , value != 0 )
> ;sum($value_C1))
> // end of sum aggregation
>
> // Aggregate function [sum] creates a separate context
> $sumOfAll_2 : Double(doubleValue != Double.MAX_VALUE) from accumulate (
> $a_C2 : TypeA( )
>
> and
> $b_C2 : TypeB( parentId == $a_C2.id)
>
> and
> $c_C2 : TypeC( parentId == $b_C2.id )
>
> and
> $dd_C2 : TypeDD( parentId == $c_C2.id , $value_C2 : value , value != 0 )
> ;sum($value_C2))
> // end of sum aggregation
> //eval(($sumOfAll_1 + $sumOfAll_2) > 0)
> //eval returns true however TypeA(true) evaluates to false...removing second aggregate
> //makes TypeA works
> TypeA(eval(($sumOfAll_1 + $sumOfAll_2) > 0))
> then
> System.out.println("Rule R1 Fired");
> $c.getFirings().add("Rule R1 Fired");
> update($c);
> end
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)
More information about the jboss-jira
mailing list