[rules-users] Is 3.1 M1 backward compatible?

Edson Tirelli tirelli at post.com
Wed Feb 21 18:59:13 EST 2007


   Dandrea,

   It took me a bit longer, but it is fixed now:

http://jira.jboss.com/jira/browse/JBRULES-696

   It will be included in milestone 2, but if you want to try now, just 
checkout the code from trunk.

   Thank you for reporting.

     Edson

Edson Tirelli wrote:

>
>   Dandrea,
>
>   I see the problem.
>   I will investigate a bit and let you know in a couple hours.
>
>   Regards,
>    Edson
>
>  
>
> Dandrea Francesco wrote:
>
>> Yes, but I don't think that the cases below apply to my test.
>> All my facts have a default constructor and they doesn't use the 
>> final keyword.
>> The native data types are used in the LHS only  (boolean an integer 
>> types) in this way for example:
>>
>> $allarme : AllarmeMisura(aggregated==*false*, networkState=="Open")
>>
>> which i think is allowed (right?).
>> The base error is a class cast exception it seems:
>> __
>>
>> _java.lang.ClassCastException_: 
>> it.telecomitalia.netbox.AggregatedAlarmShadowProxy
>>
>> at 
>> org.drools.base.it.telecomitalia.netbox.AllarmeTf$getReferencedElement.getValue(Unknown 
>> Source)
>>
>> at 
>> org.drools.base.ClassFieldExtractor.getValue(_ClassFieldExtractor.java:79_) 
>>
>>
>> at org.drools.rule.Declaration.getValue(_Declaration.java:156_)
>>
>> at 
>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Predicate0Invoker.evaluate(_Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Predicate0Invoker.java:14_) 
>>
>>
>> at 
>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(_PredicateConstraint.java:190_) 
>>
>>
>>
>> AggregatedAlarm is the base class of AllarmeTf, and the LHS of the 
>> rule "Nuovo Allarme Misura No Allarme Oggetto" that gives an 
>> exception is this:
>>
>> $allarme : AllarmeMisura(aggregated==*false*, networkState=="Open")
>>
>> *not* AllarmeTf( $tfAllarme :referencedElement ->( 
>> $tfAllarme.equals($allarme.getReferencedElement().getReferencedTf())))
>>
>> To me it seem ok.....
>>  
>> Am I doing something wrong?
>>
>>  
>>
>>     
>> ------------------------------------------------------------------------
>>     *Da:* rules-users-bounces at lists.jboss.org
>>     [mailto:rules-users-bounces at lists.jboss.org] *Per conto di *Mark
>>     Proctor
>>     *Inviato:* mercoledì 21 febbraio 2007 15.41
>>     *A:* Rules Users List
>>     *Oggetto:* Re: [rules-users] Is 3.1 M1 backward compatible?
>>
>>     The syntax is backwards compatible. However as the release notes
>>     mention we no longer autobox primitives, as you can now work
>>     directly with them, which will cause issues in  old drls that
>>     assumed numbers are wrapped. Also pojos must have a default
>>     constructor and not use the final keyword at the class and method
>>     level - we are actively looking to add more flexability to this 
>> case.
>>
>>     Mark
>>     Dandrea Francesco wrote:
>>
>>> Hi all, the attached example runs ok (slow but ok) on JBoss Rules 3.0.5
>>> Now when I run it with 3.1M1 I have an exception (I pasted it at the 
>>> end
>>> of the mail).
>>> Is 3.1 M1 backward compatible? Is this a bug? Should I change the code
>>> in some way?
>>> Thanks a lot
>>>
>>> org.drools.RuntimeDroolsException: Exception executing predicate
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker at 60bd060e
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:196)
>>>
>>> at
>>> org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaC 
>>>
>>> onstraints.java:111)
>>>
>>> at org.drools.reteoo.NotNode.assertObject(NotNode.java:149)
>>>
>>> at
>>> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Compo 
>>>
>>> siteObjectSinkAdapter.java:313)
>>>
>>> at
>>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:163)
>>>
>>> at org.drools.reteoo.Rete.assertObject(Rete.java:121)
>>>
>>> at
>>> org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:196)
>>>
>>> at
>>> org.drools.reteoo.ReteooWorkingMemory.doAssertObject(ReteooWorkingMemory 
>>>
>>> .java:68)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemo 
>>>
>>> ry.java:724)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:72)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:66)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.c 
>>>
>>> onsequence(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.java:17)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Co 
>>>
>>> nsequenceInvoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0 
>>>
>>> ConsequenceInvoker.java:22)
>>>
>>> at
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:467)
>>>
>>> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:431)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:360)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:341)
>>>
>>> at
>>> it.telecomitalia.netbox.MainProvaClass.fireRuleEngineProva(MainProvaClas 
>>>
>>> s.java:85)
>>>
>>> at it.telecomitalia.netbox.MainProvaClass.main(MainProvaClass.java:23)
>>>
>>> Caused by: java.lang.ClassCastException:
>>> it.telecomitalia.netbox.AggregatedAlarmShadowProxy
>>>
>>> at
>>> org.drools.base.it.telecomitalia.netbox.AllarmeTf$getReferencedElement.g 
>>>
>>> etValue(Unknown Source)
>>>
>>> at
>>> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:79 
>>>
>>> )
>>>
>>> at org.drools.rule.Declaration.getValue(Declaration.java:156)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0P 
>>>
>>> redicate0Invoker.java:14)
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:190)
>>>
>>> ... 18 more
>>>
>>> org.drools.RuntimeDroolsException: Exception executing predicate
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker at 60bd060e
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:196)
>>>
>>> at
>>> org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaC 
>>>
>>> onstraints.java:111)
>>>
>>> at org.drools.reteoo.NotNode.assertObject(NotNode.java:149)
>>>
>>> at
>>> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Compo 
>>>
>>> siteObjectSinkAdapter.java:313)
>>>
>>> at
>>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:163)
>>>
>>> at org.drools.reteoo.Rete.assertObject(Rete.java:121)
>>>
>>> at
>>> org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:196)
>>>
>>> at
>>> org.drools.reteoo.ReteooWorkingMemory.doAssertObject(ReteooWorkingMemory 
>>>
>>> .java:68)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemo 
>>>
>>> ry.java:724)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:72)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:66)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.c 
>>>
>>> onsequence(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.java:17)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Co 
>>>
>>> nsequenceInvoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0 
>>>
>>> ConsequenceInvoker.java:22)
>>>
>>> at
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:467)
>>>
>>> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:431)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.doOtherwise(AbstractWorkingMemor 
>>>
>>> y.java:384)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:366)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:341)
>>>
>>> at
>>> it.telecomitalia.netbox.MainProvaClass.fireRuleEngineProva(MainProvaClas 
>>>
>>> s.java:85)
>>>
>>> at it.telecomitalia.netbox.MainProvaClass.main(MainProvaClass.java:23)
>>>
>>> Caused by: java.lang.ClassCastException:
>>> it.telecomitalia.netbox.AggregatedAlarmShadowProxy
>>>
>>> at
>>> org.drools.base.it.telecomitalia.netbox.AllarmeTf$getReferencedElement.g 
>>>
>>> etValue(Unknown Source)
>>>
>>> at
>>> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:79 
>>>
>>> )
>>>
>>> at org.drools.rule.Declaration.getValue(Declaration.java:156)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0P 
>>>
>>> redicate0Invoker.java:14)
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:190)
>>>
>>> ... 19 more
>>>
>>> org.drools.spi.ConsequenceException: org.drools.RuntimeDroolsException:
>>> Exception executing predicate
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker at 60bd060e
>>>
>>> at
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:471)
>>>
>>> at org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:431)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.doOtherwise(AbstractWorkingMemor 
>>>
>>> y.java:384)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:366)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemo 
>>>
>>> ry.java:341)
>>>
>>> at
>>> it.telecomitalia.netbox.MainProvaClass.fireRuleEngineProva(MainProvaClas 
>>>
>>> s.java:85)
>>>
>>> at it.telecomitalia.netbox.MainProvaClass.main(MainProvaClass.java:23)
>>>
>>> Caused by: org.drools.RuntimeDroolsException: Exception executing
>>> predicate
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker at 60bd060e
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:196)
>>>
>>> at
>>> org.drools.common.SingleBetaConstraints.isAllowedCachedRight(SingleBetaC 
>>>
>>> onstraints.java:111)
>>>
>>> at org.drools.reteoo.NotNode.assertObject(NotNode.java:149)
>>>
>>> at
>>> org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(Compo 
>>>
>>> siteObjectSinkAdapter.java:313)
>>>
>>> at
>>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:163)
>>>
>>> at org.drools.reteoo.Rete.assertObject(Rete.java:121)
>>>
>>> at
>>> org.drools.reteoo.ReteooRuleBase.assertObject(ReteooRuleBase.java:196)
>>>
>>> at
>>> org.drools.reteoo.ReteooWorkingMemory.doAssertObject(ReteooWorkingMemory 
>>>
>>> .java:68)
>>>
>>> at
>>> org.drools.common.AbstractWorkingMemory.assertObject(AbstractWorkingMemo 
>>>
>>> ry.java:724)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:72)
>>>
>>> at
>>> org.drools.base.DefaultKnowledgeHelper.assertObject(DefaultKnowledgeHelp 
>>>
>>> er.java:66)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.c 
>>>
>>> onsequence(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0.java:17)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Co 
>>>
>>> nsequenceInvoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0 
>>>
>>> ConsequenceInvoker.java:22)
>>>
>>> at
>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:467)
>>>
>>> ... 6 more
>>>
>>> Caused by: java.lang.ClassCastException:
>>> it.telecomitalia.netbox.AggregatedAlarmShadowProxy
>>>
>>> at
>>> org.drools.base.it.telecomitalia.netbox.AllarmeTf$getReferencedElement.g 
>>>
>>> etValue(Unknown Source)
>>>
>>> at
>>> org.drools.base.ClassFieldExtractor.getValue(ClassFieldExtractor.java:79 
>>>
>>> )
>>>
>>> at org.drools.rule.Declaration.getValue(Declaration.java:156)
>>>
>>> at
>>> it.telecomitalia.netbox.Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0Pr 
>>>
>>> edicate0Invoker.evaluate(Rule_Nuovo_Allarme_Misura_No_Allarme_Oggetto_0P 
>>>
>>> redicate0Invoker.java:14)
>>>
>>> at
>>> org.drools.rule.PredicateConstraint.isAllowedCachedRight(PredicateConstr 
>>>
>>> aint.java:190)
>>>
>>> ... 19 more
>>> --------------------------------------------------------------------
>>>
>>> CONFIDENTIALITY NOTICE
>>>
>>> This message and its attachments are addressed solely to the persons 
>>> above and may contain confidential information. If you have received 
>>> the message in error, be informed that any use of the content hereof 
>>> is prohibited. Please return it immediately to the sender and delete 
>>> the message. Should you have any questions, please contact us by 
>>> replying to webmaster at telecomitalia.it.
>>>
>>>        Thank you
>>>
>>>                                        www.telecomitalia.it
>>>
>>> --------------------------------------------------------------------
>>>                         
>>>
>>> ------------------------------------------------------------------------ 
>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>  
>>>
>>
>> --------------------------------------------------------------------
>> CONFIDENTIALITY NOTICE
>> This message and its attachments are addressed solely to the persons
>> above and may contain confidential information. If you have received
>> the message in error, be informed that any use of the content hereof
>> is prohibited. Please return it immediately to the sender and delete
>> the message. Should you have any questions, please contact us by
>> replying to webmaster at telecomitalia.it 
>> <mailto:webmaster at telecomitalia.it>.
>>         Thank you
>>                                         www.telecomitalia.it 
>> <http://www.telecomitalia.it>
>> --------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>  
>>
>
>


-- 
 Edson Tirelli
 Software Engineer - JBoss Rules Core Developer
 Office: +55 11 3124-6000
 Mobile: +55 11 9218-4151
 JBoss, a division of Red Hat @ www.jboss.com





More information about the rules-users mailing list