I am discovering jboss rules (drools 4.0.7). I try to reproduce the example 'State' of drools.
The drools version works fine.
But in my version, the rules are not fired and I do not understand why .... It is so basic I do not see where my mistake is. Please help
the rule
package examples.statemachine import com.corp.drools.examples.statemachine.State; rule Bootstrap when a : State(name == "A" ) then System.out.println(a.getName() + " finished" ); a.setState( State.STATE_FINISHED ); end
public static final Integer STATE_NOTRUN = new Integer(0);
public static final Integer STATE_FINISHED = new Integer(1);
public State(final String name) {
this.name = name;
this.state = State.STATE_NOTRUN;
}
private String name;
private Integer state;
// ... getter, setter
public void test2() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl(new InputStreamReader(
this.getClass().getClassLoader().getResourceAsStream("examples/statemachine/rules.drl")));
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage(builder.getPackage());
StatefulSession session = ruleBase.newStatefulSession();
WorkingMemoryConsoleLogger logger = new WorkingMemoryConsoleLogger(session);
State[] objects = new State[] { new State("A") };
session.insert(objects[0]);
session.fireAllRules();
session.dispose();
Assert.assertEquals(State.STATE_FINISHED, objects[0].getState());
}
OBJECT ASSERTED value:A-0 factId: 1