[
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