In terms of your problem, it seems to be to do with:<br>PreventieveInsluitingsTitel<div id="mb_0">(previous==secondPosition<br>the secondPosition is not a compatible class with previous?<br><br>I don't have any specific thoughts on computing a sequence in rules, unfortunately... maybe someone else does ? ;)
<br><br><br></div><br><br><div><span class="gmail_quote">On 1/11/07, <b class="gmail_sendername">Joost de Vries</b> <<a href="mailto:drools@ziener.org">drools@ziener.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
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><span class="sg">Joost de Vries<br><br>
</span><br>_______________________________________________<br>rules-users mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a>
<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br><br><br></blockquote></div>
<br>