[jboss-svn-commits] JBL Code SVN: r13714 - labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 22 18:10:01 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-07-22 18:10:00 -0400 (Sun, 22 Jul 2007)
New Revision: 13714

Added:
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.svg
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.svg
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.svg
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.svg
Modified:
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Advanced-CEs.xml
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.vsd
Log:
-updated rule language docs - added advanced ces from edson.

Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Advanced-CEs.xml
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Advanced-CEs.xml	2007-07-22 21:58:09 UTC (rev 13713)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Advanced-CEs.xml	2007-07-22 22:10:00 UTC (rev 13714)
@@ -32,6 +32,20 @@
   <section>
     <title>From</title>
 
+    <figure>
+      <title>from</title>
+
+      <mediaobject>
+        <imageobject>
+          <imagedata align="center" fileref="from.svg" format="SVG" />
+        </imageobject>
+
+        <imageobject>
+          <imagedata align="center" fileref="from.png" format="PNG" />
+        </imageobject>
+      </mediaobject>
+    </figure>
+
     <para>The <emphasis role="bold">from</emphasis> Conditional Element allows
     users to specify a source for patterns to reason over. This allows the
     engine to reason over data not in the Working Memory. This could be a
@@ -99,6 +113,20 @@
   <section>
     <title>Collect</title>
 
+    <figure>
+      <title>collect</title>
+
+      <mediaobject>
+        <imageobject>
+          <imagedata align="center" fileref="collect.svg" format="SVG" />
+        </imageobject>
+
+        <imageobject>
+          <imagedata align="center" fileref="collect.png" format="PNG" />
+        </imageobject>
+      </mediaobject>
+    </figure>
+
     <para>The <emphasis role="bold">collect</emphasis> Conditional Element
     allows rules to reason over collection of objects collected from the given
     source or from the working memory. A simple example:</para>
@@ -160,6 +188,20 @@
   <section>
     <title>Accumulate</title>
 
+    <figure>
+      <title>accumulate</title>
+
+      <mediaobject>
+        <imageobject>
+          <imagedata align="center" fileref="accumulate.svg" format="SVG" />
+        </imageobject>
+
+        <imageobject>
+          <imagedata align="center" fileref="accumulate.png" format="PNG" />
+        </imageobject>
+      </mediaobject>
+    </figure>
+
     <para>The <emphasis role="bold">accumulate</emphasis> Conditional Element
     is a more flexible and powerful form of <emphasis
     role="bold">collect</emphasis> Conditional Element, in the sense that it
@@ -468,9 +510,23 @@
   <section>
     <title>Forall</title>
 
+    <figure>
+      <title>forall</title>
+
+      <mediaobject>
+        <imageobject>
+          <imagedata align="center" fileref="forall.svg" format="SVG" />
+        </imageobject>
+
+        <imageobject>
+          <imagedata align="center" fileref="forall.png" format="PNG" />
+        </imageobject>
+      </mediaobject>
+    </figure>
+
     <para><emphasis role="bold">Forall</emphasis> is the Conditional Element
     that completes the First Order Logic support in Drools. The syntax is very
-    simple: </para>
+    simple:</para>
 
     <programlisting>forall( <replaceable>&lt;select pattern&gt;</replaceable> <replaceable>&lt;constraint patterns&gt;</replaceable> )</programlisting>
 

Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml	2007-07-22 21:58:09 UTC (rev 13713)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml	2007-07-22 22:10:00 UTC (rev 13714)
@@ -1366,6 +1366,569 @@
 exists ( Bus(color == "red") and Bus(color == "blue")) // not with nested 'and' infix used here as ony two patterns</programlisting>
       </example>
     </section>
