[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><select pattern></replaceable> <replaceable><constraint patterns></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><select pattern></replaceable> <replaceable><constraint patterns></replaceable> )</programlisting>
+
+ <para>The <emphasis role="bold">forall</emphasis> Conditional Element
+ will evaluate to true when all facts that match the
+ <replaceable><select pattern></replaceable> match all the
+ <replaceable><constraint patterns></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><select pattern></replaceable> and not ( and <replaceable><constraint patterns></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 > 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 >= 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 > 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><result pattern></replaceable> from accumulate( <replaceable><source pattern></replaceable>,
+ init( <replaceable><init code></replaceable> ),
+ action( <replaceable><action code></replaceable> ),
+ reverse( <replaceable><reverse code></replaceable> ),
+ result( <replaceable><result expression></replaceable> ) )
+</programlisting>
+
+ <para>The meaning of each of the elements is the following:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold"><source pattern></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"><init code></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"><action code></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"><reverse code></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 <action code> 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"><result expression></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"><result pattern></emphasis>: this
+ is a regular pattern that the engine tries to match against the
+ object returned from the <result expression>. 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 > 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 > 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 > 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