/*** HelloWorldExample.java Created On 2007, Oct 15, 2007 6:54:02 PM @author E. Rajasekar **/ package app.astrosoft.xps; 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.common.DefaultAgenda; import org.drools.compiler.PackageBuilder; import org.drools.compiler.PackageBuilderConfiguration; import org.drools.event.DebugAgendaEventListener; import org.drools.event.DebugWorkingMemoryEventListener; import org.drools.event.DefaultAgendaEventListener; import org.drools.event.DefaultWorkingMemoryEventListener; import org.drools.rule.Package; import org.drools.rule.builder.dialect.java.JavaDialectConfiguration; import app.astrosoft.consts.Planet; import app.astrosoft.xps.beans.PlanetLocation; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumMap; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties;; /** * 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( HelloWorldExample.class.getResourceAsStream( "/resources/rules/test.drl" ) ); Properties properties = new Properties(); properties.setProperty( "drools.dialect.java.languageLevel", "1.5" ); PackageBuilderConfiguration cfg = new PackageBuilderConfiguration( properties ); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" ); System.out.println(javaConf.getJavaLanguageLevel()); final PackageBuilder builder = new PackageBuilder(cfg); //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( "C:/Astrosoft/helloworld" ); /*final Message message = new Message(); message.setMessage( "Hello World" ); message.setStatus( Message.STATUSVALS.HELLO ); session.insert( message );*/ List<String> l = new ArrayList<String>(); l.add("a"); l.add("b"); l.add("c"); session.insert(l); session.insert(Planet.Sun); /*Map<Planet, Integer> m = new EnumMap<Planet, Integer>(Planet.class); Map<Planet,Integer> m = new HashMap<Planet,Integer>(); m.put(Planet.Sun, 1); m.put(Planet.Moon, 2); m.put(Planet.Mars, 3); session.insert(m);*/ PlanetLocation p1 = new PlanetLocation(Planet.Sun, 1); PlanetLocation p2 = new PlanetLocation(Planet.Moon, 2); PlanetLocation p3 = new PlanetLocation(Planet.Mars, 3); session.insert(p1); session.insert(p2); session.insert(p3); session.fireAllRules(); logger.writeToDisk(); session.dispose(); } public static class Message { //public static final int HELLO = 0; //public static final int GOODBYE = 1; public static enum STATUSVALS {HELLO,GOODBYE}; private String message; private STATUSVALS status; public Message() { } public String getMessage() { return this.message; } public void setMessage(final String message) { this.message = message; } public STATUSVALS getStatus() { return this.status; } public void setStatus(final STATUSVALS status) { this.status = status; } @Override public String toString() { return "[ " + message + " , " + status + " ]"; } } }