[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1315) Rule that uses a 'collect' and 'from' clause together causes problem

Mark Proctor (JIRA) jira-events at lists.jboss.org
Sat Nov 10 23:35:44 EST 2007


    [ http://jira.jboss.com/jira/browse/JBRULES-1315?page=comments#action_12386955 ] 
            
Mark Proctor commented on JBRULES-1315:
---------------------------------------

This is bug. When you say add the same (modified) package, what is the modification you make? Is there any chance you could look at the DynamicRulesTest class and see how we make the integration tests and supply us a working integration test that we can add for this?

> 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