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

Michael Neale michael.neale at gmail.com
Fri Jan 12 08:19:59 EST 2007


Hi Joost. No problems re the names...

I just think its happening there as its the "extractor" generated class
causing it.

Any chance you can wrap this up as a unit testable unit so we can try it out
and see what/where the cast is happening?

Ta,

Michael
(PS I am offline all week, so don't feel ignored !)

On 1/12/07, Joost de Vries <drools at ziener.org> wrote:
>
> Hi Michael,
>
> The list is defined in terms of the superclass that both classes share.
> And the previous and next methods both have the superclass as the return
> type.
>
> So I'd expect
> PreventieveInsluitingsTitel(previous==secondPosition [...]
> to evaluate to
> <instance of superclass> == <instance of subclass>
> I'd expect this check to just fail when the objectreferences do not refer
> to the same object. Not to cause a classcastexception.
>
> But the exception is thrown in the consequence part of the rule during an
> invocation of modify( ).....
>
> So I'm not sure why this construction would be wrong and what would be the
> right way to do it.
>
> oh, by the way; sorry for the dutch classnames. That must make the problem
> harder to understand. In fact it's about convictions and the subclasses are
> types of convictions.
>
> regards,
>
> Joost
>
> 2007/1/12, Michael Neale <michael.neale at gmail.com>:
> >
> > In terms of your problem, it seems to be to do with:
> > PreventieveInsluitingsTitel(previous==secondPosition
> > the secondPosition is not a compatible class with previous?
> >
> > I don't have any specific thoughts on computing a sequence in rules,
> > unfortunately... maybe someone else does ? ;)
> >
> >
> >
> >
> > On 1/11/07, Joost de Vries < drools at ziener.org> wrote:
> >
> > > 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
> > >
> > >
> > > _______________________________________________
> > > rules-users mailing list
> > > rules-users at lists.jboss.org
> > > https://lists.jboss.org/mailman/listinfo/rules-users
> > >
> > >
> > >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
>
>
> --
> Joost de Vries
> 06 22375323
> werk:   joost.de.vries at ordina.nl
> privé:  joost at ziener.org
>
> --
> Joost de Vries
> 06 22375323
> werk:  joost.de.vries at ordina.nl
> privé:  joost at ziener.org
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070112/fd483a63/attachment.html 


More information about the rules-users mailing list