<span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; background-color: rgb(245, 245, 245); "><br><span class="hps">I added</span> <span class="hps">all</span> <span class="hps">necessary</span> <span class="hps">jar</span> <span class="hps">in the classpath.</span><br>
<span class="hps">Here is an</span> <span class="hps">excerpt from my</span> <span class="hps">code:</span></span><div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; background-color: rgb(245, 245, 245); "><span class="hps">Just</span> <span class="hps">for information</span> <span class="hps">I am</span> <span class="hps">beginner</span> <span class="hps">in</span> <span class="hps">BRMS</span></span></div>
<div><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; background-color: rgb(245, 245, 245); "><span class="hps"><br></span></span></div><div><span class="Apple-style-span" style="background-color: rgb(245, 245, 245); "><span class="hps"><div>
<font class="Apple-style-span" color="#333333" face="arial, sans-serif">/**</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"> * </font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"> */</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">package fr.dto;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import java.io.*;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import javax.swing.Box.Filler;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.apache.commons.io.FileUtils;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.RuleBase;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.RuleBaseFactory;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.WorkingMemory;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.brms.server.util.BRDRLPersistence;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.brms.server.util.BRXMLPersistence;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.compiler.PackageBuilder;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.event.DebugWorkingMemoryEventListener;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">import org.drools.rule.Package;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">/**</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"> * @author mazzaz</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"> * </font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"> */</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">public class RulesEngine {</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>private RuleBase rules;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">    private Reader source;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>private boolean debug = false;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>public RulesEngine(String rulesFile) throws RulesEngineException {</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>super();</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>try {</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                </span>try</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                </span>{</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>File file = null;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>String brl =null;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>file = new File(rulesFile);</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>BRXMLPersistence read = (BRXMLPersistence) BRXMLPersistence.getInstance();</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>            BRDRLPersistence write = (BRDRLPersistence) BRDRLPersistence.getInstance();</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>System.out.println(&quot;read &amp;&amp; write instance ok \n&quot;);</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>brl = FileUtils.readFileToString(file,&quot;UTF-8&quot;);</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>System.out.println(&quot;le fichier contient&quot;+ brl);</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>String outputDRL = write.marshal(read.unmarshal(brl));// code blocked here</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>String drlFilePath = &quot;src/main/rules/Test_brl_to_drl.drl&quot;;</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                </span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>File drlFile = new File(drlFilePath);</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>FileUtils.writeStringToFile(drlFile,outputDRL,&quot;&quot;);</font></div>
</span></span><span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: arial, sans-serif; background-color: rgb(245, 245, 245); "><span class="Apple-tab-span" style="white-space:pre">        </span>                         source = new InputStreamReader(RulesEngine.class</span><span class="Apple-style-span" style="background-color: rgb(245, 245, 245); "><span class="hps"><div>
<font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                                </span>.getResourceAsStream(drlFilePath));</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                </span>}catch (IOException ie){</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>System.out.println(&quot;ie.getCause(): &quot;+ie.getCause()</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                                        </span>+&quot;\n&quot;+&quot;ie.getMessage(): &quot;+ie.getMessage());</font></div><div>
<font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                </span>}</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br>
</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>PackageBuilder builder = new PackageBuilder();</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>builder.addPackageFromDrl(source);</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>Package pkg = builder.getPackage();</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>rules = RuleBaseFactory.newRuleBase();</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>rules.addPackage(pkg);</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br>
</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>} catch (Exception e) {</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>throw new RulesEngineException(</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>&quot;Impossible de Compiler le fichier de regles : &quot;</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                                        </span>+ rulesFile, e);</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div>
<div><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" color="#333333" face="arial, sans-serif">        </font></span></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>public void executeRules(WorkingEnvironmentCallback callback) {</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>/*</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> * L’instanciation de la class workingMemory permet de determiner si</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> * toute si toute les conditions d’une regle sont remplies alors les</font></div><div>
<font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> * consequences de cette regles sont executées</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> */</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>WorkingMemory workingMemory = rules.newStatefulSession();</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>if (debug) {</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                        </span>workingMemory</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                        </span>.addEventListener(new DebugWorkingMemoryEventListener());</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>}</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>callback.initEnvironment(workingMemory);// initEnvironment methode de</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                                                                                                </span>// l&#39;interface</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>/*</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> * L’execution des conséquences d’une regle se produit lorsqu’on invoque</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> * l’objet fireAllRules WorkingMemory</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span> */</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">                </span>workingMemory.fireAllRules();</font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><span class="Apple-tab-span" style="white-space:pre">        </span>}</font></div>
<div><font class="Apple-style-span" color="#333333" face="arial, sans-serif"><br></font></div><div><font class="Apple-style-span" color="#333333" face="arial, sans-serif">}</font></div><div style="color: rgb(51, 51, 51); font-family: arial, sans-serif; ">
<br></div></span></span></div>