package com.sample; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderError; import org.drools.builder.KnowledgeBuilderErrors; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.drools.logger.KnowledgeRuntimeLogger; import org.drools.logger.KnowledgeRuntimeLoggerFactory; import org.drools.runtime.StatefulKnowledgeSession; /** * This is a sample class to launch a rule. */ public class DroolsTest { public static final void main(String[] args) { try { // load up the knowledge base KnowledgeBase kbase = readKnowledgeBase(); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); //KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test"); // go ! { Message message = new Message(); message.setMessage("Hello World"); message.setFoo("BAR"); message.setStatus(Message.HELLO); ksession.getWorkingMemoryEntryPoint("Stream1").insert(message); ksession.getWorkingMemoryEntryPoint("Stream2").insert(message); } { Message message = new Message(); message.setMessage("Hello World"); message.setFoo("BAS"); message.setStatus(Message.HELLO); ksession.getWorkingMemoryEntryPoint("Stream1").insert(message); ksession.getWorkingMemoryEntryPoint("Stream2").insert(message); } { Message message = new Message(); message.setMessage("Hello World"); message.setFoo("FOO"); message.setStatus(Message.HELLO); ksession.getWorkingMemoryEntryPoint("Stream1").insert(message); ksession.getWorkingMemoryEntryPoint("Stream2").insert(message); } ksession.fireAllRules(); //logger.close(); } catch (Throwable t) { t.printStackTrace(); } } private static KnowledgeBase readKnowledgeBase() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL); KnowledgeBuilderErrors errors = kbuilder.getErrors(); if (errors.size() > 0) { for (KnowledgeBuilderError error: errors) { System.err.println(error); } throw new IllegalArgumentException("Could not parse knowledge."); } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()); return kbase; } public static class Message { public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; private String foo; public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public int getStatus() { return this.status; } public void setStatus(int status) { this.status = status; } public String getFoo() { return foo; } public void setFoo(String foo) { this.foo = foo; } public String toString() { return "Message " + foo + ": " + message; } } }