[rules-users] unable to determine operator for symbol [before]

vladimiro vladimiro.corsi at email.it
Thu Nov 26 09:47:50 EST 2009


Hi all,
    I'm building a KnowledgeBase with KnowledgeAgent and a precompiled 
rule package. When the package contains a rule using temporal operators 
such "after" or "before" I get the exception listed at the end of this 
message.

I'm using the latest version of drools 5 and my runtime configuration 
includes the following libraries:
* drools-core - the rule engine itself.
* drools-api
* mvel2-2.0.10
* joda-time-1.6

the rule causing such a behaviour is:

rule 'Test2'
dialect 'mvel'

    when
        u1:UserType( firstName=="UserA" )
        lie:UserEventType( event=="Login", user.id==u1.id)
        loe:UserEventType(event=="Logout", user.id==u1.id, this before lie)
         
    then
        Message msg = new Message();msg.setText("Test2 
fired");driver.getMessages().add(msg);

end


java.lang.RuntimeException: KnowledgeAgent exception while trying to 
deserialize KnowledgeDefinitionsPackage 
    at 
org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:418)
    at 
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:120)
    at 
org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:109)
    at 
info.vladimiro.tesi.peservice.KnowledgeBaseService.<init>(KnowledgeBaseService.java:94)
    at 
info.vladimiro.tesi.peservice.KnowledgeBaseService.getInstance(KnowledgeBaseService.java:65)
    at 
info.vladimiro.tesi.peservice.PEListener$KBTask.run(PEListener.java:35)
    at java.util.TimerThread.mainLoop(Timer.java:512)
    at java.util.TimerThread.run(Timer.java:462)
Caused by: org.drools.RuntimeDroolsException: unable to determine 
operator for symbol [before]
    at 
org.drools.base.evaluators.Operator.determineOperator(Operator.java:71)
    at org.drools.base.evaluators.Operator.readResolve(Operator.java:106)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at 
java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1033)
    at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1728)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
    at org.drools.base.BaseEvaluator.readExternal(BaseEvaluator.java:53)
    at ...
Can someone help? Thanks in advance.
Vladimiro Corsi




More information about the rules-users mailing list