[rules-users] sequencing by business logic/ classcastexception in consequence

Joost de Vries drools at ziener.org
Thu Jan 11 08:11:10 EST 2007


Hi,

I'm new to jBoss Rules and I'm hitting a few snags. I appreciate your
insight.

Among other things I want to use business rules to compute the right
sequence of actions that conforms to legal business rules.
The only way I could think of to implement this using rules is to use
rewriting production rules similar to:
input: ACCAAAC
rule:  CA -> AC

My first question is: what other ways are there to compute a sequence that
conforms to sequencing business rules?

My second question concerns the nullpointerexceptions and
classcastexceptions I'm encountering in my rules.
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:

public C getPrevious();
public C getNext();

Actually it's in dutch so it's

public class Straf extends InsluitingsTitel {}
and
public class PreventieveInsluitingsTitel extends InsluitingsTitel {}
and
public abstract class InsluitingsTitel{
public C getPrevious();
public C getNext();
}

The rule is as follows:

rule "WSV 68.1"
    when
        // any PreventieveInsluitingsTitel should precede all Straf
        secondPosition: Straf ( firstPosition: previous )
        thirdPosition: PreventieveInsluitingsTitel(previous==secondPosition,
fourthPosition:next)
    then
        System.out.println( "switching wsv 68.1 "+secondPosition+"
"+thirdPosition);
        thirdPosition.switchWithPrevious();
        if(firstPosition!=null){
            modify(firstPosition);
        }
        modify( secondPosition);
        modify( thirdPosition);
        if(fourthPosition!=null){
            //in the next statement a classcastexception is thrown
            modify(fourthPosition);
        }
end

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.

Here's the stacktrace.

java.lang.ClassCastException: org.dji.domein.insgro.Straf
    at
org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getPrevious.getValue(Unknown
Source)
    at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
    at org.drools.rule.Declaration.getValue(Unknown Source)
    at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
    at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
    at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
    at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
    at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
    at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
org.drools.spi.ConsequenceException: java.lang.ClassCastException:
org.dji.domein.insgro.Straf
    at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
    at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
    at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
    at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown Source)
    at org.dji.domein.insgro.VolgordeTest.main(VolgordeTest.java:32)
Caused by: java.lang.ClassCastException: org.dji.domein.insgro.Straf
    at
org.drools.base.org.dji.domein.insgro.PreventieveInsluitingsTitel$getNext.getValue(Unknown
Source)
    at org.drools.base.ClassFieldExtractor.getValue(Unknown Source)
    at org.drools.rule.Declaration.getValue(Unknown Source)
    at com.sample.Rule_WSV_68_1_0ConsequenceInvoker.evaluate
(Rule_WSV_68_1_0ConsequenceInvoker.java:22)
    ... 5 more

Thanks in advance for your insight.

Regards,

-- 
Joost de Vries
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070111/af794f4c/attachment.html 


More information about the rules-users mailing list