The rule agent is a Peer to Peer component for runtime deployment of rules/packages/rulebases (well,thats the vision).<br>In practical terms, its a component you use in any system that requires rules (and the BRMS/IDE can also use it to deploy).
<br>There will be a deployment descriptor where you declare what rulebases are (by name) which you then access in code (one line of code), and how the rulebase is obtained/updated.<br><br>Looking at some ideas for deployment config (using file, URI and JGroups respectively):
<br><br><br>&lt;ruleBaseConfig&gt;<br>&nbsp;&nbsp;&nbsp; &lt;cache dir=&quot;..dir for cold start /&gt;<br>&nbsp;&nbsp;&nbsp; &lt;ruleBase name=&quot;myRulebaseFromDir&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;pkg1&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;
foo.bar.pkg&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;directorySource dir=&quot;&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;poll minutes=&quot;10&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/directorySource&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ruleBase&gt;<br><br>&nbsp;&nbsp;&nbsp; &lt;ruleBase name=&quot;myRulebaseFromURL&quot;&gt;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;pkg1&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;foo.bar.pkg&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;urlSource url=&quot;url to BRMS&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;poll minutes=&quot;10&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/urlSource&gt;
<br>&nbsp;&nbsp;&nbsp; &lt;/ruleBase&gt;<br><br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;!-- in this case the rulebase comes from a jgroup, the updates are near instant, no polling&nbsp; --&gt;<br>&nbsp;&nbsp;&nbsp; &lt;ruleBase name=&quot;myRulebaseFromJGroup&quot;&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;pkg1&quot;/&gt;
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;package name=&quot;foo.bar.pkg&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;group name=&quot;production.group&quot;/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/ruleBase&gt;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <br>&lt;/ruleBaseConfig&gt;&nbsp;&nbsp;&nbsp; <br><br><br>And in the code you access it like:
<br><br>RuleBase rb = RuleAgent.instance().getRuleBase(&quot;myRulebaseFromJGroup&quot;);<br>... etc...<br>The rulebase will be updated when the rules are etc.<br><br>Comments? <br><br><br>