no problem. shall I mail it to you?
2007/1/12, Michael Neale <michael.neale(a)gmail.com>:
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(a)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(a)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(a)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(a)lists.jboss.org
> > >
https://lists.jboss.org/mailman/listinfo/rules-users
> > >
> > >
> > >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
>
>
> --
> Joost de Vries
> 06 22375323
> werk: joost.de.vries(a)ordina.nl
> privé: joost(a)ziener.org
>
> --
> Joost de Vries
> 06 22375323
> werk: joost.de.vries(a)ordina.nl
> privé: joost(a)ziener.org
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org
--
Joost de Vries
06 22375323
werk: joost.de.vries(a)ordina.nl
privé: joost(a)ziener.org