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