[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1315) Rule that uses a 'collect' and 'from' clause together causes problem
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Wed Feb 6 13:31:04 EST 2008
[ http://jira.jboss.com/jira/browse/JBRULES-1315?page=comments#action_12398522 ]
Edson Tirelli commented on JBRULES-1315:
----------------------------------------
Pavlin,
I just commited the fixes to 4.0.x branch. I also removed the share counter as you suggested, as it was not being used anymore and it is much safer without it.
Thanks for the suggestions. Let us know if you face any other problem.
Edson
> Rule that uses a 'collect' and 'from' clause together causes problem
> --------------------------------------------------------------------
>
> Key: JBRULES-1315
> URL: http://jira.jboss.com/jira/browse/JBRULES-1315
> Project: JBoss Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Reteoo
> Affects Versions: 4.0.3
> Reporter: Igor Bolic
> Assigned To: Edson Tirelli
> Attachments: testRemovePackage.rar
>
>
> Test case:
> Write a Rule that uses a 'collect' and 'from' clause together, example:
> package com.sample.mypackage
> rule "Apply discount"
> when
> $order: Order();
> $items : ArrayList() from collect (OrderItem() from $order.items)
> then
> #apply discount
> end
> first i add the package to RuleBase object, everthing works fine. When i try to 'refresh' my rules, i.e. first remove the package and again
> add the same (modified) package to the RuleBase object, following error occurs:
> java.lang.IllegalArgumentException: Cannot remove a sink, when the list of sinks is null
> at org.drools.reteoo.ObjectSource.removeObjectSink(ObjectSource.java:116)
> at org.drools.reteoo.AlphaNode.remove(AlphaNode.java:181)
> at org.drools.reteoo.LeftInputAdapterNode.remove(LeftInputAdapterNode.java:204)
> at org.drools.reteoo.FromNode.remove(FromNode.java:153)
> at org.drools.reteoo.RightInputAdapterNode.remove(RightInputAdapterNode.java:167)
> at org.drools.reteoo.BetaNode.remove(BetaNode.java:186)
> at org.drools.reteoo.RuleTerminalNode.remove(RuleTerminalNode.java:461)
> at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:224)
> at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:272)
> at org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java:460)
> ...
> I've found a workaround for this error by writing my .drl code as following:
> package com.sample.mypackage
> rule "Explode Cart"
> salience 11
> dialect "java"
> when
> $order: Order()
> $item : OrderItem() from $order.items
> then
> insert( $item );
> end
> rule "Apply discount"
> no-loop true
> when
> $order : Order();
> $items : ArrayList() from collect (OrderItem())
> then
> #apply discount
> end
> Now, my rules are 'refreshed' without any error.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list