package org.drools.examples; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.Reader; import org.drools.RuleBase; import org.drools.RuleBaseFactory; import org.drools.StatefulSession; import org.drools.audit.WorkingMemoryFileLogger; import org.drools.compiler.PackageBuilder; import org.drools.event.DebugAgendaEventListener; import org.drools.event.DebugWorkingMemoryEventListener; import org.drools.rule.Package; /** * This is a sample file to launch a rule package from a rule source file. */ public class HelloWorldExample { public static final void main(final String[] args) throws Exception { //read in the source final Reader source = new InputStreamReader(new FileInputStream("Str.drl")); final PackageBuilder builder = new PackageBuilder(); //this wil parse and compile in one step builder.addPackageFromDrl(source); // Check the builder for errors if (builder.hasErrors()) { System.out.println(builder.getErrors().toString()); throw new RuntimeException("Unable to compile \"HelloWorld.drl\"."); } //get the compiled package (which is serializable) final Package pkg = builder.getPackage(); //add the package to a rulebase (deploy the rule package). final RuleBase ruleBase = RuleBaseFactory.newRuleBase(); ruleBase.addPackage(pkg); final StatefulSession session = ruleBase.newStatefulSession(); session.addEventListener(new DebugAgendaEventListener()); session.addEventListener(new DebugWorkingMemoryEventListener()); final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(session); logger.setFileName("log/helloworld"); final Message message = new Message(); message.setMessage("Hello World"); message.setStatus(Message.HELLO); first x = new first(); x.setMsg("Hello World"); second y = new second(); y.setFir(x); message.setSec(y); session.insert(message); session.fireAllRules(); // logger.writeToDisk(); session.dispose(); } public static class first { private String msg; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } public static class second { private first fir; public first getFir() { return fir; } public void setFir(first fir) { this.fir = fir; } } public static class Message { public static final int HELLO = 0; public static final int GOODBYE = 1; private String message; private int status; private second sec; public Message() { } public String getMessage() { return this.message; } public void setMessage(final String message) { this.message = message; } public int getStatus() { return this.status; } public void setStatus(final int status) { this.status = status; } public second getSec() { return sec; } public void setSec(second sec) { this.sec = sec; } } }