I am unable to match a definstance pattern within a module when using the JSR94 RI.

 

Given the following JSR94 rules file:

 

<rule-execution-set>

  <name>Rules</name>

  <description>Description</description>

  <code>

 

    (defclass example.AClass example.AClass nil)

 

    (defrule do-startup

    =>

    (bind ?i1 (new example.AClass))

    (definstance example.AClass ?i1 static)

    (assert (doit)))

 

    (defmodule stuff)

                       

    (defrule do-stuff

    (declare (auto-focus TRUE))

    ?f1 &lt;- (example.AClass (OBJECT ?i1&amp;:(eq nil (get ?i1 field1))))

    =>

    (modify ?f1 (field1 "success")))

 

    (defrule do-it

    (declare (auto-focus TRUE))

    (doit)

    =>

    (bind ?i1 (new example.AClass))

    (modify (definstance example.AClass ?i1 static) (field1 "doit")))

 

  </code>

</rule-execution-set>

 

and simple class:

 

package example;

public class AClass {

    private String field1;

    public String getField1() {

        return field1;

    }

    public void setField1(String field1) {

        this.field1 = field1;

    }

    public String toString() {

        return field1;

    }

}

 

 

executing within a STATELESS_SESSION_TYPE session causes the do-it rule, but not the do-stuff rule, to fire.  Yet, when run as a JESS batch file, both these rules fire.

 

Reply via email to