Drools rules in my project are not firing. I have checked official documentation and tutorials (not only official ones) and found nothing.
This is my rule:
package iwium.rules
import iwium.*;
rule "One"
when
$var : State();
then
$var.setName("fired!");
System.out.println("fired!");
end
and this is how I complie rules and fire them:
public void run()
{
createKnowledgeBase();
//I do need to use it in infinite loop
while (true)
{
kSession = kBase.newStatefulKnowledgeSession();
State state = new State();
kSession.insert(state);
kSession.fireAllRules();
//to check if rule fired
for (Object o: kSession.getObjects()) {
if(o instanceof State) {
State rs = (State) o;
if(rs.getName().length() > 1)
System.out.println("done");
}
}
kSession.dispose();
}
}
private void createKnowledgeBase()
{
this.kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
this.kBuilder.add(ResourceFactory.newClassPathResource(RULES_FILE), ResourceType.DRL);
if (kBuilder.hasErrors())
{
System.err.println(kBuilder.getErrors().toString());
}
kBase = KnowledgeBaseFactory.newKnowledgeBase();
kBase.addKnowledgePackages(kBuilder.getKnowledgePackages());
}
Output is empty.
I have also checked in debugger that rules are compiled properly.
Does anyone know what could be the problem here? Why this rule is not firing?