Dirk Drools 5 is mostly backward compatible with Drools 4. You don't need to migrate to the new API, although it is recommended.
Anyway, I understand your concern. My wild wild guess is that the memberOf operator is complaining about a null in that constraint. If that is the case, it is a bug. I fixed some bugs like that in Drools 5 trunk: https://jira.jboss.org/jira/browse/JBRULES-2102 []s Edson 2009/6/24 Dirk Bergstrom <d...@juniper.net> > Edson Tirelli was heard to exclaim, On 06/24/09 06:14: > > The problem seems not related to shadow facts, but to constraint > > resolution and fact data extraction. It might be a bug or not... need > > more info. > > I've also seen the following stacktrace: > > java.lang.ArrayIndexOutOfBoundsException: 40440 > at > org.drools.util.TupleIndexHashTable.toArray(TupleIndexHashTable.java:217) > at org.drools.reteoo.CollectNode.retractObject(CollectNode.java:260) > at > > org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32) > at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164) > at > > org.drools.reteoo.SingleObjectSinkAdapter.propagateRetractObject(SingleObjectSinkAdapter.java:32) > at org.drools.reteoo.AlphaNode.retractObject(AlphaNode.java:164) > at > > org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:366) > at > org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189) > at org.drools.reteoo.Rete.retractObject(Rete.java:215) > at > org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211) > at > > org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79) > at > > org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:1023) > at > > org.drools.common.AbstractWorkingMemory.retract(AbstractWorkingMemory.java:982) > at > > net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:362) > > > In any case, the offending rule is not the one you showed. The > > offending rule contains a double beta constraint in a join: > > I know it's not in that rule. It must be in this one, since it's the only > one > that uses rli_nums: > > $npi : NPIRecord( ) > $pr : PRRecord( npi == "", rli != "" ) > $rli : RLIRecord( id memberOf $pr.rli_nums, npi_program == $npi.synopsis ) > > > Can you narrow it down? Did you tried with Drools 5.0.1? > > I haven't tried any of the 5.x series. Is there a guide to migrating my > code > from 4.0 to 5.0? I looked on the jboss site, the wiki, the blog, and this > mailing list, but I didn't find anything. I'm under a lot of time > pressure, and > changing to 5.0 doesn't look like a quick fix... > > > 2009/6/24 Dirk Bergstrom <d...@juniper.net <mailto:d...@juniper.net>> > > > > I'm running into an NPE using Drools 4.0.7, and I'm stumped by it > > (stacktrace > > below). I made some changes to seemingly unrelated code, and this > > error started > > showing up. It would help me to understand what's going on if > > someone could > > tell me roughly what's going on here. Since the error is thrown by > > generated > > code (in what I assume is a shadow proxy), I can't tell what the > > offending null > > pointer is. I'm not even entirely sure what's triggering the bug > > (it happens > > half an hour into the run of big multi-threaded application with > > about 40K > > objects in the working memory). > > > > Is this happening because: > > > > *) getRli_nums() in one of my PRRecord objects is returning a null > > value? > > > > *) There is a null PRRecord object backing the shadow proxy? > > > > *) Some other thing is null? > > > > *) I'm running into a bug in Drools? > > > > I stuck in this rule: > > > > when > > $pr : PRRecord( rli_nums == null ) > > then > > System.out.println($pr.getId()); > > end > > > > And it didn't print anything, so I'm inclined to think that this is > > not a simple > > matter of something returning a null value... > > > > I'll be most appreciative of any help I can get. > > > > Here's the stacktrace: > > > > java.lang.NullPointerException > > at > > > org.drools.base.net.juniper.dash.data.PRRecord13409648$getRli_nums.getValue(Unknown > > Source) > > at > > > org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:127) > > at > > > org.drools.base.evaluators.BaseMemberOfEvaluator.evaluateCachedRight(BaseMemberOfEvaluator.java:45) > > at > > > org.drools.rule.VariableRestriction.isAllowedCachedRight(VariableRestriction.java:89) > > at > > > org.drools.rule.VariableConstraint.isAllowedCachedRight(VariableConstraint.java:81) > > at > > > org.drools.common.DoubleBetaConstraints.isAllowedCachedRight(DoubleBetaConstraints.java:164) > > at org.drools.reteoo.JoinNode.retractObject(JoinNode.java:189) > > at > > > org.drools.reteoo.CompositeObjectSinkAdapter.propagateRetractObject(CompositeObjectSinkAdapter.java:375) > > at > > > org.drools.reteoo.ObjectTypeNode.retractObject(ObjectTypeNode.java:189) > > at org.drools.reteoo.Rete.retractObject(Rete.java:215) > > at > > > org.drools.reteoo.ReteooRuleBase.retractObject(ReteooRuleBase.java:211) > > at > > > org.drools.reteoo.ReteooWorkingMemory.doRetract(ReteooWorkingMemory.java:79) > > at > > > org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1250) > > at > > > org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:1203) > > at > > > net.juniper.dash.data.DataSource.reconcileAssertedRecords(DataSource.java:409) > > > -- > Dirk Bergstrom d...@juniper.net > _____________________________________________ > Juniper Networks Inc., Computer Geek > Tel: 408.745.3182 Fax: 408.745.8905 > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > -- Edson Tirelli JBoss Drools Core Development JBoss by Red Hat @ www.jboss.com
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users