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