[jboss-jira] [JBoss JIRA] (JBRULES-3145) Types declared in DRL with no fields are not included in KnowledgeBase compiled by ChangeSet

RH Bugzilla Integration (JIRA) jira-events at lists.jboss.org
Wed Apr 11 16:50:48 EDT 2012


    [ https://issues.jboss.org/browse/JBRULES-3145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12683167#comment-12683167 ] 

RH Bugzilla Integration commented on JBRULES-3145:
--------------------------------------------------

Alessandro Lazarotti <alazarot at redhat.com> made a comment on [bug 811745|https://bugzilla.redhat.com/show_bug.cgi?id=811745]

Packages compiled by BRM (Guvnor) ignore Event types, so if a rule uses sliding window a NPE is throwed:
h
java.lang.NullPointerException
at org.drools.reteoo.ReteooFactHandleFactory.newFactHandle(ReteooFactHandleFactory.java:56)
at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:80)
at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:65)
at org.drools.common.NamedEntryPoint.createHandle(NamedEntryPoint.java:705)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:282)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864)
at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)
at john.DroolsError.runRules(DroolsError.java:48)
at john.DroolsError.main(DroolsError.java:40) 

Packages compiled by BRM (Guvnor) ignore Event types, so if a rule uses sliding window a NPE is throwed:

java.lang.NullPointerException
at org.drools.reteoo.ReteooFactHandleFactory.newFactHandle(ReteooFactHandleFactory.java:56)
at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:80)
at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:65)
at org.drools.common.NamedEntryPoint.createHandle(NamedEntryPoint.java:705)
at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:282)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864)
at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255)
at john.DroolsError.runRules(DroolsError.java:48)
at john.DroolsError.main(DroolsError.java:40) 

That does not happen if used KnowledgeBuilder and a regular drl file instead of KnowledgeAgent + package binaries from Guvnor.
It can be checked by test scenarios as well. Attached here a repository that reproduces this issue, there is a test scenario in the package "cep" which simulate this situation.
                
> Types declared in DRL with no fields are not included in KnowledgeBase compiled by ChangeSet
> --------------------------------------------------------------------------------------------
>
>                 Key: JBRULES-3145
>                 URL: https://issues.jboss.org/browse/JBRULES-3145
>             Project: Drools
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions: 5.2.0.Final
>         Environment: Drools 5.2.0 Final, Guvnor 5.2.0 Final
>            Reporter: John Fullard
>            Assignee: Edson Tirelli
>             Fix For: 5.3.0.Final
>
>         Attachments: new_repository_export.zip
>
>
> Setting up KnowledgeBase using KnowledgeAgent which is pulling package from Guvnor.  DRL declares type, which already exists in client model, with @role(event) and no fields.  Get the following stack trace when inserting an object:
> java.lang.NullPointerException 
>         at org.drools.reteoo.ReteooFactHandleFactory.newFactHandle(ReteooFactHandleFactory.java:56) 
>         at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:80) 
>         at org.drools.common.AbstractFactHandleFactory.newFactHandle(AbstractFactHandleFactory.java:65) 
>         at org.drools.common.NamedEntryPoint.createHandle(NamedEntryPoint.java:705) 
>         at org.drools.common.NamedEntryPoint.insert(NamedEntryPoint.java:282) 
>         at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:905) 
>         at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:864) 
>         at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:255) 
>         at john.DroolsError.runRules(DroolsError.java:48) 
>         at john.DroolsError.main(DroolsError.java:40) 
> If the type is fully declared in the DRL, the NPE does not occur.
> When compiling a DRL from a Change Set, the resulting package in the Knowledge Base does not contain declare'd types that do not contain fields; it only contains declares with at least one field. This results in a ClassObjectTypeConf with a typeDecl == null.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list