I've integrated Drools into my event-driven project recently. I'm using the following maven artifacts there: kie-internal, kie-api, drools-core, drools-compiler. All of them had a version 6.0.0.Beta3
Here's my code:
try {
KnowledgeBase kbase;
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("rules.drl"), ResourceType.DRL);
if (kbuilder.hasErrors()) {
System.out.println(kbuilder.getErrors().toString());
}
KieBaseConfiguration conf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
conf.setOption(EventProcessingOption.STREAM);
kbase = KnowledgeBaseFactory.newKnowledgeBase(conf);
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
KieSession ksession = kbase.newKieSession();
ksession.insert(new EventA());
ksession.fireAllRules();
Thread.sleep(8000);
ksession.destroy();
} catch (InterruptedException ex) {
System.err.println(ex.getMessage());
}
rules:
declare EventA
@role( event )
end
declare EventB
@role( event )
end
rule "Timeout EventA"
salience 500
when
$a : EventA()
not(EventB(this after[0,4s] $a))
then
System.out.println("Retracting EventA: " + $a);
retract($a);
end
The issue is that after I've updated drools dependencies to version 6.0.0.CR4 (latest) Timeout rule is not triggered anymore... Maybe I miss something or it's a bug?