[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1315) Rule that uses a 'collect' and 'from' clause together causes problem
Igor Bolic (JIRA)
jira-events at lists.jboss.org
Mon Nov 12 03:35:44 EST 2007
[ http://jira.jboss.com/jira/browse/JBRULES-1315?page=comments#action_12387005 ]
Igor Bolic commented on JBRULES-1315:
-------------------------------------
Sorry for my ambiguous English. By "same (modified) package" I was referring to the changed (modified) rules in a same package i.e. from time to time i need to change my rules, so I'm refreshing them by first removing whole package and then loading again this package from new .drl files.
I will attach integration test later this day.
> 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
>
> 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