+
+    <section>
+      <title>'forall'</title>
+
+      <figure>
+        <title>forall</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center" fileref="forall.svg" format="SVG" />
+          </imageobject>
+
+          <imageobject>
+            <imagedata align="center" fileref="forall.png" format="PNG" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para><emphasis role="bold">Forall</emphasis> is the Conditional Element
+      that completes the First Order Logic support in Drools. The syntax is
+      very simple:</para>
+
+      <programlisting>forall( <replaceable>&lt;select pattern&gt;</replaceable> <replaceable>&lt;constraint patterns&gt;</replaceable> )</programlisting>
+
+      <para>The <emphasis role="bold">forall</emphasis> Conditional Element
+      will evaluate to true when all facts that match the
+      <replaceable>&lt;select pattern&gt;</replaceable> match all the
+      <replaceable>&lt;constraint patterns&gt;</replaceable>. Example:</para>
+
+      <programlisting>rule "All english buses are red"
+when
+    forall( $bus : Bus( type == 'english') 
+                   Bus( this == $bus, color = 'red' ) )
+then
+    # all english buses are red
+end
+</programlisting>
+
+      <para>In the above rule, we "select" all Bus object whose type is
+      "english". Then, for each fact that matchs this pattern we evaluate the
+      following patterns and if they match, the forall CE will evaluate to
+      true. Another example:</para>
+
+      <programlisting>rule "all employees have health and dental care programs"
+when
+    forall( $emp : Employee()
+            HealthCare( employee == $emp )
+            DentalCare( employee == $emp )
+          )
+then
+    # all employees have health and dental care
+end
+</programlisting>
+
+      <para>Forall can be nested inside other CEs for complete expressiveness.
+      For instance, <emphasis role="bold">forall</emphasis> can be used inside
+      a <emphasis role="bold">not</emphasis> CE:</para>
+
+      <programlisting>rule "not all employees have health and dental care"
+when 
+    not forall( $emp : Employee()
+                HealthCare( employee == $emp )
+                DentalCare( employee == $emp )
+              )
+then
+    # not all employees have health and dental care
+end
+</programlisting>
+
+      <para>As a side note, forall Conditional Element is equivalent to
+      writing:</para>
+
+      <programlisting>not( <replaceable>&lt;select pattern&gt;</replaceable> and not ( and <replaceable>&lt;constraint patterns&gt;</replaceable> ) )</programlisting>
+
+      <para>Also, it is important to note that <emphasis role="bold">forall is
+      a scope delimiter</emphasis>, so it can use any previously bound
+      variable, but no variable bound inside it will be available to use
+      outside of it.</para>
+    </section>
+
+    <section>
+      <title>From</title>
+
+      <figure>
+        <title>from</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center" fileref="from.svg" format="SVG" />
+          </imageobject>
+
+          <imageobject>
+            <imagedata align="center" fileref="from.png" format="PNG" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>The <emphasis role="bold">from</emphasis> Conditional Element
+      allows users to specify a source for patterns to reason over. This
+      allows the engine to reason over data not in the Working Memory. This
+      could be a sub-field on a bound variable or the results of a method
+      call. It is a powerful construction that allows out of the box
+      integration with other application components and frameworks. One common
+      example is the integration with data retrieved on-demand from databases
+      using hibernate named queries.</para>
+
+      <para>The expression used to define the object source is any expression
+      that follows regular MVEL syntax. I.e., it allows you to easily use
+      object property navigation, execute method calls and access maps and
+      collections elements.</para>
+
+      <para>Here is a simple example of reasoning and binding on another
+      pattern sub-field:</para>
+
+      <para><programlisting>rule "validate zipcode"
+when
+    Person( $personAddress : address ) 
+    Address( zipcode == "23920W") from $personAddress 
+then
+    # zip code is ok
+end
+</programlisting></para>
+
+      <para>With all the flexibility from the new expressiveness in the Drools
+      engine you can slice and dice this problem many ways. This is the same
+      but shows how you can use a graph notation with the 'from':</para>
+
+      <para><programlisting>rule "validate zipcode"
+when
+    $p : Person( ) 
+    $a : Address( zipcode == "23920W") from $p.address 
+then
+    # zip code is ok
+end
+</programlisting></para>
+
+      <para>Previous examples were reasoning over a single pattern. The
+      <emphasis role="bold">from</emphasis> CE also support object sources
+      that return a collection of objects. In that case, <emphasis
+      role="bold">from</emphasis> will iterate over all objects in the
+      collection and try to match each of them individually. For instance, if
+      we want a rule that applies 10% discount to each item in an order, we
+      could do:</para>
+
+      <programlisting>rule "apply 10% discount to all items over US$ 100,00 in an order"
+when
+    $order : Order()
+    $item  : OrderItem( value &gt; 100 ) from $order.items
+then
+    # apply discount to $item
+end
+</programlisting>
+
+      <para>The above example will cause the rule to fire once for each item
+      whose value is greater than 100 for each given order.</para>
+
+      <para>The next example shows how we can reason over the results of a
+      hibernate query. The Restaurant pattern will reason over and bind with
+      each result in turn:</para>
+    </section>
+
+    <section>
+      <title>'collect'</title>
+
+      <figure>
+        <title>collect</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center" fileref="collect.svg" format="SVG" />
+          </imageobject>
+
+          <imageobject>
+            <imagedata align="center" fileref="collect.png" format="PNG" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>The <emphasis role="bold">collect</emphasis> Conditional Element
+      allows rules to reason over collection of objects collected from the
+      given source or from the working memory. In first oder logic terms this
+      is Cardinality Quantifier. A simple example:</para>
+
+      <programlisting>import java.util.ArrayList
+
+rule "Raise priority if system has more than 3 pending alarms"
+when
+    $system : System()
+    $alarms : ArrayList( size &gt;= 3 )
+              from collect( Alarm( system == $system, status == 'pending' ) )
+then
+    # Raise priority, because system $system has
+    # 3 or more alarms pending. The pending alarms
+    # are $alarms.
+end
+</programlisting>
+
+      <para>In the above example, the rule will look for all pending alarms in
+      the working memory for each given system and group them in ArrayLists.
+      If 3 or more alarms are found for a given system, the rule will
+      fire.</para>
+
+      <para>The <emphasis role="bold">collect</emphasis> CE result pattern can
+      be any concrete class that implements tha java.util.Collection interface
+      and provides a default no-arg public constructor. I.e., you can use
+      default java collections like ArrayList, LinkedList, HashSet, etc, or
+      your own class, as long as it implements the java.util.Collection
+      interface and provide a default no-arg public constructor.</para>
+
+      <para>Both source and result patterns can be constrained as any other
+      pattern.</para>
+
+      <para>Variables bound before the <emphasis
+      role="bold">collect</emphasis> CE are in the scope of both source and
+      result patterns and as so, you can use them to constrain both your
+      source and result patterns. Although, the <emphasis>collect( ...
+      )</emphasis> is a scope delimiter for bindings, meaning that any binding
+      made inside of it, is not available for use outside of it.</para>
+
+      <para>Collect accepts nested <emphasis role="bold">from</emphasis>
+      elements, so the following example is a valid use of <emphasis
+      role="bold">collect</emphasis>:</para>
+
+      <programlisting>import java.util.LinkedList;
+
+rule "Send a message to all mothers"
+when
+    $town : Town( name == 'Paris' )
+    $mothers : LinkedList() 
+               from collect( Person( gender == 'F', children &gt; 0 ) 
+                             from $town.getPeople() 
+                           )
+then
+    # send a message to all mothers
+end
+</programlisting>
+    </section>
+
+    <section>
+      <title>'accumulate'</title>
+
+      <figure>
+        <title>accumulate</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center" fileref="accumulate.svg" format="SVG" />
+          </imageobject>
+
+          <imageobject>
+            <imagedata align="center" fileref="accumulate.png" format="PNG" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <para>The <emphasis role="bold">accumulate</emphasis> Conditional
+      Element is a more flexible and powerful form of <emphasis
+      role="bold">collect</emphasis> Conditional Element, in the sense that it
+      can be used to do what <emphasis role="bold">collect</emphasis> CE does
+      and also do things that <emphasis role="bold">collect</emphasis> CE is
+      not capable to do. Basically what it does is it allows a rule to iterate
+      over a collection of objects, executing custom actions for each of the
+      elements, and at the end return a result object.</para>
+
+      <para>The general syntax of the <emphasis
+      role="bold">accumulate</emphasis> CE is:</para>
+
+      <programlisting><replaceable>&lt;result pattern&gt;</replaceable> from accumulate( <replaceable>&lt;source pattern&gt;</replaceable>,
+                                  init( <replaceable>&lt;init code&gt;</replaceable> ),
+                                  action( <replaceable>&lt;action code&gt;</replaceable> ),
+                                  reverse( <replaceable>&lt;reverse code&gt;</replaceable> ),
+                                  result( <replaceable>&lt;result expression&gt;</replaceable> ) )
+</programlisting>
+
+      <para>The meaning of each of the elements is the following:</para>
+
+      <itemizedlist>
+        <listitem>
+          <para><emphasis role="bold">&lt;source pattern&gt;</emphasis>: the
+          source pattern is a regular pattern that the engine will try to
+          match against each of the source objects.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">&lt;init code&gt;</emphasis>: this is a
+          semantic block of code in the selected dialect that will be executed
+          once for each tuple, before iterating over the source
+          objects.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">&lt;action code&gt;</emphasis>: this is
+          a semantic block of code in the selected dialect that will be
+          executed for each of the source objects.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">&lt;reverse code&gt;</emphasis>: this is
+          an optional semantic block of code in the selected dialect that if
+          present will be executed for each source object that no longer
+          matches the source pattern. The objective of this code block is to
+          "undo" any calculation done in the &lt;action code&gt; block, so
+          that the engine can do decremental calculation when a source object
+          is modified or retracted, hugely improving performance of these
+          operations.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">&lt;result expression&gt;</emphasis>:
+          this is a semantic expression in the selected dialect that is
+          executed after all source objects are iterated.</para>
+        </listitem>
+
+        <listitem>
+          <para><emphasis role="bold">&lt;result pattern&gt;</emphasis>: this
+          is a regular pattern that the engine tries to match against the
+          object returned from the &lt;result expression&gt;. If it matches,
+          the <emphasis role="bold">accumulate</emphasis> conditional element
+          evaluates to <emphasis role="bold">true</emphasis> and the engine
+          proceeds with the evaluation of the next CE in the rule. If it does
+          not matches, the <emphasis role="bold">accumulate</emphasis> CE
+          evaluates to <emphasis role="bold">false</emphasis> and the engine
+          stops evaluating CEs for that rule.</para>
+        </listitem>
+      </itemizedlist>
+
+      <para>It is easier to understand if we look at an example:</para>
+
+      <programlisting>rule "Apply 10% discount to orders over US$ 100,00"
+when
+    $order : Order()
+    $total : Number( doubleValue &gt; 100 ) 
+             from accumulate( OrderItem( order == $order, $value : value ),
+                              init( double total = 0; ),
+                              action( total += $value; ),
+                              reverse( total -= $value; ),
+                              result( total ) )
+then
+    # apply discount to $order
+end
+</programlisting>
+
+      <para>In the above example, for each Order() in the working memory, the
+      engine will execute the <emphasis role="bold">init code</emphasis>
+      initializing the total variable to zero. Then it will iterate over all
+      OrderItem() objects for that order, executing the <emphasis
+      role="bold">action</emphasis> for each one (in the example, it will sum
+      the value of all items into the total variable). After iterating over
+      all OrderItem, it will return the value corresponding to the <emphasis
+      role="bold">result expression</emphasis> (in the above example, the
+      value of the total variable). Finally, the engine will try to match the
+      result with the Number() pattern and if the double value is greater than
+      100, the rule will fire.</para>
+
+      <para>The example used java as the semantic dialect, and as such, note
+      that the usage of ';' is mandatory in the init, action and reverse code
+      blocks. The result is an expression and as such, it does not admit ';'.
+      If the user uses any other dialect, he must comply to that dialect
+      specific syntax.</para>
+
+      <para>As mentioned before, the <emphasis role="bold">reverse
+      code</emphasis> is optional, but it is strongly recommended that the
+      user writes it in order to benefit from the <emphasis>improved
+      performance on update and retracts</emphasis>.</para>
+
+      <para>The <emphasis role="bold">accumulate</emphasis> CE can be used to
+      execute any action on source objects. The following example instantiates
+      and populates a custom object:</para>
+
+      <programlisting>rule "Accumulate using custom objects"
+when
+    $person   : Person( $likes : likes )
+    $cheesery : Cheesery( totalAmount &gt; 100 )
+                from accumulate( $cheese : Cheese( type == $likes ),
+                                 init( Cheesery cheesery = new Cheesery(); ),
+                                 action( cheesery.addCheese( $cheese ); ),
+                                 reverse( cheesery.removeCheese( $cheese ); ),
+                                 result( cheesery ) );
+then
+    // do something
+end</programlisting>
+
+      <section>
+        <title>Accumulate Functions</title>
+
+        <para>The accumulate CE is a very powerful CE, but it gets real
+        declarative and easy to use when using predefined functions that are
+        known as Accumulate Functions. They work exactly like accumulate, but
+        instead of explicitly writing custom code in every accumulate CE, the
+        user can use predefined code for common operations.</para>
+
+        <para>For instance, the rule to apply discount on orders written in
+        the previous section, could be written in the following way, using
+        Accumulate Functions:</para>
+
+        <programlisting>rule "Apply 10% discount to orders over US$ 100,00"
+when
+    $order : Order()
+    $total : Number( doubleValue &gt; 100 ) 
+             from accumulate( OrderItem( order == $order, $value : value ),
+                              sum( $value ) )
+then
+    # apply discount to $order
+end
+</programlisting>
+
+        <para>In the above example, sum is an AccumulateFunction and will sum
+        the $value of all OrderItems and return the result.</para>
+
+        <para>Drools 4.0 ships with the following built in accumulate
+        functions:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>average</para>
+          </listitem>
+
+          <listitem>
+            <para>min</para>
+          </listitem>
+
+          <listitem>
+            <para>max</para>
+          </listitem>
+
+          <listitem>
+            <para>count</para>
+          </listitem>
+
+          <listitem>
+            <para>sum</para>
+          </listitem>
+        </itemizedlist>
+
+        <para>These common functions accept any expression as input. For
+        instance, if someone wants to calculate the average profit on all
+        items of an order, a rule could be written using the average
+        function:</para>
+
+        <programlisting>rule "Average profit"
+when
+    $order : Order()
+    $profit : Number() 
+              from accumulate( OrderItem( order == $order, $cost : cost, $price : price )
+                               average( 1 - $cost / $price ) )
+then
+    # average profit for $order is $profit
+end
+</programlisting>
+
+        <para>Accumulate Functions are all pluggable. That means that if
+        needed, custom, domain specific functions can easily be added to the
+        engine and rules can start to use them without any restrictions. To
+        implement a new Accumulate Functions all one needs to do is to create
+        a java class that implements the
+        org.drools.base.acumulators.AccumulateFunction interface and add a
+        line to the configuration file or set a system property to let the
+        engine know about the new function. As an example of an Accumulate
+        Function implementation, the following is the implementation of the
+        "average" function:</para>
+
+        <programlisting>/*
+ * Copyright 2007 JBoss Inc
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Created on Jun 21, 2007
+ */
+package org.drools.base.accumulators;
+
+
+/**
+ * An implementation of an accumulator capable of calculating average values
+ * 
+ * @author etirelli
+ *
+ */
+public class AverageAccumulateFunction implements AccumulateFunction {
+
+    protected static class AverageData {
+        public int    count = 0;
+        public double total = 0;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#createContext()
+     */
+    public Object createContext() {
+        return new AverageData();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#init(java.lang.Object)
+     */
+    public void init(Object context) throws Exception {
+        AverageData data = (AverageData) context;
+        data.count = 0;
+        data.total = 0;
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#accumulate(java.lang.Object, java.lang.Object)
+     */
+    public void accumulate(Object context,
+                           Object value) {
+        AverageData data = (AverageData) context;
+        data.count++;
+        data.total += ((Number) value).doubleValue();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#reverse(java.lang.Object, java.lang.Object)
+     */
+    public void reverse(Object context,
+                        Object value) throws Exception {
+        AverageData data = (AverageData) context;
+        data.count--;
+        data.total -= ((Number) value).doubleValue();
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#getResult(java.lang.Object)
+     */
+    public Object getResult(Object context) throws Exception {
+        AverageData data = (AverageData) context;
+        return new Double( data.count == 0 ? 0 : data.total / data.count );
+    }
+
+    /* (non-Javadoc)
+     * @see org.drools.base.accumulators.AccumulateFunction#supportsReverse()
+     */
+    public boolean supportsReverse() {
+        return true;
+    }
+
+}
+</programlisting>
+
+        <para>The code for the function is very simple, as we could expect, as
+        all the "dirty" integration work is done by the engine. Finally, to
+        plug the function into the engine, we added it to the configuration
+        file:</para>
+
+        <programlisting>drools.accumulate.function.average = org.drools.base.accumulators.AverageAccumulateFunction
+</programlisting>
+
+        <para>Where "drools.accumulate.function." is a prefix that must always
+        be used, "average" is how the function will be used in the rule file,
+        and "org.drools.base.accumulators.AverageAccumulateFunction" is the
+        fully qualified name of the class that implements the function
+        behavior.</para>
+      </section>
+    </section>
   </section>
 
   <section>

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.svg	                        (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/accumulate.svg	2007-07-22 22:10:00 UTC (rev 13714)
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 accumulate.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.51445in"
+		height="2.72591in" viewBox="0 0 325.04 196.266" xml:space="preserve" color-interpolation-filters="sRGB" class="st7">
+	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#e8eef7;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st2 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+		.st3 {marker-end:url(#mrkr2-9);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st4 {fill:#4677bf;fill-opacity:1;stroke:#4677bf;stroke-opacity:1;stroke-width:0.08695652173913}
+		.st5 {fill:#000000;font-family:Arial;font-size:0.666664em}
+		.st6 {font-size:1em}
+		.st7 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend2">
+			<path d="M 1 1 L 0 0 L 1 -1 L 1 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr2-9" class="st4" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto"
+				markerUnits="strokeWidth">
+			<use xlink:href="#lend2" transform="scale(-11.5,-11.5) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<v:layer v:name="Flowchart" v:index="0"/>
+		<v:layer v:name="Connector" v:index="1"/>
+		<g id="shape49-1" v:mID="49" v:groupContext="shape" v:layerMember="0" transform="translate(27.3422,-180.796)">
+			<title>Process.49</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="189.596" width="29.8" height="13.3396"/>
+			<rect x="0" y="182.926" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="2.45" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape52-4" v:mID="52" v:groupContext="shape" v:layerMember="1" transform="translate(177.399,-187.466)">
+			<title>Dynamic connector.52</title>
+			<path d="M0 196.27 L28.35 196.27 A5.66929 5.66929 0 0 1 34.02 201.93 L34.02 209.13 A5.66929 5.66929 0 0 1 28.35 214.8
+						 L-167.24 214.8 A5.66929 5.66929 -180 0 0 -172.91 220.47 L-172.91 269.79 A4.25197 4.25197 -180 0 0 -168.66
+						 274.04 L-167.17 274.04" class="st3"/>
+		</g>
+		<g id="shape53-10" v:mID="53" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.985572,-181.629)">
+			<title>On-page reference.53</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 190.43 A5.83609 5.83609 0 1 1 11.67 190.43 A5.83609 5.83609 0 0 1 0 190.43 Z" class="st1"/>
+		</g>
+		<g id="shape55-12" v:mID="55" v:groupContext="shape" v:layerMember="1" transform="translate(12.6578,-180.379)">
+			<title>Dynamic connector.55</title>
+			<path d="M0 189.18 L11.92 189.18" class="st3"/>
+		</g>
+		<g id="shape60-17" v:mID="60" v:groupContext="shape" v:layerMember="0" transform="translate(80.3557,-180.796)">
+			<title>Process.60</title>
+			<desc>‘from’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="189.596" width="29.8" height="13.3396"/>
+			<rect x="0" y="182.926" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="5.12" y="192" class="st5" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>‘from’</text>		</g>
+		<g id="shape61-20" v:mID="61" v:groupContext="shape" v:layerMember="0" transform="translate(125.71,-180.796)">
+			<title>Process.61</title>
+			<desc>‘accumulate’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="25.8443" cy="189.596" width="51.69" height="13.3396"/>
+			<rect x="0" y="182.926" width="51.6887" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="3.62" y="192" class="st5" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>‘accumulate’</text>		</g>
+		<g id="shape65-23" v:mID="65" v:groupContext="shape" v:layerMember="1" transform="translate(110.148,-180.379)">
+			<title>Dynamic connector.65</title>
+			<path d="M0 189.18 L12.8 189.18" class="st3"/>
+		</g>
+		<g id="shape66-28" v:mID="66" v:groupContext="shape" v:layerMember="1" transform="translate(57.1348,-180.379)">
+			<title>Dynamic connector.66</title>
+			<path d="M0 189.18 L20.46 189.18" class="st3"/>
+		</g>
+		<g id="shape45-33" v:mID="45" v:groupContext="shape" v:layerMember="0" transform="translate(12.9892,-103.024)">
+			<title>Process.45</title>
+			<desc>‘(‘</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="189.596" width="20.01" height="13.3396"/>
+			<rect x="0" y="182.926" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="192" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+						v:langID="2057">(</tspan>‘</text>		</g>
+		<g id="shape74-37" v:mID="74" v:groupContext="shape" v:layerMember="1" transform="translate(121.327,-71.6064)">
+			<title>Dynamic connector.74</title>
+			<path d="M0 196.27 L9.45 196.27 A5.66929 5.66929 -180 0 0 15.12 190.6 L15.12 163.25 A5.66929 5.66929 0 0 1 20.79 157.58
+						 L27.53 157.58 A5.66929 5.66929 -180 0 0 33.2 151.91 L33.2 134.29 A5.06012 5.06012 0 0 1 38.26 129.23 L40.56
+						 129.23" class="st3"/>
+		</g>
+		<g id="shape75-42" v:mID="75" v:groupContext="shape" v:layerMember="1" transform="translate(32.9986,-109.693)">
+			<title>Dynamic connector.75</title>
+			<path d="M0 196.27 L5.31 196.27 A5.31496 5.31496 -180 0 0 10.63 190.95 L10.63 161.65 A5.66929 5.66929 0 0 1 16.3 155.98
+						 L40.21 155.98" class="st3"/>
+		</g>
+		<g id="shape76-47" v:mID="76" v:groupContext="shape" v:layerMember="0" transform="translate(75.9728,-143.306)">
+			<title>Process.76</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="19.8425" cy="189.596" width="39.69" height="13.3396"/>
+			<rect x="0" y="182.926" width="39.685" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="7.4" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape77-50" v:mID="77" v:groupContext="shape" v:layerMember="0" transform="translate(75.9728,-91.0598)">
+			<title>Process.77</title>
+			<desc>collect</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="19.8425" cy="189.596" width="39.69" height="13.3396"/>
+			<rect x="0" y="182.926" width="39.685" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="8.51" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>collect</text>		</g>
+		<g id="shape78-53" v:mID="78" v:groupContext="shape" v:layerMember="0" transform="translate(70.3035,-64.9366)">
+			<title>Process.78</title>
+			<desc>accumulate</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="25.5118" cy="189.596" width="51.03" height="13.3396"/>
+			<rect x="0" y="182.926" width="51.0236" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="5.04" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>accumulate</text>		</g>
+		<g id="shape79-56" v:mID="79" v:groupContext="shape" v:layerMember="0" transform="translate(80.919,-117.183)">
+			<title>Process.79</title>
+			<desc>from</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="189.596" width="29.8" height="13.3396"/>
+			<rect x="0" y="182.926" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.9" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>from</text>		</g>
+		<g id="shape80-59" v:mID="80" v:groupContext="shape" v:layerMember="1" transform="translate(32.9986,-109.686)">
+			<title>Dynamic connector.80</title>
+			<path d="M0 196.26 L5.31 196.26 A5.31496 5.31496 -180 0 0 10.63 190.94 L10.63 187.77 A5.66929 5.66929 0 0 1 16.3 182.1
+						 L45.16 182.1" class="st3"/>
+		</g>
+		<g id="shape81-64" v:mID="81" v:groupContext="shape" v:layerMember="1" transform="translate(32.9986,-110.798)">
+			<title>Dynamic connector.81</title>
+			<path d="M0 197.37 L5.31 197.37 A5.31496 5.31496 0 0 1 10.63 202.69 L10.63 203.66 A5.66929 5.66929 -180 0 0 16.3 209.33
+						 L40.21 209.33" class="st3"/>
+		</g>
+		<g id="shape82-69" v:mID="82" v:groupContext="shape" v:layerMember="1" transform="translate(32.9986,-109.693)">
+			<title>Dynamic connector.82</title>
+			<path d="M0 196.27 L5.31 196.27 A5.31496 5.31496 0 0 1 10.63 201.58 L10.63 228.68 A5.66929 5.66929 -180 0 0 16.3 234.35
+						 L34.54 234.35" class="st3"/>
+		</g>
+		<g id="shape83-74" v:mID="83" v:groupContext="shape" v:layerMember="1" transform="translate(115.658,-97.7296)">
+			<title>Dynamic connector.83</title>
+			<path d="M0 196.27 L15.12 196.27 A5.66929 5.66929 -180 0 0 20.79 190.6 L20.79 189.37 A5.66929 5.66929 0 0 1 26.46 183.7
+						 L33.08 183.7 A5.66929 5.66929 -180 0 0 38.75 178.03 L38.75 160.48 A5.11918 5.11918 0 0 1 43.87 155.36 L46.22
+						 155.36" class="st3"/>
+		</g>
+		<g id="shape84-79" v:mID="84" v:groupContext="shape" v:layerMember="1" transform="translate(110.712,-123.853)">
+			<title>Dynamic connector.84</title>
+			<path d="M0 196.27 L20.54 196.27 A5.66929 5.66929 0 0 1 26.21 201.93 L26.21 204.16 A5.66929 5.66929 -180 0 0 31.88 209.83
+						 L38.14 209.83 A5.66929 5.66929 -180 0 0 43.81 204.16 L43.81 186.54 A5.06012 5.06012 0 0 1 48.87 181.48 L51.17
+						 181.48" class="st3"/>
+		</g>
+		<g id="shape85-84" v:mID="85" v:groupContext="shape" v:layerMember="1" transform="translate(115.658,-151.393)">
+			<title>Dynamic connector.85</title>
+			<path d="M0 197.68 L15.59 197.68 A5.66929 5.66929 0 0 1 21.26 203.35 L21.26 231.7 A5.66929 5.66929 -180 0 0 26.93 237.37
+						 L33.2 237.37 A5.66929 5.66929 -180 0 0 38.86 231.7 L38.86 214.08 A5.06012 5.06012 0 0 1 43.92 209.02 L46.22
+						 209.02" class="st3"/>
+		</g>
+		<g id="shape86-89" v:mID="86" v:groupContext="shape" v:layerMember="0" transform="translate(165.809,-80.9439)">
+			<title>Process.86</title>
+			<desc>init</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="24.3453" cy="189.596" width="48.7" height="13.3396"/>
+			<rect x="0" y="182.926" width="48.6906" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="19.24" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>init</text>		</g>
+		<g id="shape87-92" v:mID="87" v:groupContext="shape" v:layerMember="0" transform="translate(165.809,-56.2657)">
+			<title>Process.87</title>
+			<desc>action</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="24.3453" cy="189.596" width="48.7" height="13.3396"/>
+			<rect x="0" y="182.926" width="48.6906" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="13.68" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>action</text>		</g>
+		<g id="shape88-95" v:mID="88" v:groupContext="shape" v:layerMember="0" transform="translate(167.477,-29.587)">
+			<title>Process.88</title>
+			<desc>reverse</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="24.3453" cy="189.596" width="48.7" height="13.3396"/>
+			<rect x="0" y="182.926" width="48.6906" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="11.01" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>reverse</text>		</g>
+		<g id="shape89-98" v:mID="89" v:groupContext="shape" v:layerMember="0" transform="translate(169.146,-0.24)">
+			<title>Process.89</title>
+			<desc>result</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="24.3453" cy="189.596" width="48.7" height="13.3396"/>
+			<rect x="0" y="182.926" width="48.6906" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="14.57" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>result</text>		</g>
+		<g id="shape90-101" v:mID="90" v:groupContext="shape" v:layerMember="1" transform="translate(207.413,-87.6138)">
+			<title>Dynamic connector.90</title>
+			<path d="M7.09 196.27 L12.4 196.27 A5.31496 5.31496 0 0 1 17.72 201.58 L17.72 215.63 A5.31496 5.31496 0 0 1 12.4 220.94
+						 L9.85 220.94" class="st3"/>
+		</g>
+		<g id="shape91-106" v:mID="91" v:groupContext="shape" v:layerMember="1" transform="translate(159.557,-62.9355)">
+			<title>Dynamic connector.91</title>
+			<path d="M6.25 196.27 L-4.08 196.27 A5.66929 5.66929 -180 0 0 -9.75 201.93 L-9.75 217.27 A5.66929 5.66929 -180 0 0 -4.08
+						 222.94 L5.16 222.94" class="st3"/>
+		</g>
+		<g id="shape92-111" v:mID="92" v:groupContext="shape" v:layerMember="1" transform="translate(160.391,-62.9355)">
+			<title>Dynamic connector.92</title>
+			<path d="M5.42 196.27 L-4.92 196.27 A5.66929 5.66929 -180 0 0 -10.59 201.93 L-10.59 246.62 A5.66929 5.66929 -180 0 0
+						 -4.92 252.29 L5.99 252.29" class="st3"/>
+		</g>
+		<g id="shape93-116" v:mID="93" v:groupContext="shape" v:layerMember="1" transform="translate(216.168,-36.2568)">
+			<title>Dynamic connector.93</title>
+			<path d="M0 196.27 L3.54 196.27 A3.54331 3.54331 0 0 1 7.09 199.81 L7.09 204.35 A5.66929 5.66929 0 0 1 1.42 210.02 L-51.98
+						 210.02 A5.66929 5.66929 -180 0 0 -57.65 215.69 L-57.65 220.3 A5.31496 5.31496 -180 0 0 -52.34 225.61 L-49.78
+						 225.61" class="st3"/>
+		</g>
+		<g id="shape94-121" v:mID="94" v:groupContext="shape" v:layerMember="0" transform="translate(164.643,-131.968)">
+			<title>Process.94</title>
+			<desc>accumulateFunction</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="42.0472" cy="189.596" width="84.1" height="13.3396"/>
+			<rect x="0" y="182.926" width="84.0945" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.25" y="192" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>accumulateFunction</text>		</g>
+		<g id="shape95-124" v:mID="95" v:groupContext="shape" v:layerMember="1" transform="translate(115.658,-99.7583)">
+			<title>Dynamic connector.95</title>
+			<path d="M0 198.29 L15.12 198.29 A5.66929 5.66929 -180 0 0 20.79 192.62 L20.79 191.4 A5.66929 5.66929 0 0 1 26.46 185.73
+						 L33.39 185.73 A5.66929 5.66929 0 0 1 39.06 191.4 L39.06 202.87 A5.54388 5.54388 -180 0 0 44.61 208.41 L47.39
+						 208.41" class="st3"/>
+		</g>
+		<g id="shape97-129" v:mID="97" v:groupContext="shape" v:layerMember="0" transform="translate(270.554,-97.9518)">
+			<title>Process.97</title>
+			<desc>‘)’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="189.596" width="20.01" height="13.3396"/>
+			<rect x="0" y="182.926" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="192" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+						v:langID="2057">)</tspan>’</text>		</g>
+		<g id="shape98-133" v:mID="98" v:groupContext="shape" v:layerMember="1;0" transform="translate(313.128,-98.7855)">
+			<title>On-page reference.98</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 190.43 A5.83609 5.83609 0 1 1 11.67 190.43 A5.83609 5.83609 0 0 1 0 190.43 Z" class="st1"/>
+		</g>
+		<g id="shape99-135" v:mID="99" v:groupContext="shape" v:layerMember="1" transform="translate(290.564,-97.535)">
+			<title>Dynamic connector.99</title>
+			<path d="M0 189.18 L19.8 189.18" class="st3"/>
+		</g>
+		<g id="shape100-140" v:mID="100" v:groupContext="shape" v:layerMember="1" transform="translate(248.737,-138.637)">
+			<title>Dynamic connector.100</title>
+			<path d="M0 196.27 L5.31 196.27 A5.31496 5.31496 0 0 1 10.63 201.58 L10.63 224.69 A5.59364 5.59364 -180 0 0 16.22 230.28
+						 L19.06 230.28" class="st3"/>
+		</g>
+		<g id="shape101-145" v:mID="101" v:groupContext="shape" v:layerMember="1" transform="translate(217.836,-6.90982)">
+			<title>Dynamic connector.101</title>
+			<path d="M0 196.27 L38.3 196.27 A5.66929 5.66929 -180 0 0 43.97 190.6 L43.97 102.93 A4.37522 4.37522 0 0 1 48.34 98.55
+						 L49.96 98.55" class="st3"/>
+		</g>
+	</g>
+</svg>

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.svg	                        (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/collect.svg	2007-07-22 22:10:00 UTC (rev 13714)
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 collect.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.37613in"
+		height="1.28041in" viewBox="0 0 387.081 92.1892" xml:space="preserve" color-interpolation-filters="sRGB" class="st7">
+	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#e8eef7;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st2 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+		.st3 {fill:#000000;font-family:Arial;font-size:0.666664em}
+		.st4 {font-size:1em}
+		.st5 {marker-end:url(#mrkr2-17);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st6 {fill:#4677bf;fill-opacity:1;stroke:#4677bf;stroke-opacity:1;stroke-width:0.08695652173913}
+		.st7 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend2">
+			<path d="M 1 1 L 0 0 L 1 -1 L 1 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr2-17" class="st6" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto"
+				markerUnits="strokeWidth">
+			<use xlink:href="#lend2" transform="scale(-11.5,-11.5) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<v:layer v:name="Flowchart" v:index="0"/>
+		<v:layer v:name="Connector" v:index="1"/>
+		<g id="shape17-1" v:mID="17" v:groupContext="shape" v:layerMember="0" transform="translate(27.3422,-38.327)">
+			<title>Process.17</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="85.5194" width="29.8" height="13.3396"/>
+			<rect x="0" y="78.8496" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="2.45" y="87.92" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape18-4" v:mID="18" v:groupContext="shape" v:layerMember="0" transform="translate(188.824,-38.327)">
+			<title>Process.18</title>
+			<desc>‘(‘</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="85.5194" width="20.01" height="13.3396"/>
+			<rect x="0" y="78.8496" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="87.92" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st4"
+						v:langID="2057">(</tspan>‘</text>		</g>
+		<g id="shape19-8" v:mID="19" v:groupContext="shape" v:layerMember="0" transform="translate(332.595,-38.4242)">
+			<title>Process.19</title>
+			<desc>‘)’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="85.5194" width="20.01" height="13.3396"/>
+			<rect x="0" y="78.8496" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="87.92" class="st3" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st4"
+						v:langID="2057">)</tspan>’</text>		</g>
+		<g id="shape20-12" v:mID="20" v:groupContext="shape" v:layerMember="1" transform="translate(168.953,-37.9102)">
+			<title>Dynamic connector.20</title>
+			<path d="M0 85.1 L17.11 85.1" class="st5"/>
+		</g>
+		<g id="shape21-18" v:mID="21" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.985572,-39.1608)">
+			<title>On-page reference.21</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 86.35 A5.83609 5.83609 0 1 1 11.67 86.35 A5.83609 5.83609 0 0 1 0 86.35 Z" class="st1"/>
+		</g>
+		<g id="shape22-20" v:mID="22" v:groupContext="shape" v:layerMember="1;0" transform="translate(375.169,-39.258)">
+			<title>On-page reference.22</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 86.35 A5.83609 5.83609 0 1 1 11.67 86.35 A5.83609 5.83609 0 0 1 0 86.35 Z" class="st1"/>
+		</g>
+		<g id="shape23-22" v:mID="23" v:groupContext="shape" v:layerMember="1" transform="translate(12.6578,-37.9102)">
+			<title>Dynamic connector.23</title>
+			<path d="M0 85.1 L11.92 85.1" class="st5"/>
+		</g>
+		<g id="shape24-27" v:mID="24" v:groupContext="shape" v:layerMember="1" transform="translate(352.605,-38.0075)">
+			<title>Dynamic connector.24</title>
+			<path d="M0 85.1 L19.8 85.1" class="st5"/>
+		</g>
+		<g id="shape29-32" v:mID="29" v:groupContext="shape" v:layerMember="0" transform="translate(80.3557,-38.327)">
+			<title>Process.29</title>
+			<desc>‘from’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="85.5194" width="29.8" height="13.3396"/>
+			<rect x="0" y="78.8496" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="5.12" y="87.92" class="st3" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>‘from’</text>		</g>
+		<g id="shape30-35" v:mID="30" v:groupContext="shape" v:layerMember="0" transform="translate(125.71,-38.327)">
+			<title>Process.30</title>
+			<desc>‘collect’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="21.6214" cy="85.5194" width="43.25" height="13.3396"/>
+			<rect x="0" y="78.8496" width="43.2427" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="8.51" y="87.92" class="st3" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>‘collect’</text>		</g>
+		<g id="shape28-38" v:mID="28" v:groupContext="shape" v:layerMember="1" transform="translate(297.162,-6.90982)">
+			<title>Dynamic connector.28</title>
+			<path d="M0 92.19 L9.45 92.19 A5.66929 5.66929 -180 0 0 15.12 86.52 L15.12 59.67 A5.66929 5.66929 0 0 1 20.79 54 L32.67
+						 54" class="st5"/>
+		</g>
+		<g id="shape31-43" v:mID="31" v:groupContext="shape" v:layerMember="1" transform="translate(208.834,-44.9969)">
+			<title>Dynamic connector.31</title>
+			<path d="M0 92.19 L5.31 92.19 A5.31496 5.31496 -180 0 0 10.63 86.87 L10.63 57.58 A5.66929 5.66929 0 0 1 16.3 51.91 L40.21
+						 51.91" class="st5"/>
+		</g>
+		<g id="shape32-48" v:mID="32" v:groupContext="shape" v:layerMember="1" transform="translate(110.148,-37.9102)">
+			<title>Dynamic connector.32</title>
+			<path d="M0 85.1 L12.8 85.1" class="st5"/>
+		</g>
+		<g id="shape33-53" v:mID="33" v:groupContext="shape" v:layerMember="1" transform="translate(57.1348,-37.9102)">
+			<title>Dynamic connector.33</title>
+			<path d="M0 85.1 L20.46 85.1" class="st5"/>
+		</g>
+		<g id="shape1-58" v:mID="1" v:groupContext="shape" v:layerMember="0" transform="translate(251.808,-78.6096)">
+			<title>Process.1</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="19.8425" cy="85.5194" width="39.69" height="13.3396"/>
+			<rect x="0" y="78.8496" width="39.685" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="7.4" y="87.92" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape10-61" v:mID="10" v:groupContext="shape" v:layerMember="0" transform="translate(251.808,-26.3632)">
+			<title>Process.10</title>
+			<desc>collect</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="19.8425" cy="85.5194" width="39.69" height="13.3396"/>
+			<rect x="0" y="78.8496" width="39.685" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="8.51" y="87.92" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>collect</text>		</g>
+		<g id="shape35-64" v:mID="35" v:groupContext="shape" v:layerMember="0" transform="translate(246.139,-0.24)">
+			<title>Process.35</title>
+			<desc>accumulate</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="25.5118" cy="85.5194" width="51.03" height="13.3396"/>
+			<rect x="0" y="78.8496" width="51.0236" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="5.04" y="87.92" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>accumulate</text>		</g>
+		<g id="shape14-67" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(256.754,-52.4864)">
+			<title>Process.14</title>
+			<desc>from</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="85.5194" width="29.8" height="13.3396"/>
+			<rect x="0" y="78.8496" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.9" y="87.92" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>from</text>		</g>
+		<g id="shape25-70" v:mID="25" v:groupContext="shape" v:layerMember="1" transform="translate(208.834,-44.9899)">
+			<title>Dynamic connector.25</title>
+			<path d="M0 92.18 L5.31 92.18 A5.31496 5.31496 -180 0 0 10.63 86.87 L10.63 83.69 A5.66929 5.66929 0 0 1 16.3 78.02 L45.16
+						 78.02" class="st5"/>
+		</g>
+		<g id="shape26-75" v:mID="26" v:groupContext="shape" v:layerMember="1" transform="translate(208.834,-46.1015)">
+			<title>Dynamic connector.26</title>
+			<path d="M0 93.29 L5.31 93.29 A5.31496 5.31496 0 0 1 10.63 98.61 L10.63 99.59 A5.66929 5.66929 -180 0 0 16.3 105.26 L40.21
+						 105.26" class="st5"/>
+		</g>
+		<g id="shape27-80" v:mID="27" v:groupContext="shape" v:layerMember="1" transform="translate(208.834,-44.9969)">
+			<title>Dynamic connector.27</title>
+			<path d="M0 92.19 L5.31 92.19 A5.31496 5.31496 0 0 1 10.63 97.5 L10.63 124.61 A5.66929 5.66929 -180 0 0 16.3 130.28 L34.54
+						 130.28" class="st5"/>
+		</g>
+		<g id="shape36-85" v:mID="36" v:groupContext="shape" v:layerMember="1" transform="translate(291.493,-31.9769)">
+			<title>Dynamic connector.36</title>
+			<path d="M0 91.13 L15.12 91.13 A5.66929 5.66929 -180 0 0 20.79 85.46 L20.79 84.74 A5.66929 5.66929 0 0 1 26.46 79.07
+						 L38.34 79.07" class="st5"/>
+		</g>
+		<g id="shape38-90" v:mID="38" v:groupContext="shape" v:layerMember="1" transform="translate(286.547,-59.2117)">
+			<title>Dynamic connector.38</title>
+			<path d="M0 92.24 L20.54 92.24 A5.66929 5.66929 0 0 1 26.21 97.91 L26.21 100.64 A5.66929 5.66929 -180 0 0 31.88 106.31
+						 L43.29 106.31" class="st5"/>
+		</g>
+		<g id="shape39-95" v:mID="39" v:groupContext="shape" v:layerMember="1" transform="translate(291.493,-85.2794)">
+			<title>Dynamic connector.39</title>
+			<path d="M0 92.19 L15.59 92.19 A5.66929 5.66929 0 0 1 21.26 97.86 L21.26 126.71 A5.66929 5.66929 -180 0 0 26.93 132.37
+						 L38.34 132.37" class="st5"/>
+		</g>
+	</g>
+</svg>

Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.vsd
===================================================================
(Binary files differ)

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.svg	                        (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/forall.svg	2007-07-22 22:10:00 UTC (rev 13714)
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 forall.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.3938in"
+		height="0.484719in" viewBox="0 0 244.353 34.8997" xml:space="preserve" color-interpolation-filters="sRGB" class="st7">
+	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#e8eef7;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st2 {fill:#000000;font-family:Arial;font-size:0.666664em}
+		.st3 {font-size:1em}
+		.st4 {marker-end:url(#mrkr2-18);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st5 {fill:#4677bf;fill-opacity:1;stroke:#4677bf;stroke-opacity:1;stroke-width:0.08695652173913}
+		.st6 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+		.st7 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend2">
+			<path d="M 1 1 L 0 0 L 1 -1 L 1 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr2-18" class="st5" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto"
+				markerUnits="strokeWidth">
+			<use xlink:href="#lend2" transform="scale(-11.5,-11.5) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<v:layer v:name="Flowchart" v:index="0"/>
+		<v:layer v:name="Connector" v:index="1"/>
+		<g id="shape2-1" v:mID="2" v:groupContext="shape" v:layerMember="0" transform="translate(27.3422,-2.13018)">
+			<title>Process.132</title>
+			<desc>‘foralll’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="28.2299" width="29.8" height="13.3396"/>
+			<rect x="0" y="21.5601" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="3.56" y="30.63" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+						v:langID="2057">foralll</tspan>’</text>		</g>
+		<g id="shape3-5" v:mID="3" v:groupContext="shape" v:layerMember="0" transform="translate(72.7489,-2.13018)">
+			<title>Process.133</title>
+			<desc>‘(‘</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="28.2299" width="20.01" height="13.3396"/>
+			<rect x="0" y="21.5601" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="30.63" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+						v:langID="2057">(</tspan>‘</text>		</g>
+		<g id="shape4-9" v:mID="4" v:groupContext="shape" v:layerMember="0" transform="translate(189.868,-2.13018)">
+			<title>Process.134</title>
+			<desc>‘)’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="10.0047" cy="28.2299" width="20.01" height="13.3396"/>
+			<rect x="0" y="21.5601" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="6.89" y="30.63" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+						v:langID="2057">)</tspan>’</text>		</g>
+		<g id="shape5-13" v:mID="5" v:groupContext="shape" v:layerMember="1" transform="translate(57.1348,-1.71339)">
+			<title>Dynamic connector.135</title>
+			<path d="M0 27.81 L12.85 27.81" class="st4"/>
+		</g>
+		<g id="shape6-19" v:mID="6" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.985572,-2.96391)">
+			<title>On-page reference.136</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 29.06 A5.83609 5.83609 0 1 1 11.67 29.06 A5.83609 5.83609 0 0 1 0 29.06 Z" class="st1"/>
+		</g>
+		<g id="shape7-21" v:mID="7" v:groupContext="shape" v:layerMember="1;0" transform="translate(232.441,-2.96391)">
+			<title>On-page reference.138</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 29.06 A5.83609 5.83609 0 1 1 11.67 29.06 A5.83609 5.83609 0 0 1 0 29.06 Z" class="st1"/>
+		</g>
+		<g id="shape8-23" v:mID="8" v:groupContext="shape" v:layerMember="1" transform="translate(12.6578,-1.71339)">
+			<title>Dynamic connector.137</title>
+			<path d="M0 27.81 L11.92 27.81" class="st4"/>
+		</g>
+		<g id="shape9-28" v:mID="9" v:groupContext="shape" v:layerMember="1" transform="translate(209.877,-1.71339)">
+			<title>Dynamic connector.131</title>
+			<path d="M0 27.81 L19.8 27.81" class="st4"/>
+		</g>
+		<g id="shape11-33" v:mID="11" v:groupContext="shape" v:layerMember="1" transform="translate(164.8,-1.71339)">
+			<title>Dynamic connector.194</title>
+			<path d="M0 27.81 L22.31 27.81" class="st4"/>
+		</g>
+		<g id="shape13-38" v:mID="13" v:groupContext="shape" v:layerMember="0" transform="translate(116.11,-2.13018)">
+			<title>Process.13</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="24.3453" cy="28.2299" width="48.7" height="13.3396"/>
+			<rect x="0" y="21.5601" width="48.6906" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="11.9" y="30.63" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape15-41" v:mID="15" v:groupContext="shape" v:layerMember="1" transform="translate(92.7584,-1.71339)">
+			<title>Dynamic connector.15</title>
+			<path d="M0 27.81 L20.59 27.81" class="st4"/>
+		</g>
+		<g id="shape16-46" v:mID="16" v:groupContext="shape" v:layerMember="1" transform="translate(164.8,-1.71339)">
+			<title>Dynamic connector.16</title>
+			<path d="M0 27.81 L5.31 27.81 A5.31496 5.31496 -180 0 0 10.63 22.5 L10.63 16.18 A5.66929 5.66929 -180 0 0 4.96 10.51
+						 L-53.65 10.51 A5.66929 5.66929 -180 0 0 -59.32 16.18 L-59.32 22.5 A5.31496 5.31496 -180 0 0 -54.01 27.81
+						 L-51.45 27.81" class="st4"/>
+		</g>
+	</g>
+</svg>

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.svg	                        (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/from.svg	2007-07-22 22:10:00 UTC (rev 13714)
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 from.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.33807in"
+		height="0.245214in" viewBox="0 0 240.341 17.6554" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
+	<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
+
+	<style type="text/css">
+	<![CDATA[
+		.st1 {fill:#e8eef7;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st2 {fill:#000000;font-family:Arial;font-size:0.666664em}
+		.st3 {marker-end:url(#mrkr2-12);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st4 {fill:#4677bf;fill-opacity:1;stroke:#4677bf;stroke-opacity:1;stroke-width:0.08695652173913}
+		.st5 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+		.st6 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	]]>
+	</style>
+
+	<defs id="Markers">
+		<g id="lend2">
+			<path d="M 1 1 L 0 0 L 1 -1 L 1 1 " style="stroke:none"/>
+		</g>
+		<marker id="mrkr2-12" class="st4" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto"
+				markerUnits="strokeWidth">
+			<use xlink:href="#lend2" transform="scale(-11.5,-11.5) "/>
+		</marker>
+	</defs>
+	<g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+		<title>Page-1</title>
+		<v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+				v:shadowOffsetY="-8.50394"/>
+		<v:layer v:name="Flowchart" v:index="0"/>
+		<v:layer v:name="Connector" v:index="1"/>
+		<g id="shape34-1" v:mID="34" v:groupContext="shape" v:layerMember="0" transform="translate(96.618,-2.18562)">
+			<title>Process.34</title>
+			<desc>‘from’</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="10.9856" width="29.8" height="13.3396"/>
+			<rect x="0" y="4.3158" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="5.12" y="13.39" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>‘from’</text>		</g>
+		<g id="shape37-4" v:mID="37" v:groupContext="shape" v:layerMember="0" transform="translate(153.311,-2.18562)">
+			<title>Process.37</title>
+			<desc>expression</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="21.6214" cy="10.9856" width="43.25" height="13.3396"/>
+			<rect x="0" y="4.3158" width="43.2427" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="2.28" y="13.39" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>expression</text>		</g>
+		<g id="shape40-7" v:mID="40" v:groupContext="shape" v:layerMember="1" transform="translate(126.411,-1.76883)">
+			<title>Dynamic connector.40</title>
+			<path d="M0 10.57 L24.14 10.57" class="st3"/>
+		</g>
+		<g id="shape41-13" v:mID="41" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.24,-3.01935)">
+			<title>On-page reference.41</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 11.82 A5.83609 5.83609 0 1 1 11.67 11.82 A5.83609 5.83609 0 0 1 0 11.82 Z" class="st1"/>
+		</g>
+		<g id="shape42-15" v:mID="42" v:groupContext="shape" v:layerMember="1;0" transform="translate(228.429,-3.01935)">
+			<title>On-page reference.42</title>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<path d="M0 11.82 A5.83609 5.83609 0 1 1 11.67 11.82 A5.83609 5.83609 0 0 1 0 11.82 Z" class="st1"/>
+		</g>
+		<g id="shape44-17" v:mID="44" v:groupContext="shape" v:layerMember="1" transform="translate(196.554,-1.76883)">
+			<title>Dynamic connector.44</title>
+			<path d="M0 10.57 L29.12 10.57" class="st3"/>
+		</g>
+		<g id="shape43-22" v:mID="43" v:groupContext="shape" v:layerMember="0" transform="translate(37.9353,-2.13018)">
+			<title>Process.43</title>
+			<desc>pattern</desc>
+			<v:custProps>
+				<v:cp v:nameU="Cost" v:lbl="Cost" v:type="7" v:format="@" v:langID="1033"/>
+				<v:cp v:nameU="Duration" v:lbl="Duration" v:type="2" v:langID="1033"/>
+				<v:cp v:nameU="Resources" v:lbl="Resources" v:langID="1033"/>
+			</v:custProps>
+			<v:userDefs>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/>
+			<v:textRect cx="14.8963" cy="10.9856" width="29.8" height="13.3396"/>
+			<rect x="0" y="4.3158" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+			<text x="2.45" y="13.39" class="st5" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>pattern</text>		</g>
+		<g id="shape46-25" v:mID="46" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-15.9143)">
+			<title>Dynamic connector.46</title>
+			<path d="M0 24.71 L10.63 24.71 L10.63 24.77 L23.26 24.77" class="st3"/>
+		</g>
+		<g id="shape50-30" v:mID="50" v:groupContext="shape" v:layerMember="1" transform="translate(67.7278,-1.74111)">
+			<title>Dynamic connector.50</title>
+			<path d="M0 10.6 L10.63 10.6 L10.63 10.54 L26.13 10.54" class="st3"/>
+		</g>
+	</g>
+</svg>




More information about the jboss-svn-commits mailing list