I think that is an example of a "pragmatic" way to solve something that backwards chaining could possibly achieve, but in a perhaps more intuitive way. I don't think its what is talked about in the literature is quite the same, but still, this is very useful.
<br><br>Thanks for the kind words !<br><br><br><div><span class="gmail_quote">On 2/27/07, <b class="gmail_sendername">Rich Halsey</b> &lt;<a href="mailto:rich_halsey@bellsouth.net">rich_halsey@bellsouth.net</a>&gt; wrote:
</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



<div text="#000000" bgcolor="#ffffff">
<div><font face="Arial" size="2"><strong>Mark,</strong></font></div>
<div><font face="Arial" size="2"><strong></strong></font>&nbsp;</div>
<div><font face="Arial" size="2"><strong>In yet another point of interest, I also 
see the JBoss Rules &quot;rules flow&quot; as a very elegant form of backward chaining 
implementation/modeling. For example, in the PDF file from <font face="Times New Roman" size="3">Kris Verlaenen, the ultimate goal of&nbsp; 
&quot;Process Order&quot; cannot be accomplished without the completion of &quot;Check Order&quot; 
which may/may not (?) complete without &quot;Update Order&quot;. As opposed to the engine 
hunting through all of the conditions and actions to find an appropriate path 
for the backward chaining, the model implies how it is to be done and the system 
will guarantee the flow with its split and join nodes via forward chaining - 
but, if and only if the backward chaining pre-conditions are 
satisfied.</font></strong></font></div>
<div><font face="Arial" size="2"><font face="Times New Roman" size="3"><strong></strong></font></font>&nbsp;</div>
<div><font face="Arial" size="2"><font face="Times New Roman" size="3"><strong>I&#39;m not 
sure who will agree with what I have said, but this is the way that it appears 
to me as a rules engineering person.</strong></font></font></div>
<div><font face="Arial" size="2"><strong></strong></font>&nbsp;</div>
<div><font face="Arial" size="2"><strong>Thanks,</strong></font></div><span class="q">
<div><font face="Arial" size="2"><strong></strong></font>&nbsp;</div>
<div><font face="Arial" size="2"><strong>Rich Halsey</strong></font></div>
<div><strong></strong>&nbsp;</div>
<div><strong></strong>&nbsp;</div>
<div><strong></strong>&nbsp;</div>
<div><strong></strong>&nbsp;</div>
<div><strong>&quot;GENIUS IS THE ULTIMATE WEAPON&quot;</strong></div>
<div><strong></strong>&nbsp;</div>
<div><strong>....God grant me...<br>The senility to forget the people I never 
liked<br>The good fortune to run into the ones that I do<br>And the eyesight to 
tell the difference.&quot;<br></strong></div>
</span><blockquote style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;"><span class="q">
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>----- Original Message ----- 
  </strong></div>
  <div style="background: rgb(228, 228, 228) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<strong>From: 
  </strong><a title="mproctor@codehaus.org" href="mailto:mproctor@codehaus.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>Mark Proctor</strong></a><strong> 
  </strong></div>
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>To: </strong><a title="rules-dev@lists.jboss.org" href="mailto:rules-dev@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
<strong>Rules Dev 
  List</strong></a><strong> </strong></div></span><span class="q">
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>Cc: </strong><a title="rich_halsey@bellsouth.net" href="mailto:rich_halsey@bellsouth.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
<strong>Rich 
  Halsey</strong></a><strong> ; </strong><a title="jco@kbsc.com" href="mailto:jco@kbsc.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>James C. Owen</strong></a><strong> 
  </strong></div>
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>Sent: Monday, February 26, 2007 7:58 
  AM</strong></div>
  <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>Subject: Re: [rules-dev] Re: RuleFlow 
  preview</strong></div>
  <div><strong><br></strong></div></span><div><span class="e" id="q_110fed95a1c94400_5"><strong>Our implementation is a light layer to 
  provide &quot;wait states&quot; for one or more rules, it uses a similar principle to 
  agenda-groups (Clips modules) to partition the execution. Activated rules are 
  placed in temporary buckets (rule-flow-groups), instead of onto the agenda, 
  when the rule-flow-group is activated the bucket empties onto the Agenda for 
  normal execution, when all the emptied rules are fired the next 
  rule-flow-groups are activated. <br><br>The system is still &quot;parallel&quot; in 
  nature, in that the agenda is still responsible for executing rules and the 
  agenda can have more than one rule on it at at time. In our implementation all 
  the rules in the rule-flow-group will be put onto the agenda for execution, at 
  the same time standard rules can also continue to be managed and executed by 
  the agenda, and agenda groups (clips modules) still continue to operate - all 
  in parallel.<br><br>A rule that is specified to execute as part of a 
  rule-flow-group can also be part of an agenda-group, but that use case is 
  discouraged because it can get quite hairy unless you really know what you are 
  doing :) As it means a rule-flow-group can be activated, the rules moved onto 
  their respective agenda-groups, where any rules not in agenda-groups that do 
  not have focus will not fire, the next rule-flow-group will not activate 
  untill all rules for the current rule-flow-group have fired, regardless of the 
  agenda-groups they are in.<br><br>The limitation at the moment is that the 
  temporary bucket has no ability to handle different start instances and 
  differentiate between the rules in it&#39;s bucket of the same rule-flow, but you 
  can have multiple different rule flows executing in parallel. We purposefuly 
  kept it simple for &quot;version 1&quot; to build up the functionality needed for rule 
  flow. The use cases for parallel execution of the same flow are not easy - as 
  one instance can catch up and over take another instance on the same flow. 
  Also if a rule in a rule-flow-group activates which of the two current 
  instances for the same rule flow are responsible for firing it? The same issue 
  arrises for when you have the same rule-flow-group in multiple rule-flows. We 
  are currently not sure how best to handle these types of situations; maybe you 
  could help us on those use cases? Or even provide a patch 
  :)<br><br>Mark<br>Rich Halsey wrote: </strong>
  <blockquote type="cite">
    
    

    <div><strong></strong>&nbsp;</div>
    <div><font face="Arial" size="2"><strong>Hi Mark,</strong></font></div>
    <div><strong></strong>&nbsp;</div>
    <div><font face="Arial" size="2"><strong>The part in the document where it says: 
    </strong><font face="TimesNewRomanPSMT">
    <p align="left"><strong>&quot;At this point, ruleflow-groups should not be reused 
    in more than one ruleflow, and you should not</strong></p>
    <p align="left"><strong>start a new instance of a process before the previous 
    one has ended.&quot; </strong></p>
    <p align="left"><strong>will be the weak link in the chain, i.e. there should 
    not be any reason why rule-flow-groups should not be reused nor having 
    multiple instances since rules are implicitly parallel in operation. This 
    was what I found to be the problem with ILOG&#39;s JRules back in the v4.0 
    edition. It turned JRules into a clunky procedural processing engine (which 
    was not what we needed at that time).</strong></p>
    <p align="left"><strong>However, I am very proud to see that Jboss Rules 
    (JBRules) has successfully evolved to this point. You (and your team) are to 
    be commended for your efforts.</strong></p>
    <p align="left"><strong>Tally-ho !!</strong></p>
    <p align="left"><strong>Rich Halsey</strong></p>
    <p align="left"><strong></strong>&nbsp;</p>
    <p align="left"><strong></strong>&nbsp;</p>
    <p align="left"><strong></strong>&nbsp;</p></font></font></div>
    <div><strong></strong>&nbsp;</div>
    <div><strong></strong>&nbsp;</div>
    <div><strong></strong>&nbsp;</div>
    <div><strong>&quot;GENIUS IS THE ULTIMATE WEAPON&quot;</strong></div>
    <div><strong></strong>&nbsp;</div>
    <div><strong>....God grant me...<br>The senility to forget the people I 
    never liked<br>The good fortune to run into the ones that I do<br>And the 
    eyesight to tell the difference.&quot;<br></strong></div>
    <blockquote dir="ltr" style="border-left: 2px solid rgb(0, 0, 0); padding-right: 0px; padding-left: 5px; margin-left: 5px; margin-right: 0px;">
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>----- 
      Original Message ----- </strong></div>
      <div style="background: rgb(228, 228, 228) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">
