Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-2871

KnowledgeAgent: unable to determine operator for symbol [after]

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • 6.0.0.Alpha1
    • 5.1.1.FINAL
    • drools-core
    • None

      When loading a knowledge base via a KnowledgeAgent, only the operators defined in org.drools.base.evaluators.Operator (== != >= < <= <) are supported. When loading the same knowledge base via a KnowledgeBuilder, all operators are supported.

      Upon loading a knowledge base that contains another operator (e.g. "after", "before"), the following error is printed:

      [2011:01:19 14:01:44:exception]
      java.lang.RuntimeException: KnowledgeAgent exception while trying to deserialize KnowledgeDefinitionsPackage
      at org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:674)
      at org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:899)
      ...
      Caused by: org.drools.RuntimeDroolsException: unable to determine operator for symbol [after]
      at org.drools.base.evaluators.Operator.determineOperator(Operator.java:87)
      at org.drools.base.evaluators.Operator.readResolve(Operator.java:122)

      Using Eclipse's debugging feature, I have determined that KnowledgeBuilder loads the rest of the operators through EvaluatorRegistry, while KnowledgeAgent does nothing to load any operators into org.drools.base.evaluators.Operator. I have tried modifying KnowledgeAgent by adding the code below to the constructor of KnowledgeAgentImpl. This resolves the problem: with this addition, the knowledge base with "after"-operator works as intended when loaded via a KnowledgeAgent.

      // Load all of Drools' default evaluators instead of just the ones defined
      // in org.drools.base.evaluators.Operator
      new EvaluatorRegistry();

            esteban.aliverti@gmail.com Esteban Aliverti (Inactive)
            odegroot Oscar de Groot (Inactive)
            Archiver:
            rhn-support-ceverson Clark Everson

              Created:
              Updated:
              Archived: