I have a decision table with one CONDITION column. My fact could match multiple rules (rows) of the decision table. With each match, the 'ACTION' cause the fact itself to change. I'm using 'modify' as follows to change my fact:

 

modify ($line) { addItem( new Item("DISCOUNT","25%")); }

 

(essentially I need to add a item to a line when ever the LHS matches).

 

This works fine when I use a DRL. But when I try to use a decsion table, I get 'java.util.ConcurrentModificationException' the second time my fact matches a rule.

 

Does anyone know if we can modify facts from decision tables ? All the examples I've seen so far don't show how decision tables handle updating of facts.

 

Here’s the stack trace I get :

 

org.drools.runtime.rule.ConsequenceException: java.util.ConcurrentModificationException

            at org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)

            at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:943)

            at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:885)

            at org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1082)

            at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:682)

            at org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:649)

            at org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:177)

            at com.sample.DecisionTableTest.main(DecisionTableTest.java:31)

Caused by: java.util.ConcurrentModificationException

            at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)

            at java.util.AbstractList$Itr.next(AbstractList.java:343)

            at com.sample.Line.addPromotion(Line.java:46)

            at com.lazboy.promotions.Rule_Group_Promotion_14_0.consequence(Rule_Group_Promotion_14_0.java:7)

            at com.lazboy.promotions.Rule_Group_Promotion_14_0ConsequenceInvoker.evaluate(Rule_Group_Promotion_14_0ConsequenceInvoker.java:22)

            at org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:934)

            ... 6 more

 

I’m using Drools Expert 5.0.1.

 

Thanks

Gurvinder