[rules-users] drools 4.0 compilation
Mark Proctor
mproctor at codehaus.org
Thu Aug 2 05:02:57 EDT 2007
While drools 2.x was limited to XML, 4.0 preference is for the DRL,
which is a none xml format. It doesn't produce a jar at the moment just
a binary Packaage instance, which you can serialise.
Mark
fuadhamidov wrote:
> hi,
>
> i developed my project using drools 2.5. now i want to upgrade to drools
> 4.0. in my project i
>
> (1) create xml file,
> (2) compile xml file & get jar file,
> (3) save jar file
> (4) and load jar file when i need to run rules
>
> i was able to upgrade xml file to drools 4.0 xml format, but i can not do
> necessary modification in code to compile xml and get "jar or any reloadable
> file".
> There is my code that is developed for drools 2.5. Can you help me to
> upgrade it for drools 4.0?
>
>
>
>
> void compile() throws Exception {
> // read xml file, returns data in xml format
> String rulecontent = readRuleFromFile();
> byte[] bytes = null;
>
> // codes for drools 2.5. i want to develop corresponding code for 4
> statement bellow that runs with drools 4.0
> // RuleSetReader reader = new RuleSetReader();
> // RuleSet ruleSet = reader.read(new BufferedReader(new
> StringReader(rulecontent)));
> // RuleSetCompiler compiler = new RuleSetCompiler(ruleSet, "com.sample",
> "knowledgeHelper");
> // bytes = compiler.getBinaryDeploymentJar();
>
> // some codes for drools 4.0, but it is not finilized
> PackageBuilder builder = new PackageBuilder();
> builder.addPackageFromXml(new BufferedReader(new
> StringReader(rulecontent)));
> Package pkg = builder.getPackage();
> //... and then what? how do it get bytecode from package?
> //may be 3 statements are not necessary for compilation
>
> // save to disk as a jar file
> writeRuleToJar(bytes);
> }
>
>
> void runrule(Object usg) throws Exception {
> // runs both, drools 2.5 and drools 4.0
> ConflictResolver[] conflictResolvers = new ConflictResolver[] {
> SalienceConflictResolver.getInstance(),
> ComplexityConflictResolver.getInstance(),
> FifoConflictResolver.getInstance() };
> CompositeConflictResolver compositeConflictResolver = new
> CompositeConflictResolver(conflictResolvers);
> byte[] bytecode = readRuleFromJar();
>
> // i can not develope this part also
> // RuleBaseLoader loader = new RuleBaseLoader(compositeConflictResolver);
> // loader.addFromByteArray(bytecode);
> // RuleBase ruleBase = loader.buildRuleBase();
>
> // modification in code for drools 4.0
> // WorkingMemory workingMemory = ruleBase.newWorkingMemory();
> WorkingMemory workingMemory = ruleBase.newStatefulSession();
> // workingMemory.assertObject(usg);
> workingMemory.insert(usg);
> workingMemory.fireAllRules();
> }
>
More information about the rules-users
mailing list