Hi,
Thanks for the reply..
--The sequential option is set to false
--Using StatelessKnowledgeSession
Summary what I intend to achieve,
OutPut I am getting:
AT
:1001
Done!
Done
Main Rule, total :-40.0
AT
:1000
Done!
Done
Main Rule, total :210.0
AT
:1000
Done
Main Rule, total :160.0
AT
:1000
Done
Main Rule, total :260.0
INFO:
Number of generated exceptions 4
Here I see the last rule is getting
fired every time ActualSum fact is inserted in first rule. And as the facts are
available one by one, these are available to Accumulate function used in third
Rule. Actually I am expecting only two exceptions one for AT:1001 and AT:1000
with total of -40 and 260 resp.
Please advise.
P.S. Please ignore “$lfna_SEI
and $r_SE”. And I am not modifying any facts in
any of the rules consequence (just insertion).
Thanks,
Ritesh
SunGard Technology Services, Lohia Jain,
Direct Tel: +91-20-3021 6084 *
Cell: +91- 9850960259 * ritesh.khot@sungard.com * www.sungard.com/sts
______________________________________________________________________
CONFIDENTIALITY: This email (including
any attachments) may contain confidential, proprietary and privileged
information, and unauthorized disclosure or use is prohibited. If you received
this email in error, please notify the sender and delete this email from your
system. Thank you.
From:
rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] On
Behalf Of Wolfgang Laun
Sent: Friday, September 17, 2010
1:00 PM
To: Rules Users List
Subject: Re: [rules-users] How to
activate/deactivate a rule.
I think this overly
complex (unless other things have to be considered as well.
As I interpret these three rules, it is required to compute the sum
of all values ABC.C with equal ABC.A
declare DistinctAT
d_auditT : String
d_sum: Double
end
rule "create DistinctAT on first ABC"
when
ABC( $a:A )
not DistinctAT( d_auditT == $a )
then
DistinctAT $disAT = new DistinctAT();
$disAT.setD_auditT($AT);
insert( $disAT );
end
rule "update d_sum in DistinctAT"
when
$disAT: DistinctAT( $a: d_auditT )
ABC( A == $a, $c:C )
then
$disAT.setD_sum( $disAT.getD_sum() + $c*0.13 );
end
Notice that I do not update/modify $disAT in the second rule since this would
cause a loop.
If you need the update to fire other rules, add "no-loop true".
To get all results, you can use a query; run it after all ABCs have been
inserted.
-W
On 17 September 2010 08:35, Ritesh <ritesh.khot@sungard.com> wrote:
Hi,
I have 3 rules in my drl file and want the last one should get fired only
after all the facts in rule1 and rule2 gets inserted in working memory.
Please see below code for more understanding. Please suggest.
Thanks
declare DistinctAT
d_auditT : String
end
declare ActualSum
auditT : String
sumOfThree : BigDecimal
end
rule "insert combined sum"
dialect 'java'
when
ABC( $a:A, $b:B, $c:C )
then
BigDecimal actSum = $c.multiply(0.13);
ActualSum $as = new ActualSum();
$as.setAuditT($a);
$as.setSumOfThree(actSum);
insert($as);
System.out.println("AT :" + $movAuditT);
end
rule "insert distinct AT"
dialect 'java'
when
$a : ActualSum( $AT : auditT )
not DistinctAT( d_auditT == $AT )
then
DistinctAT $disAT = new DistinctAT();
$disAT.setD_auditT($AT);
insert($disAT);
System.out.println("Done!");
end
rule "Get Sum Group by AT"
dialect 'java'
when
DistinctAT( $dAT: d_auditT )
$total : Double()
from accumulate( ActualSum( auditT == $dAT, $actSum_Main : sumOfThree ),
sum( $actSum_Main ) )
eval(
chkRuleExpre( $total,$lfna_SEI,$r_SEI )
)
then
System.out.println("Done Main Rule, total
:" + $total);
end
--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/How-to-activate-deactivate-a-rule-tp1516088p1516088.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users