Hi,<br><br>I'm new to jBoss Rules and I'm hitting a few snags. I appreciate your insight.<br><br>Among other things I want to use business rules to compute the right sequence of actions that conforms to legal business rules.
<br>The only way I could think of to implement this using rules is to use rewriting production rules similar to:<br>input: ACCAAAC<br>rule: CA -> AC<br><br>My first question is: what other ways are there to compute a sequence that conforms to sequencing business rules?
<br><br>My second question concerns the nullpointerexceptions and classcastexceptions I'm encountering in my rules.<br>I've got a sequence of C's who are either B's or A's. I.e. C is the common superclass. This superclass has the methods:
<br><br>public C getPrevious();<br>public C getNext();<br><br>Actually it's in dutch so it's<br><br>public class Straf extends InsluitingsTitel {}<br>and<br>public class PreventieveInsluitingsTitel extends InsluitingsTitel {}
<br>and <br>public abstract class InsluitingsTitel{<br>public C getPrevious();<br>
public C getNext();<br>
}<br><br>The rule is as follows:<br><br>rule "WSV 68.1"<br> when<br> // any PreventieveInsluitingsTitel should precede all Straf<br> secondPosition: Straf ( firstPosition: previous ) <br> thirdPosition: PreventieveInsluitingsTitel(previous==secondPosition, fourthPosition:next)
<br> then<br> System.out.println( "switching wsv 68.1 "+secondPosition+" "+thirdPosition); <br> thirdPosition.switchWithPrevious();<br> if(firstPosition!=null){<br>
modify(firstPosition);<br>
}<br>
modify( secondPosition);<br> modify( thirdPosition); <br> if(fourthPosition!=null){<br> //in the next statement a classcastexception is thrown<br> modify(fourthPosition); <br> }
<br>end <br><br>results in a classcastexception. The sequence is at that moment { Straf, Straf, PreventieveInsluitingsTitel, Straf } and the middle two items are matched by the LHS secondPosition and thirdPosition.<br><br>
Here's the stacktrace.<br><br>java.lang.ClassCastException: org.dji.domein.insgro.Straf<br> at org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getPrevious.getValue(Unknown Source)<br> at org.drools.base.ClassFieldExtractor.getValue
(Unknown Source)<br> at org.drools.rule.Declaration.getValue(Unknown Source)<br> at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate(Rule_WSV_68_1_0ConsequenceInvoker.java:22)<br> at org.drools.common.DefaultAgenda.fireActivation
(Unknown Source)<br> at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)<br> at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)<br> at org.drools.common.AbstractWorkingMemory.fireAllRules
(Unknown Source)<br> at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)<br>org.drools.spi.ConsequenceException: java.lang.ClassCastException: org.dji.domein.insgro.Straf<br> at org.drools.common.DefaultAgenda.fireActivation
(Unknown Source)<br> at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)<br> at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)<br> at org.drools.common.AbstractWorkingMemory.fireAllRules
(Unknown Source)<br> at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)<br>Caused by: java.lang.ClassCastException: org.dji.domein.insgro.Straf<br> at org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getNext.getValue
(Unknown Source)<br> at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)<br> at org.drools.rule.Declaration.getValue(Unknown Source)<br> at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
<br> ... 5 more<br clear="all"><br>Thanks in advance for your insight.<br><br>Regards,<br><br>-- <br>Joost de Vries<br><br>