<strong>From: 
      </strong><a title="mproctor@redhat.com" href="mailto:mproctor@redhat.com" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>Mark Proctor</strong></a><strong> 
      </strong></div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>To: 
      </strong><a title="rules-dev@lists.jboss.org" href="mailto:rules-dev@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>Rules Dev List</strong></a><strong> 
      </strong></div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>Sent: 
      Monday, February 26, 2007 5:12 AM</strong></div>
      <div style="font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"><strong>Subject: 
      RuleFlow preview</strong></div>
      <div><strong><br></strong></div><strong>I thought everyone on the dev list 
      would be interested in reviewing and providing feedback on Kris&#39; excellent 
      work on RuleFlow - includes screenshots :)<br><br>Mark<br>-------- 
      Original Message -------- </strong>
      <table border="0" cellpadding="0" cellspacing="0"><tbody>
        <tr>
          <th align="right" nowrap="nowrap" valign="baseline">Date: </th>
          <td><strong>Mon, 26 Feb 2007 01:51:29 +0100</strong></td></tr>
        <tr>
          <th align="right" nowrap="nowrap" valign="baseline">From: </th>
          <td><strong>Kris Verlaenen </strong><a href="mailto:kris.verlaenen@gmail.com%3E" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>&lt;kris.verlaenen@gmail.com&gt;</strong></a></td>
</tr>
        <tr>
          <th align="right" nowrap="nowrap" valign="baseline">Subject: </th>
          <td><strong>Ruleflow</strong></td></tr></tbody></table><br><br><pre><strong>I&#39;ve attached a document describing how ruleflow is implemented /<br>could be used in the future.  If anyone has got any suggestions or
<br>improvements (on the API I&#39;m proposing, or things you would like to<br>see differently), just let me know asap.<br><br>I think I&#39;ll be able to commit a first working version on svn soon.<br>Still have to include conditional connections (where a connection is
<br>only selected if its condition evaluates to true), and some smaller<br>stuff.<br><br>Kris<br><br>    </strong></pre></blockquote><pre><strong><hr size="4" width="90%">
_______________________________________________<br>rules-dev mailing list<br></strong><a href="mailto:rules-dev@lists.jboss.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>rules-dev@lists.jboss.org
</strong></a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"><strong>https://lists.jboss.org/mailman/listinfo/rules-dev</strong></a>
<strong>  </strong></pre></blockquote><br></span></div></blockquote></div>
<br>_______________________________________________<br>rules-dev mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:rules-dev@lists.jboss.org">rules-dev@lists.jboss.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="https://lists.jboss.org/mailman/listinfo/rules-dev" target="_blank">
https://lists.jboss.org/mailman/listinfo/rules-dev</a><br><br></blockquote></div><br>