[jboss-svn-commits] JBL Code SVN: r13709 - 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 13:59:58 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-22 13:59:58 -0400 (Sun, 22 Jul 2007)
New Revision: 13709
Added:
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.svg
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.svg
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.svg
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.svg
Modified:
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.vsd
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.svg
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.png
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.svg
labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/pattern.vsd
Log:
-more language updates
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language
___________________________________________________________________
Name: svn:ignore
+ Thumbs.db
*.~vsd
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 15:32:06 UTC (rev 13708)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/Section-Rule.xml 2007-07-22 17:59:58 UTC (rev 13709)
@@ -218,8 +218,8 @@
</example>
</section>
- <section>
- <title id="RuleLanguage-LHS">Left Hand Side (when)</title>
+ <section id="RuleLanguage-ConditionalElements">
+ <title>Left Hand Side (when) Conditional Elements</title>
<para>The Left Hand Side (LHS) is a common name for the conditional part
of the rule. It consists of zero or more Conditional Elements. If the LHS
@@ -260,1094 +260,1112 @@
end</programlisting>
</example>
- <section id="RuleLanguage-ConditionalElements">
- <title>Conditional Elements</title>
+ <para>Conditional elements work on one or more Columns (which were
+ described above). The most common one is "and" which is implicit when you
+ have multiple Columns in the LHS of a rule that are not connected in
+ anyway. Note that an 'and' cannot have a leading declaration binding like
+ 'or' - this is obvious when you think about it. A declaration can only
+ reference a single Fact, when the 'and' is satisfied it matches more than
+ one fact - which fact would the declaration bind to?</para>
- <para>Conditional elements work on one or more Columns (which were
- described above). The most common one is "and" which is implicit when
- you have multiple Columns in the LHS of a rule that are not connected in
- anyway. Note that an 'and' cannot have a leading declaration binding
- like 'or' - this is obvious when you think about it. A declaration can
- only reference a single Fact, when the 'and' is satisfied it matches
- more than one fact - which fact would the declaration bind to?</para>
+ <section>
+ <title>Pattern</title>
- <section>
+ <para>The Pattern element is the most important Conditional Element. The
+ entity relationship diagram below provides an overview of the various
+ parts that make up the Pattern's constraints and how they work together;
+ each is then covered in more detail with rail road diagrams and
+ examples.</para>
+
+ <figure>
+ <title>Pattern Entity Relationship Diagram</title>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="patternER.svg" format="SVG"
+ role="" />
+ </imageobject>
+
+ <imageobject>
+ <imagedata align="center" fileref="patternER.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>At the top of the ER diagram you can see that the pattern consists
+ of zero or more constriants and has an optional pattern binding. The
+ rail road diagram below shows the syntax for this.</para>
+
+ <figure>
<title>Pattern</title>
- <para>The Pattern element is the most important Conditional Element.
- The entity relationship diagram below provides an overview of the
- various parts that make up the Pattern's constraints and how they work
- together; each is then covered in more detail with rail road diagrams
- and examples.</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="pattern.svg" format="SVG"
+ role="" />
+ </imageobject>
- <figure>
- <title>Pattern Entity Relationship Diagram</title>
+ <imageobject>
+ <imagedata align="center" fileref="pattern.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="patternER.svg" format="SVG"
- role="" />
- </imageobject>
+ <para>At the simplest, with no constraints, it simply matches against a
+ type, in the following case the type is "Cheese". This means the pattern
+ will match against all Cheese objects in the Working Memory.</para>
- <imageobject>
- <imagedata align="center" fileref="patternER.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <example>
+ <title>Pattern</title>
- <para>At the top of the ER diagram you can see that the pattern
- consists of zero or more constriants and has an optional pattern
- binding. The rail road diagram below shows the syntax for this.</para>
+ <programlisting>Cheese( )</programlisting>
+ </example>
- <figure>
- <title>Pattern</title>
+ <para>To be able to refer to the matched object use a pattern binding
+ variable such as '$c'. While this example variable is prefixed with a $
+ symbol, it is optional, but can be useful in complex rules as it helps
+ to more easily differentiation between variables and fields.</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="pattern.svg" format="SVG"
- role="" />
- </imageobject>
+ <example>
+ <title>Pattern</title>
- <imageobject>
- <imagedata align="center" fileref="pattern.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <programlisting>$c : Cheese( )</programlisting>
+ </example>
- <para>At the simplest, with no constraints, it simply matches against
- a type, in the following case the type is "Cheese". This means the
- pattern will match against all Cheese objects in the Working
- Memory.</para>
+ <para>Inside of the Pattern parenthesis is where all the action happens.
+ A constraint can be either a Field Constraint, Inline Eval (called a
+ predicate in 3.0) or a Constraint Group. Constraints can be seperated by
+ the following symboles ',', '&&' or '||'.</para>
- <example>
- <title>Pattern</title>
+ <figure>
+ <title>Constraints</title>
- <programlisting>Cheese( )</programlisting>
- </example>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="constraints.svg" format="SVG"
+ role="" />
+ </imageobject>
- <para>To be able to refer to the matched object use a pattern binding
- variable such as '$c'. While this example variable is prefixed with a
- $ symbol, it is optional, but can be useful in complex rules as it
- helps to more easily differentiation between variables and
- fields.</para>
+ <imageobject>
+ <imagedata align="center" fileref="constraints.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <example>
- <title>Pattern</title>
+ <figure>
+ <title>Constraint</title>
- <programlisting>$c : Cheese( )</programlisting>
- </example>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="constraint.svg" format="SVG"
+ role="" />
+ </imageobject>
- <para>Inside of the Pattern parenthesis is where all the action
- happens. A constraint can be either a Field Constraint, Inline Eval
- (called a predicate in 3.0) or a Constraint Group. Constraints can be
- seperated by the following symboles ',', '&&' or '||'.</para>
+ <imageobject>
+ <imagedata align="center" fileref="constraint.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <figure>
- <title>Constraints</title>
+ <figure>
+ <title>Group Constraint</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="constraints.svg" format="SVG"
- role="" />
- </imageobject>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="constraintGroup.svg"
+ format="SVG" role="" />
+ </imageobject>
- <imageobject>
- <imagedata align="center" fileref="constraints.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <imageobject>
+ <imagedata align="center" fileref="constraintGroup.png"
+ format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>',' and '&&' when used without '||' are equivalent;. ','
+ is provided as a less verbose '&&' connective for more simple
+ field constraints.</para>
+
+ <example>
+ <title>Equivalent connectives</title>
+
+ <programlisting>Cheese( type == "stilton", price < 10 ) // valid
+Cheese( type == "stilton" && price < 10 ) valid</programlisting>
+ </example>
+
+ <para>However only '&&' can be used with '||'.</para>
+
+ <example>
+ <title>Not Equivalent connectives</title>
+
+ <programlisting>Cheese( type == "stilton", price < 10 || age == "mature" ) // invalid
+Cheese( type == "stilton" && price < 10 || age == "mature") // valid</programlisting>
+ </example>
+
+ <para>Constraints can be grouped using parenthesis; notice from the
+ railroad and the ER diagram that this provides a recursive nature to the
+ use of constraints in a Pattern.</para>
+
+ <example>
+ <title>Grouping with Parenthesis</title>
+
+ <programlisting>Cheese( type == "stilton", ( price < 10 || age == "mature" ) ) // valid
+Cheese( type == "stilton" && ( price < 10 || age == "mature" ) ) // valid</programlisting>
+ </example>
+
+ <section>
+ <title>Field Constraints</title>
+
+ <para>A Field constraint specifies a restriction to be used on a field
+ name; the field name can have an optional variable binding.</para>
+
<figure>
- <title>Constraint</title>
+ <title>fieldConstraint</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="constraint.svg" format="SVG"
- role="" />
+ <imagedata align="center" fileref="fieldConstraint.svg"
+ format="SVG" role="" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="constraint.png" format="PNG"
- role="" />
+ <imagedata align="center" fileref="fieldConstraint.png"
+ format="PNG" role="" />
</imageobject>
</mediaobject>
</figure>
+ <para>There are three types of restrictions; Single Value Restriction,
+ Compount Value Restriction and Multi Restrictoin.</para>
+
<figure>
- <title>Group Constraint</title>
+ <title>restriction</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="constraintGroup.svg"
- format="SVG" role="" />
+ <imagedata align="center" fileref="restriction.svg" format="SVG"
+ role="" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="constraintGroup.png"
- format="PNG" role="" />
+ <imagedata align="center" fileref="restriction.png" format="PNG"
+ role="" />
</imageobject>
</mediaobject>
</figure>
- <para>',' and '&&' when used without '||' are equivalent;. ','
- is provided as a less verbose '&&' connective for more simple
- field constraints.</para>
+ <para>A field is an accessible method on the object. If your model
+ objects follow the java bean pattern, then fields are exposed using
+ "getXXX" or "isXXX" methods (these are methods that take no arguments,
+ and return something). You can access fields either by using the
+ bean-name convention (so "getType" can be accessed as "type").</para>
- <example>
- <title>Equivalent connectives</title>
+ <para>For example, refering to our Cheese class, the following :
+ Cheese(type == ...) uses the getType() method on the a cheese
+ instance. You can also access non getter methods, like "toString()" on
+ the Object for instance (in which case, you do Cheese(toString == ..)
+ - you use the full name of the method with correct capitalisation, but
+ not brackets). Do please make sure that you are accessing methods that
+ take no parameters, and are in-fact "accessors" (as in, they don't
+ change the state of the object in a way that may effect the rules -
+ remember that the rule engine effectively caches the results of its
+ matching inbetween invocations to make it faster).</para>
- <programlisting>Cheese( type == "stilton", price < 10 ) // valid
-Cheese( type == "stilton" && price < 10 ) valid</programlisting>
- </example>
+ <section>
+ <title>JavaBeans as facts</title>
- <para>However only '&&' can be used with '||'.</para>
+ <para>A field is an accessible method on the object. If your model
+ objects follow the java bean pattern, then fields are exposed using
+ "getXXX" or "isXXX" methods (these are methods that take no
+ arguments, and return something). You can access fields either by
+ using the bean-name convention (so "getType" can be accessed as
+ "type") - we use the standard jdk Introspector class to do this
+ mapping.</para>
- <example>
- <title>Not Equivalent connectives</title>
+ <para>For example, refering to our Cheese class, the following :
+ Cheese(type == ...) uses the getType() method on the a cheese
+ instance. If a field name cannot be found it will resort to calling
+ the name as a no argument method; "toString()" on the Object for
+ instance can be used with Cheese(toString == ..) - you use the full
+ name of the method with correct capitalisation, but not brackets. Do
+ please make sure that you are accessing methods that take no
+ parameters, and are in-fact "accessors" (as in, they don't change
+ the state of the object in a way that may effect the rules -
+ remember that the rule engine effectively caches the results of its
+ matching inbetween invocations to make it faster).</para>
+ </section>
- <programlisting>Cheese( type == "stilton", price < 10 || age == "mature" ) // invalid
-Cheese( type == "stilton" && price < 10 || age == "mature") // valid</programlisting>
- </example>
-
- <para>Constraints can be grouped using parenthesis; notice from the
- railroad and the ER diagram that this provides a recursive nature to
- the use of constraints in a Pattern.</para>
-
- <example>
- <title>Grouping with Parenthesis</title>
-
- <programlisting>Cheese( type == "stilton", ( price < 10 || age == "mature" ) ) // valid
-Cheese( type == "stilton" && ( price < 10 || age == "mature" ) ) // valid</programlisting>
- </example>
-
<section>
- <title>Field Constraints</title>
+ <title>Values</title>
- <para>A Field constraint specifies a restriction to be used on a
- field name; the field name can have an optional variable
- binding.</para>
+ <para>The field constraints can take a number of values; including
+ literal, qualifiedIdentifier (enum), variable and
+ returnValue.</para>
<figure>
- <title>fieldConstraint</title>
+ <title>literal</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="fieldConstraint.svg"
- format="SVG" role="" />
+ <imagedata align="center" fileref="literal.svg" format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="fieldConstraint.png"
- format="PNG" role="" />
+ <imagedata align="center" fileref="literal.png" format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <para>There are three types of restrictions; Single Value
- Restriction, Compount Value Restriction and Multi
- Restrictoin.</para>
-
<figure>
- <title>restriction</title>
+ <title>qualifiedIdentifier</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="restriction.svg"
- format="SVG" role="" />
+ <imagedata align="center" fileref="qualifiedIdentifier.svg"
+ format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="restriction.png"
- format="PNG" role="" />
+ <imagedata align="center" fileref="qualifiedIdentifier.png"
+ format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <para>A field is an accessible method on the object. If your model
- objects follow the java bean pattern, then fields are exposed using
- "getXXX" or "isXXX" methods (these are methods that take no
- arguments, and return something). You can access fields either by
- using the bean-name convention (so "getType" can be accessed as
- "type").</para>
+ <figure>
+ <title>variable</title>
- <para>For example, refering to our Cheese class, the following :
- Cheese(type == ...) uses the getType() method on the a cheese
- instance. You can also access non getter methods, like "toString()"
- on the Object for instance (in which case, you do Cheese(toString ==
- ..) - you use the full name of the method with correct
- capitalisation, but not brackets). Do please make sure that you are
- accessing methods that take no parameters, and are in-fact
- "accessors" (as in, they don't change the state of the object in a
- way that may effect the rules - remember that the rule engine
- effectively caches the results of its matching inbetween invocations
- to make it faster).</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="identifier.svg"
+ format="SVG" />
+ </imageobject>
- <section>
- <title>JavaBeans as facts</title>
+ <imageobject>
+ <imagedata align="center" fileref="identifier.png"
+ format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>A field is an accessible method on the object. If your model
- objects follow the java bean pattern, then fields are exposed
- using "getXXX" or "isXXX" methods (these are methods that take no
- arguments, and return something). You can access fields either by
- using the bean-name convention (so "getType" can be accessed as
- "type") - we use the standard jdk Introspector class to do this
- mapping.</para>
+ <figure>
+ <title>returnValue</title>
- <para>For example, refering to our Cheese class, the following :
- Cheese(type == ...) uses the getType() method on the a cheese
- instance. If a field name cannot be found it will resort to
- calling the name as a no argument method; "toString()" on the
- Object for instance can be used with Cheese(toString == ..) - you
- use the full name of the method with correct capitalisation, but
- not brackets. Do please make sure that you are accessing methods
- that take no parameters, and are in-fact "accessors" (as in, they
- don't change the state of the object in a way that may effect the
- rules - remember that the rule engine effectively caches the
- results of its matching inbetween invocations to make it
- faster).</para>
- </section>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="returnValue.svg"
+ format="SVG" />
+ </imageobject>
- <section>
- <title>Values</title>
+ <imageobject>
+ <imagedata align="center" fileref="returnValue.png"
+ format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>The field constraints can take a number of values; including
- literal, qualifiedIdentifier (enum), variable and
- returnValue.</para>
+ <para>You can do checks against fields that are or maybe null, using
+ == and != as you would expect, and the literal "null" keyword, like:
+ Cheese(type != null). If a field is null the evaluator will not
+ throw an expception and will only return true if the value is a null
+ check. Coercion is always attempted if the field and the value are
+ of different types; exceptions will be thrown if bad coercions are
+ attempted. i.e. if "ten" is provided as a string in a number
+ evaluator, where as "10" would coerce to a numeric 10. Coercion is
+ always in favour of the field type and not the value type.</para>
+ </section>
- <figure>
- <title>literal</title>
+ <section>
+ <title>Single Value Restriction</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="literal.svg" format="SVG" />
- </imageobject>
+ <figure>
+ <title>singleValueRestriction</title>
- <imageobject>
- <imagedata align="center" fileref="literal.png" format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="singleValueRestriction.svg"
+ format="SVG" role="" />
+ </imageobject>
- <figure>
- <title>qualifiedIdentifier</title>
+ <imageobject>
+ <imagedata align="center" fileref="singleValueRestriction.png"
+ format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="qualifiedIdentifier.svg"
- format="SVG" />
- </imageobject>
+ <section>
+ <title>Operators</title>
- <imageobject>
- <imagedata align="center" fileref="qualifiedIdentifier.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
-
<figure>
- <title>variable</title>
+ <title>Operators</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="identifier.svg"
+ <imagedata align="center" fileref="operator.svg"
format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="identifier.png"
+ <imagedata align="center" fileref="operator.png"
format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <figure>
- <title>returnValue</title>
+ <para>Valid operators are dependent on the field type. Generally
+ they are self explanatory based on the type of data: for instance,
+ for date fields, "<" means "before" and so on. "Matches" is
+ only applicable to string fields, "contains" and "not contains" is
+ only applicable to Collection type fields. These operators can be
+ used with any value and coercion to the correct value for the
+ evaluator and filed will be attempted, as mention in hte "Values"
+ secion.</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="returnValue.svg"
- format="SVG" />
- </imageobject>
+ <simplesect>
+ <title>Matches Operator</title>
- <imageobject>
- <imagedata align="center" fileref="returnValue.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <para>Matches a field against any valid Java <indexterm>
+ <primary>regular expression</primary>
+ </indexterm>Regular Expression. Typically that regexp is a
+ String, but variables that resolve to a valid regexp are also
+ allowed.</para>
- <para>You can do checks against fields that are or maybe null,
- using == and != as you would expect, and the literal "null"
- keyword, like: Cheese(type != null). If a field is null the
- evaluator will not throw an expception and will only return true
- if the value is a null check. Coercion is always attempted if the
- field and the value are of different types; exceptions will be
- thrown if bad coercions are attempted. i.e. if "ten" is provided
- as a string in a number evaluator, where as "10" would coerce to a
- numeric 10. Coercion is always in favour of the field type and not
- the value type.</para>
- </section>
+ <example>
+ <title>Regular Expression Constraint</title>
- <section>
- <title>Single Value Restriction</title>
+ <programlisting>Cheese( type matches "(Buffulo)?\\S*Mozerella" )</programlisting>
+ </example>
+ </simplesect>
- <figure>
- <title>singleValueRestriction</title>
+ <simplesect>
+ <title>Not Matches Operator</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center"
- fileref="singleValueRestriction.svg" format="SVG"
- role="" />
- </imageobject>
+ <para>Any valid Java <indexterm>
+ <primary>regular expression</primary>
+ </indexterm>Regular Expression can be used to match String
+ fields. Returns true when the match is false. Typically that
+ regexp is a String, but variables that resolve to a valid regexp
+ are also allowed.</para>
- <imageobject>
- <imagedata align="center"
- fileref="singleValueRestriction.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <example>
+ <title>Regular Expression Constraint</title>
- <section>
- <title>Operators</title>
+ <programlisting>Cheese( type not matches "(Buffulo)?\\S*Mozerella" )</programlisting>
+ </example>
+ </simplesect>
- <figure>
- <title>Operators</title>
+ <simplesect>
+ <title>Contains Operator</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="operator.svg"
- format="SVG" />
- </imageobject>
+ <para><literal>'contains'</literal> is used to check if a
+ field's <indexterm>
+ <primary>Collection</primary>
+ </indexterm>Collection contains the specified value.</para>
- <imageobject>
- <imagedata align="center" fileref="operator.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <example>
+ <title>Contains with Collections</title>
- <para>Valid operators are dependent on the field type. Generally
- they are self explanatory based on the type of data: for
- instance, for date fields, "<" means "before" and so on.
- "Matches" is only applicable to string fields, "contains" and
- "not contains" is only applicable to Collection type fields.
- These operators can be used with any value and coercion to the
- correct value for the evaluator and filed will be attempted, as
- mention in hte "Values" secion.</para>
-
- <simplesect>
- <title>Matches Operator</title>
-
- <para>Matches a field against any valid Java <indexterm>
- <primary>regular expression</primary>
- </indexterm>Regular Expression. Typically that regexp is a
- String, but variables that resolve to a valid regexp are also
- allowed.</para>
-
- <example>
- <title>Regular Expression Constraint</title>
-
- <programlisting>Cheese( type matches "(Buffulo)?\\S*Mozerella" )</programlisting>
- </example>
- </simplesect>
-
- <simplesect>
- <title>Not Matches Operator</title>
-
- <para>Any valid Java <indexterm>
- <primary>regular expression</primary>
- </indexterm>Regular Expression can be used to match String
- fields. Returns true when the match is false. Typically that
- regexp is a String, but variables that resolve to a valid
- regexp are also allowed.</para>
-
- <example>
- <title>Regular Expression Constraint</title>
-
- <programlisting>Cheese( type not matches "(Buffulo)?\\S*Mozerella" )</programlisting>
- </example>
- </simplesect>
-
- <simplesect>
- <title>Contains Operator</title>
-
- <para><literal>'contains'</literal> is used to check if a
- field's <indexterm>
- <primary>Collection</primary>
- </indexterm>Collection contains the specified value.</para>
-
- <example>
- <title>Contains with Collections</title>
-
- <programlisting>CheeseCounter( cheeses contains "stilton" ) //contains with a String literal
+ <programlisting>CheeseCounter( cheeses contains "stilton" ) //contains with a String literal
CheeseCounter( cheeses contains $var ) //contains with a variable</programlisting>
- </example>
- </simplesect>
+ </example>
+ </simplesect>
- <simplesect>
- <title>not containts</title>
+ <simplesect>
+ <title>not containts</title>
- <para><literal>'not contains'</literal> is used to check if a
- field's <indexterm>
- <primary>Collection</primary>
- </indexterm>Collection does not contains an object.</para>
+ <para><literal>'not contains'</literal> is used to check if a
+ field's <indexterm>
+ <primary>Collection</primary>
+ </indexterm>Collection does not contains an object.</para>
- <example>
- <title>Literal Constraints with Collections</title>
+ <example>
+ <title>Literal Constraints with Collections</title>
- <programlisting>CheeseCounter( cheeses not contains "cheddar" ) //contains with a String literal
+ <programlisting>CheeseCounter( cheeses not contains "cheddar" ) //contains with a String literal
CheeseCounter( cheeses not contains $var ) //contains with a variable</programlisting>
- </example>
- </simplesect>
+ </example>
+ </simplesect>
- <simplesect>
- <title>memberof</title>
+ <simplesect>
+ <title>memberof</title>
- <para><literal>'memberof' is used to check if a field is a
- member of a collection; that collection must be be a
- variable.</literal></para>
+ <para><literal>'memberof' is used to check if a field is a
+ member of a collection; that collection must be be a
+ variable.</literal></para>
- <example>
- <title>Literal Constraints with Collections</title>
+ <example>
+ <title>Literal Constraints with Collections</title>
- <programlisting>CheeseCounter( cheese memberof $matureCheeses )</programlisting>
- </example>
- </simplesect>
+ <programlisting>CheeseCounter( cheese memberof $matureCheeses )</programlisting>
+ </example>
+ </simplesect>
- <simplesect>
- <title>not memberof</title>
+ <simplesect>
+ <title>not memberof</title>
- <para><literal>'not memberof' is used to check if a field is
- not a member of a collection; that collection must be be a
- variable.</literal></para>
+ <para><literal>'not memberof' is used to check if a field is not
+ a member of a collection; that collection must be be a
+ variable.</literal></para>
- <example>
- <title>Literal Constraints with Collections</title>
+ <example>
+ <title>Literal Constraints with Collections</title>
- <programlisting>CheeseCounter( cheese not memberof $matureCheeses )</programlisting>
- </example>
- </simplesect>
- </section>
+ <programlisting>CheeseCounter( cheese not memberof $matureCheeses )</programlisting>
+ </example>
+ </simplesect>
+ </section>
- <section>
- <title>Literal Restrictions</title>
+ <section>
+ <title>Literal Restrictions</title>
- <para>Literal restrrictions are the simplest for of restrictions
- and evaluate a field against a specified literal; numeric, date,
- string and boolean.</para>
+ <para>Literal restrrictions are the simplest for of restrictions
+ and evaluate a field against a specified literal; numeric, date,
+ string and boolean.</para>
- <figure>
- <title>literalRestriction</title>
+ <figure>
+ <title>literalRestriction</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="literalRestriction.svg"
- format="SVG" />
- </imageobject>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="literalRestriction.svg"
+ format="SVG" />
+ </imageobject>
- <imageobject>
- <imagedata align="center" fileref="literalRestriction.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <imageobject>
+ <imagedata align="center" fileref="literalRestriction.png"
+ format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>Literal Restrictions using the '==' operator, provide for
- faster execution as we can index using hashing to improve
- performance;</para>
+ <para>Literal Restrictions using the '==' operator, provide for
+ faster execution as we can index using hashing to improve
+ performance;</para>
- <simplesect>
- <title>Numeric</title>
+ <simplesect>
+ <title>Numeric</title>
- <para>All standard java numeric primitives are
- supported.</para>
+ <para>All standard java numeric primitives are supported.</para>
- <example>
- <title>Numeric Literal Restriction</title>
+ <example>
+ <title>Numeric Literal Restriction</title>
- <programlisting>Cheese( quantity == 5 )</programlisting>
- </example>
- </simplesect>
+ <programlisting>Cheese( quantity == 5 )</programlisting>
+ </example>
+ </simplesect>
- <simplesect>
- <title>Date</title>
+ <simplesect>
+ <title>Date</title>
- <para>The date format "dd-mmm-yyyy" is supported by default.
- You can customise this by providing an alternative date format
- mask as a System property ("drools.dateformat" is the name of
- the property). If more control is required, use the predicate
- constraint.</para>
+ <para>The date format "dd-mmm-yyyy" is supported by default. You
+ can customise this by providing an alternative date format mask
+ as a System property ("drools.dateformat" is the name of the
+ property). If more control is required, use the predicate
+ constraint.</para>
- <example>
- <title>Date Literal Restriction</title>
+ <example>
+ <title>Date Literal Restriction</title>
- <programlisting>Cheese( bestBefore < "27-Oct-2007" )</programlisting>
- </example>
- </simplesect>
+ <programlisting>Cheese( bestBefore < "27-Oct-2007" )</programlisting>
+ </example>
+ </simplesect>
- <simplesect>
- <title>String</title>
+ <simplesect>
+ <title>String</title>
- <para>Any valid Java String is allowed.</para>
+ <para>Any valid Java String is allowed.</para>
- <example>
- <title>String Literal Restriction</title>
+ <example>
+ <title>String Literal Restriction</title>
- <programlisting>Cheese( type == "stilton" )</programlisting>
- </example>
- </simplesect>
+ <programlisting>Cheese( type == "stilton" )</programlisting>
+ </example>
+ </simplesect>
- <simplesect>
- <title>Boolean</title>
+ <simplesect>
+ <title>Boolean</title>
- <para>only true or false can be used. 0 and 1 are not
- recognised, nor is <literal>Cheese ( smelly )</literal> is not
- allowed</para>
+ <para>only true or false can be used. 0 and 1 are not
+ recognised, nor is <literal>Cheese ( smelly )</literal> is not
+ allowed</para>
- <example>
- <title>Boolean Literal Restriction</title>
-
- <programlisting>Cheese( smelly == true )</programlisting>
- </example>
- </simplesect>
-
- <simplesect>
- <title>Qualified Identifier</title>
-
- <para>Enums can be used as well, both jdk1.4 and jdk5 style
- enums are supported - for the later you must be executing on a
- jdk5 environment.</para>
-
- <example>
- <title>Boolean Literal Restriction</title>
-
- <programlisting>Cheese( smelly == SomeClass.TRUE )</programlisting>
- </example>
- </simplesect>
- </section>
-
- <section>
- <title>Bound Variable Restriction</title>
-
- <figure>
- <title>variableRestriction</title>
-
- <mediaobject>
- <imageobject>
- <imagedata align="center"
- fileref="variableRestriction.svg" format="SVG" />
- </imageobject>
-
- <imageobject>
- <imagedata align="center"
- fileref="variableRestriction.png" format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>Variables can be bound to Facts and their Fields and then
- used in subsequent Field Constraints. A bound variable is called
- a <indexterm>
- <primary>declaration</primary>
- </indexterm>Declaration. Valid operators are determined by the
- type of the field being constrained; coersion will be attempted
- where possible. Bound Variable Restrictions using '==' operator,
- provide for very fast execution as we can index using hashing to
- improve performance.</para>
-
<example>
- <title>Bound Field using '==' operator</title>
+ <title>Boolean Literal Restriction</title>
- <programlisting>Person( likes : favouriteCheese )
-Cheese( type == likes )</programlisting>
-
- <para>'likes' is our variable, our Declaration, that is bound
- to the favouriteCheese field for any matching Person instance
- and is used to constrain the type of Cheese in the following
- Pattern. Any valid java variable name can be used, including
- '$'; which you will often see used to help differentiate
- declarations from fields. The exampe below shows a declaration
- bound to the Patterns Object Type instance itself and used
- with a 'contains' operator, note the optional use of '$' this
- time.</para>
+ <programlisting>Cheese( smelly == true )</programlisting>
</example>
+ </simplesect>
- <example>
- <title>Bound Fact using 'contains' operator</title>
+ <simplesect>
+ <title>Qualified Identifier</title>
- <programlisting>$stilton : Cheese( type == "stilton" )
-Cheesery( cheeses contains $stilton )</programlisting>
- </example>
- </section>
+ <para>Enums can be used as well, both jdk1.4 and jdk5 style
+ enums are supported - for the later you must be executing on a
+ jdk5 environment.</para>
- <section>
- <title>Return Value Restriction</title>
-
- <figure>
- <title>returnValueRestriction</title>
-
- <mediaobject>
- <imageobject>
- <imagedata align="center"
- fileref="returnValueRestriction.svg"
- format="SVG" />
- </imageobject>
-
- <imageobject>
- <imagedata align="center"
- fileref="returnValueRestriction.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
-
- <para>A <indexterm>
- <primary>Return Value</primary>
- </indexterm>Return Value restrriction can use any valid Java
- primitive or object. Avoid using any Drools keywords as
- Declaration identifiers. Functions used in a Return v</para>
-
- <para>Value Restriction must return time constant results.
- Previously bound declarations can be used in the expression.
- </para>
-
<example>
- <title>Return Value Restriction</title>
+ <title>Boolean Literal Restriction</title>
- <programlisting>Person( girlAge : age, sex == "F" )
-Person( age == ( girlAge + 2) ), sex == 'M' )
-</programlisting>
+ <programlisting>Cheese( smelly == SomeClass.TRUE )</programlisting>
</example>
- </section>
+ </simplesect>
</section>
<section>
- <title>Compound Value Restriction</title>
+ <title>Bound Variable Restriction</title>
- <para>The compound value restriction is used where there is more
- than one possible value, currently only the 'in' and 'not in'
- evaluators support this. The operator takes a parenthesis enclosed
- comma seperated list of values, which can be a variable, literla,
- return value or qualified identifier.The 'in' and 'not in'
- evaluators are actually sugar and are rewriten as a multi
- restriction list of != and == restrictions.</para>
-
<figure>
- <title>compoundValueRestriction</title>
+ <title>variableRestriction</title>
<mediaobject>
<imageobject>
- <imagedata align="center"
- fileref="compoundValueRestriction.svg"
- format="SVG" role="" />
+ <imagedata align="center" fileref="variableRestriction.svg"
+ format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center"
- fileref="compoundValueRestriction.png"
- format="PNG" role="" />
+ <imagedata align="center" fileref="variableRestriction.png"
+ format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <para></para>
+ <para>Variables can be bound to Facts and their Fields and then
+ used in subsequent Field Constraints. A bound variable is called a
+ <indexterm>
+ <primary>declaration</primary>
+ </indexterm>Declaration. Valid operators are determined by the
+ type of the field being constrained; coersion will be attempted
+ where possible. Bound Variable Restrictions using '==' operator,
+ provide for very fast execution as we can index using hashing to
+ improve performance.</para>
<example>
- <title>Compound Restriction using 'in'</title>
+ <title>Bound Field using '==' operator</title>
- <programlisting>Person( $cheese : favouriteCheese )
-Cheese( type in ( "stilton", "cheddar", $cheese )
-</programlisting>
+ <programlisting>Person( likes : favouriteCheese )
+Cheese( type == likes )</programlisting>
+
+ <para>'likes' is our variable, our Declaration, that is bound to
+ the favouriteCheese field for any matching Person instance and
+ is used to constrain the type of Cheese in the following
+ Pattern. Any valid java variable name can be used, including
+ '$'; which you will often see used to help differentiate
+ declarations from fields. The exampe below shows a declaration
+ bound to the Patterns Object Type instance itself and used with
+ a 'contains' operator, note the optional use of '$' this
+ time.</para>
</example>
+
+ <example>
+ <title>Bound Fact using 'contains' operator</title>
+
+ <programlisting>$stilton : Cheese( type == "stilton" )
+Cheesery( cheeses contains $stilton )</programlisting>
+ </example>
</section>
<section>
- <title>Multi Restriction</title>
+ <title>Return Value Restriction</title>
- <para>Multi restriction allows you to place more than restriction
- on a field using the '&&' or '||' restriction connectives,
- grouping via parenthesis is also allowed; which adds a recursive
- nature to this restriction.</para>
-
<figure>
- <title>multiRestriction</title>
+ <title>returnValueRestriction</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="multiRestriction.svg"
- format="SVG" role="" />
+ <imagedata align="center"
+ fileref="returnValueRestriction.svg" format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="multiRestriction.png"
- format="PNG" role="" />
+ <imagedata align="center"
+ fileref="returnValueRestriction.png" format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <figure>
- <title>restrictionGroup</title>
+ <para>A <indexterm>
+ <primary>Return Value</primary>
+ </indexterm>Return Value restrriction can use any valid Java
+ primitive or object. Avoid using any Drools keywords as
+ Declaration identifiers. Functions used in a Return v</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="restrictionGroup.svg"
- format="SVG" role="" />
- </imageobject>
+ <para>Value Restriction must return time constant results.
+ Previously bound declarations can be used in the
+ expression.</para>
- <imageobject>
- <imagedata align="center" fileref="restrictionGroup.png"
- format="PNG" role="" />
- </imageobject>
- </mediaobject>
- </figure>
-
- <para></para>
-
<example>
- <title>Multi Restriction</title>
+ <title>Return Value Restriction</title>
- <programlisting>Person( age > 30 && < 40 ) // simple multi restriction using a single &&
-Person( age ( (> 30 && < 40) || (> 20 && < 20) ) ) // more complex multi restriction using groupings of multi restrictions
-Person( age > 30 && < 40 || location == "london" ) // mixing muti restrictions with constraint connectives</programlisting>
+ <programlisting>Person( girlAge : age, sex == "F" )
+Person( age == ( girlAge + 2) ), sex == 'M' )
+</programlisting>
</example>
</section>
</section>
<section>
- <title>Inline Eval Constraints</title>
+ <title>Compound Value Restriction</title>
+ <para>The compound value restriction is used where there is more
+ than one possible value, currently only the 'in' and 'not in'
+ evaluators support this. The operator takes a parenthesis enclosed
+ comma seperated list of values, which can be a variable, literla,
+ return value or qualified identifier.The 'in' and 'not in'
+ evaluators are actually sugar and are rewriten as a multi
+ restriction list of != and == restrictions.</para>
+
<figure>
- <title>Inline Eval Expression</title>
+ <title>compoundValueRestriction</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="inlineEvalConstraint.svg"
- format="SVG" />
+ <imagedata align="center"
+ fileref="compoundValueRestriction.svg" format="SVG"
+ role="" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="inlineEvalConstraint.png"
- format="PNG" />
+ <imagedata align="center"
+ fileref="compoundValueRestriction.png" format="PNG"
+ role="" />
</imageobject>
</mediaobject>
</figure>
- <para>A <indexterm>
- <primary>Predicate</primary>
- </indexterm>inline-eval constraint can use any valid dialect
- expression as long as it evaluated to a primitive boolean - avoid
- using any Drools keywords as Declaration identifiers. Any previous
- bound variable, from the current or previous pattern, can be used;
- autovivification is also used to auto create field binding
- variables. When an identifier is found that is not a current
- variable the builder looks to see if the identifier is a field on
- the current object type, if it is the field is auto created as a
- variable of the same name; this is autovivification of field
- varables inside of inline evals.</para>
+ <para></para>
- <para>This example will find all pairs of male/femal people where
- the male is 2 years older than the female; the girlAge variable is
- auto created as part of the autovivification process.</para>
-
<example>
- <title>Return Value operator</title>
+ <title>Compound Restriction using 'in'</title>
- <programlisting>Person( girlAge : age, sex = "F" )
-Person( eval( girlAge == boyAge + 2 ), sex = 'M' )
+ <programlisting>Person( $cheese : favouriteCheese )
+Cheese( type in ( "stilton", "cheddar", $cheese )
</programlisting>
</example>
</section>
<section>
- <title>Nested Accessors</title>
+ <title>Multi Restriction</title>
- <para>Drools does allow for nested accessors in in the field
- constraints using the MVEL accessor graph notation. Field
- constraints involving nested accessors are actually re-written as an
- MVEL dialect inline-eval. Care should be taken when using nested
- accessors as the Working Memory is not aware of any of the nested
- values, and do not know when they change; they should be considered
- immutable while any of their parent references are inserted into the
- Working Memory. If you wish to modify a nested value you should
- remove he parent objects first and re-assert afterwards. If you only
- have a single parent at the root of the graph you, when in the MVEL
- dialect, you can use the 'modify' keyword and its block setters to
- write the nested accessor assingments while retracting and inserting
- the the root parent object as required. Nested accessors can be used
- either side of the operator symbol.</para>
+ <para>Multi restriction allows you to place more than restriction on
+ a field using the '&&' or '||' restriction connectives,
+ grouping via parenthesis is also allowed; which adds a recursive
+ nature to this restriction.</para>
- <example>
- <title>Nested Accessors</title>
+ <figure>
+ <title>multiRestriction</title>
- <programlisting>$p : Person( )
-Pet( owner == $p, age > $p.children[0].age ) // Find a pet who is older than their owners first born child</programlisting>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="multiRestriction.svg"
+ format="SVG" role="" />
+ </imageobject>
- <para>is internally rewriten as an MVEL inline eval:</para>
+ <imageobject>
+ <imagedata align="center" fileref="multiRestriction.png"
+ format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <programlisting>$p : Person( )
-Pet( owner == $p, eval( age > $p.children[0].age ) ) // Find a pet who is older than their owners first born child</programlisting>
+ <figure>
+ <title>restrictionGroup</title>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="restrictionGroup.svg"
+ format="SVG" role="" />
+ </imageobject>
+
+ <imageobject>
+ <imagedata align="center" fileref="restrictionGroup.png"
+ format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para></para>
+
+ <example>
+ <title>Multi Restriction</title>
+
+ <programlisting>Person( age > 30 && < 40 ) // simple multi restriction using a single &&
+Person( age ( (> 30 && < 40) || (> 20 && < 20) ) ) // more complex multi restriction using groupings of multi restrictions
+Person( age > 30 && < 40 || location == "london" ) // mixing muti restrictions with constraint connectives</programlisting>
</example>
</section>
</section>
<section>
- <title>'and'</title>
+ <title>Inline Eval Constraints</title>
<figure>
- <title>and</title>
+ <title>Inline Eval Expression</title>
<mediaobject>
<imageobject>
- <imagedata align="center" fileref="and.svg" format="SVG" role="" />
+ <imagedata align="center" fileref="inlineEvalConstraint.svg"
+ format="SVG" />
</imageobject>
<imageobject>
- <imagedata align="center" fileref="and.png" format="PNG" role="" />
+ <imagedata align="center" fileref="inlineEvalConstraint.png"
+ format="PNG" />
</imageobject>
</mediaobject>
</figure>
- <para>valid children : and, or, not, exists, column</para>
+ <para>A <indexterm>
+ <primary>Predicate</primary>
+ </indexterm>inline-eval constraint can use any valid dialect
+ expression as long as it evaluated to a primitive boolean - avoid
+ using any Drools keywords as Declaration identifiers. the expression
+ must be time constant. Any previous bound variable, from the current
+ or previous pattern, can be used; autovivification is also used to
+ auto create field binding variables. When an identifier is found that
+ is not a current variable the builder looks to see if the identifier
+ is a field on the current object type, if it is the field is auto
+ created as a variable of the same name; this is autovivification of
+ field varables inside of inline evals.</para>
+ <para>This example will find all pairs of male/femal people where the
+ male is 2 years older than the female; the girlAge variable is auto
+ created as part of the autovivification process.</para>
+
<example>
- <title>Column</title>
+ <title>Return Value operator</title>
- <programlisting>Cheese( cheeseType : type ) && Person( favouriteCheese == cheeseType )
-Cheese( cheeseType : type ) and Person( favouriteCheese == cheeseType )</programlisting>
+ <programlisting>Person( girlAge : age, sex = "F" )
+Person( eval( girlAge == boyAge + 2 ), sex = 'M' )
+</programlisting>
</example>
</section>
<section>
- <title>'or'</title>
+ <title>Nested Accessors</title>
- <figure>
- <title>or</title>
+ <para>Drools does allow for nested accessors in in the field
+ constraints using the MVEL accessor graph notation. Field constraints
+ involving nested accessors are actually re-written as an MVEL dialect
+ inline-eval. Care should be taken when using nested accessors as the
+ Working Memory is not aware of any of the nested values, and do not
+ know when they change; they should be considered immutable while any
+ of their parent references are inserted into the Working Memory. If
+ you wish to modify a nested value you should remove he parent objects
+ first and re-assert afterwards. If you only have a single parent at
+ the root of the graph you, when in the MVEL dialect, you can use the
+ 'modify' keyword and its block setters to write the nested accessor
+ assingments while retracting and inserting the the root parent object
+ as required. Nested accessors can be used either side of the operator
+ symbol.</para>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="or.svg" format="SVG" role="" />
- </imageobject>
+ <example>
+ <title>Nested Accessors</title>
- <imageobject>
- <imagedata align="center" fileref="or.png" format="PNG" role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <programlisting>$p : Person( )
+Pet( owner == $p, age > $p.children[0].age ) // Find a pet who is older than their owners first born child</programlisting>
- <para>valid children : and, or, not, exists, column</para>
+ <para>is internally rewriten as an MVEL inline eval:</para>
- <example>
- <title>or</title>
+ <programlisting>$p : Person( )
+Pet( owner == $p, eval( age > $p.children[0].age ) ) // Find a pet who is older than their owners first born child</programlisting>
+ </example>
+ </section>
+ </section>
- <programlisting>Person( sex == "f", age > 60 ) || Person( sex == "m", age > 65 )
-Person( sex == "f", age > 60 ) or Person( sex == "m", age > 65 )
+ <section>
+ <title>'and'</title>
+
+ <para>The 'and' Conditional Element is used to group together other
+ Conditional Elements. The root element of the LHS is an implicit
+ prefixAnd and doesn't need to be specified. Drools supports both prefix
+ and infix; although prefix is the preferred option as grouping is
+ implicit which avoids confusion.</para>
+
+ <figure>
+ <title>prefixAnd</title>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="prefixAnd.svg" format="SVG"
+ role="" />
+ </imageobject>
+
+ <imageobject>
+ <imagedata align="center" fileref="prefixAnd.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para></para>
+
+ <example>
+ <title>prefixAnd</title>
+
+ <programlisting>(and Cheese( cheeseType : type )
+ Person( favouriteCheese == cheeseType ) )
</programlisting>
- </example>
+ </example>
- <figure>
- <title>or</title>
+ <example>
+ <title>implicit root prefixAnd</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="or_with_binding.svg"
- format="SVG" />
- </imageobject>
+ <programlisting>when
+ Cheese( cheeseType : type )
+ Person( favouriteCheese == cheeseType )</programlisting>
+ </example>
- <imageobject>
- <imagedata align="center" fileref="or_with_binding.png"
- format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <para>Infix 'and' is supported along with explicit grouping with
+ parenthesis, should it be needed. The '&&' symbol, as an
+ alternative to 'and', is deprecated although it is still supported in
+ the syntax for legacy support reasons.</para>
- <example>
- <title>or with binding</title>
+ <figure>
+ <title>infixAnd</title>
- <programlisting>pensioner : ( Person( sex == "f", age > 60 ) or Person( sex == "m", age > 65 ) )</programlisting>
- </example>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="infixAnd.svg" format="SVG"
+ role="" />
+ </imageobject>
- <para>The 'or' conditional element results in multipe rule generation,
- called sub rules, for each possible logically outcome. the example
- above would result in the internal generation of two rules. These two
- rules work independently within the Working Memory, which means both
- can match, activate and fire - there is no shortcutting.</para>
+ <imageobject>
+ <imagedata align="center" fileref="infixAnd.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>The best way to think of the OR conditional element is as a
- shortcut for generating 2 additional rules. When you think of it that
- way, its clear that for a single rule there could be multiple
- activations if both sides of the OR conditional element are
- true.</para>
- </section>
+ <example>
+ <title>infixAnd</title>
- <section>
- <title>'eval'</title>
+ <programlisting>Cheese( cheeseType : type ) and Person( favouriteCheese == cheeseType ) //infixAnd
+(Cheese( cheeseType : type ) and (Person( favouriteCheese == cheeseType ) or Person( favouriteCheese == cheeseType ) ) //infixAnd with grouping</programlisting>
+ </example>
+ </section>
- <figure>
- <title>eval</title>
+ <section>
+ <title>'or'</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="eval.svg" format="SVG"
- role="" />
- </imageobject>
+ <para>The 'or' Conditional Element is used to group together other
+ Conditional Elements. Drools supports both prefix and infix; although
+ prefix is the preferred option as grouping is implicit which avoids
+ confusion. The behaviour of the 'or' Conditional Element is different
+ than the '||' connective for constraints and restrictions in field
+ constraints. The engine actually has no understanding of 'or'
+ Conditional Elements, instead via a number of different logic
+ transformations the rule is re-written as a number of subrules; the rule
+ now has a single 'or' as the root node and a subrule per logical
+ outcome. Each subrule can activate and fire like any normal rule, there
+ is no special behaviour or interactions between the subrules - this can
+ be most confusing to new rule authors.</para>
- <imageobject>
- <imagedata align="center" fileref="eval.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <figure>
+ <title>prefixOr</title>
- <para>valid children : none</para>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="orPrefix.svg" format="SVG"
+ role="" />
+ </imageobject>
- <para>Eval is essentially a catch all which allows any semantic code
- (that returns a primitive primitive boolean) to be executed. This can
- refer to variables that were bound in the LHS of the rule, and
- functions in the rule package. An eval should be the last conditional
- element in the LHS of a rule. You can have multiple evals in a rule.
- Generally you would combine them with some column constraints.</para>
+ <imageobject>
+ <imagedata align="center" fileref="prefixOr.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>Evals cannot be indexed and thus are not as optimal as using
- Field Constraints. However this makes them ideal for being used when
- functions return values that change over time, which is not allowed
- within Field Constraints. An Eval will be checked each time if all the
- other conditions in the rules are met.</para>
+ <example>
+ <title>prefixOr</title>
- <para>For folks who are familiar with Drools 2.x lineage, the old
- Drools paramater and condition tags are equivalent to binding a
- variable to an appropriate type, and then using it in an eval
- node.</para>
+ <programlisting>(or Person( sex == "f", age > 60 )
+ Person( sex == "m", age > 65 )
+</programlisting>
+ </example>
- <example>
- <title>eval</title>
+ <para>Infix 'or' is supported along with explicit grouping with
+ parenthesis, should it be needed. The '||' symbol, as an alternative to
+ 'or', is deprecated although it is still supported in the syntax for
+ legacy support reasons.</para>
- <programlisting>p1 : Parameter()
-p2 : Parameter()
-eval( p1.getList().containsKey(p2.getItem()) )
-eval( isValid(p1, p2) ) //this is how you call a function in the LHS - a function called "isValid"</programlisting>
- </example>
- </section>
+ <figure>
+ <title>infixOr</title>
- <section>
- <title>'not'</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="infixOr.svg" format="SVG"
+ role="" />
+ </imageobject>
- <figure>
- <title>not</title>
+ <imageobject>
+ <imagedata align="center" fileref="infixOr.png" format="PNG"
+ role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="not.svg" format="SVG" role="" />
- </imageobject>
+ <example>
+ <title>infixAnd</title>
- <imageobject>
- <imagedata align="center" fileref="not.png" format="PNG" role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <programlisting>Cheese( cheeseType : type ) or Person( favouriteCheese == cheeseType ) //infixOr
+(Cheese( cheeseType : type ) or (Person( favouriteCheese == cheeseType ) and Person( favouriteCheese == cheeseType ) ) //infixOr with grouping</programlisting>
+ </example>
- <para>valid children: Column</para>
+ <para>The 'or' Conditional Element also allows for optional pattern
+ binding; which means each resulting subrule will bind it's pattern to
+ the pattern binding.</para>
- <para>'not' is first order logic's Existential Quantifier and checks
- for the non existence of something in the Working Memory. Currently
- only Columns may be nested in a 'not' but future versions of will
- allow 'and' and 'or' to be nested.</para>
+ <example>
+ <title>or with binding</title>
- <example>
- <title>No Busses</title>
+ <programlisting>pensioner : (or Person( sex == "f", age > 60 )
+ Person( sex == "m", age > 65 ) )</programlisting>
- <programlisting>not Bus()</programlisting>
- </example>
+ <para>Explicit binding on each Pattern is also allowed.</para>
- <example>
- <title>No red Busses</title>
+ <programlisting>(or pensioner : Person( sex == "f", age > 60 )
+ pensioner : Person( sex == "m", age > 65 ) )</programlisting>
+ </example>
- <programlisting>not Bus(color == "red")
-not ( Bus(color == "red", number == 42) ) //brackets are optional</programlisting>
- </example>
- </section>
+ <para>The 'or' conditional element results in multipe rule generation,
+ called sub rules, for each possible logically outcome. the example above
+ would result in the internal generation of two rules. These two rules
+ work independently within the Working Memory, which means both can
+ match, activate and fire - there is no shortcutting.</para>
- <section>
- <title>'exists'</title>
+ <para>The best way to think of the OR conditional element is as a
+ shortcut for generating 2 additional rules. When you think of it that
+ way, its clear that for a single rule there could be multiple
+ activations if both sides of the OR conditional element are true.</para>
+ </section>
- <figure>
- <title>exists</title>
+ <section>
+ <title>'eval'</title>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="exists.svg" format="SVG" />
- </imageobject>
+ <figure>
+ <title>eval</title>
- <imageobject>
- <imagedata align="center" fileref="exists.png" format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="eval.svg" format="SVG" role="" />
+ </imageobject>
- <para>valid children: Column</para>
+ <imageobject>
+ <imagedata align="center" fileref="eval.png" format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <para>'exists' is first order logic's Existential Quantifier and
- checks for the existence of something in the Working Memory. Think of
- exist as meaning "at least one..". It is different from just having
- the Column on its own. If you had the column on its on, its kind of
- like saying "for each one of...". if you use exist with a Column, then
- the rule will only activate once regardless of how much data there is
- in working memory that matches that condition.</para>
+ <para>Eval is essentially a catch all which allows any semantic code
+ (that returns a primitive primitive boolean) to be executed. This can
+ refer to variables that were bound in the LHS of the rule, and functions
+ in the rule package. Over use of eval reduces the declarativess of your
+ rules and can result in a poor performing engine. While 'evals' can be
+ used anywhere in the Pattern the best practice is to add it as the last
+ conditional element in the LHS of a rule. </para>
- <para>Currently only Columns may be nested in a 'exists' but future
- versions of will allow 'and' and 'or' to be nested.</para>
+ <para>Evals cannot be indexed and thus are not as optimal as using Field
+ Constraints. However this makes them ideal for being used when functions
+ return values that change over time, which is not allowed within Field
+ Constraints. </para>
- <example>
- <title>Atleast one Bus</title>
+ <para>For folks who are familiar with Drools 2.x lineage, the old Drools
+ paramater and condition tags are equivalent to binding a variable to an
+ appropriate type, and then using it in an eval node.</para>
- <programlisting>exists Bus()</programlisting>
- </example>
+ <example>
+ <title>eval</title>
- <example>
- <title>Atleast one red Bus</title>
+ <programlisting>p1 : Parameter()
+p2 : Parameter()
+eval( p1.getList().containsKey(p2.getItem()) )
+eval( isValid(p1, p2) ) //this is how you call a function in the LHS - a function called "isValid"</programlisting>
+ </example>
+ </section>
- <programlisting>exists Bus(color == "red")</programlisting>
- </example>
- </section>
+ <section>
+ <title>'not'</title>
- <section>
- <title>'group'</title>
+ <figure>
+ <title>not</title>
- <figure>
- <title>group</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="not.svg" format="SVG" role="" />
+ </imageobject>
- <mediaobject>
- <imageobject>
- <imagedata align="center" fileref="group.svg" format="SVG"
- role="" />
- </imageobject>
+ <imageobject>
+ <imagedata align="center" fileref="not.png" format="PNG" role="" />
+ </imageobject>
+ </mediaobject>
+ </figure>
- <imageobject>
- <imagedata align="center" fileref="group.png" format="PNG"
- role="" />
- </imageobject>
- </mediaobject>
- </figure>
+ <para>'not' is first order logic's Existential Quantifier and checks for
+ the non existence of something in the Working Memory. Brackets are
+ optional. Think of 'not' as meaning "there must be none of...".</para>
- <para>Grouping is similar to using parentheses in algebra, it makes
- the order of operations explicit.</para>
+ <example>
+ <title>No Busses</title>
- <example>
- <title>Example of groups</title>
+ <programlisting>not Bus()</programlisting>
+ </example>
- <programlisting>...
-(
- Message( status == Message.HELLO ) and Message(message != null)
- or Message(status == null)
-)
-...</programlisting>
- </example>
- </section>
+ <example>
+ <title>No red Busses</title>
+
+ <programlisting>not Bus(color == "red")
+not ( Bus(color == "red", number == 42) ) //brackets are optional
+not ( Bus(color == "red") and Bus(color == "blue")) // not with nested 'and' infix used here as ony two patterns</programlisting>
+ </example>
</section>
+
+ <section>
+ <title>'exists'</title>
+
+ <figure>
+ <title>exists</title>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata align="center" fileref="exists.svg" format="SVG" />
+ </imageobject>
+
+ <imageobject>
+ <imagedata align="center" fileref="exists.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>'exists' is first order logic's Existential Quantifier and checks
+ for the existence of something in the Working Memory. Think of exist as
+ meaning "at least one..". It is different from just having the Pattern
+ on its own; which is more like saying "for each one of...". if you use
+ exist with a Pattern, then the rule will only activate once regardless
+ of how much data there is in working memory that matches that
+ condition.</para>
+
+ <example>
+ <title>Atleast one Bus</title>
+
+ <programlisting>exists Bus()</programlisting>
+ </example>
+
+ <example>
+ <title>Atleast one red Bus</title>
+
+ <programlisting>exists Bus(color == "red")
+exists ( Bus(color == "red", number == 42) ) //brackets are optional
+exists ( Bus(color == "red") and Bus(color == "blue")) // not with nested 'and' infix used here as ony two patterns</programlisting>
+ </example>
+ </section>
</section>
<section>
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/conditional_elements.vsd
===================================================================
(Binary files differ)
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.png
===================================================================
(Binary files differ)
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.svg 2007-07-22 15:32:06 UTC (rev 13708)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/exists.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -1,34 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 exists.svg Page-1 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" xmlns:xlink="http://www.w3.org/1999/xlink" width="3.14355in" height="0.244444in" viewBox="0 0 226.336 17.6" xml:space="preserve" color-interpolation-filters="sRGB" class="st6" preserveAspectRatio="xMidYMid meet" zoomAndPan="magnify" version="1.0" contentScriptType="text/ecmascript" contentStyleType="text/css">
+<?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 exists.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.6165in"
+ height="0.538941in" viewBox="0 0 260.388 38.8038" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
- <style type="text/css" xml:space="preserve">
-
+ <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: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 xmlns="http://www.w3.org/TR/xhtml1/transitional" overflow="visible" id="mrkr2-18" class="st5" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto" markerUnits="strokeWidth" preserveAspectRatio="xMidYMid meet">
- <use xmlns="http://www.w3.org/2000/svg" xlink:href="#lend2" transform="scale(-11.5,-11.5) " xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
+ <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 content="structured text">Page-1</title>
- <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394" v:shadowOffsetY="-8.50394"/>
+ <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="shape23-1" v:mID="23" v:groupContext="shape" v:layerMember="0" transform="translate(27.8268,-2.13018)">
- <title content="structured text">Process.154</title>
- <desc content="structured text">‘exist’</desc>
+ <g id="shape23-1" v:mID="23" v:groupContext="shape" v:layerMember="0" transform="translate(27.6709,-2.13018)">
+ <title>Process.23</title>
+ <desc>‘exists’</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"/>
@@ -38,12 +43,13 @@
<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.9302" width="29.8" height="13.3396"/>
- <rect x="0" y="4.26036" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="4.9" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">exist</tspan>’</text> </g>
- <g id="shape24-5" v:mID="24" v:groupContext="shape" v:layerMember="0" transform="translate(75.6496,-2.13018)">
- <title content="structured text">Process.155</title>
- <desc content="structured text">‘(‘</desc>
+ <v:textRect cx="14.8963" cy="32.134" width="29.8" height="13.3396"/>
+ <rect x="0" y="25.4641" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="2.9" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">exists</tspan>’</text> </g>
+ <g id="shape24-5" v:mID="24" v:groupContext="shape" v:layerMember="0" transform="translate(75.8054,-25.2241)">
+ <title>Process.24</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"/>
@@ -53,12 +59,13 @@
<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="10.9302" width="20.01" height="13.3396"/>
- <rect x="0" y="4.26036" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.89" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">(</tspan>‘</text> </g>
- <g id="shape25-9" v:mID="25" v:groupContext="shape" v:layerMember="0" transform="translate(166.807,-2.13018)">
- <title content="structured text">Process.156</title>
- <desc content="structured text">‘)’</desc>
+ <v:textRect cx="10.0047" cy="32.134" width="20.01" height="13.3396"/>
+ <rect x="0" y="25.4641" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.89" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">(</tspan>‘</text> </g>
+ <g id="shape25-9" v:mID="25" v:groupContext="shape" v:layerMember="0" transform="translate(203.408,-24.8073)">
+ <title>Process.25</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"/>
@@ -68,32 +75,43 @@
<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="10.9302" width="20.01" height="13.3396"/>
- <rect x="0" y="4.26036" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.89" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">)</tspan>’</text> </g>
- <g id="shape26-13" v:mID="26" v:groupContext="shape" v:layerMember="1" transform="translate(57.6193,-1.71339)">
- <title content="structured text">Dynamic connector.157</title>
- <path d="M0 10.51 L15.27 10.51" class="st4"/>
+ <v:textRect cx="10.0047" cy="32.134" width="20.01" height="13.3396"/>
+ <rect x="0" y="25.4641" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.89" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">)</tspan>’</text> </g>
+ <g id="shape26-13" v:mID="26" v:groupContext="shape" v:layerMember="1" transform="translate(57.4634,-8.8)">
+ <title>Dynamic connector.26</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 -180 0 0 10.63 33.49 L10.63 19.57 A3.85604 3.85604 0 0 1 14.49 15.71 L15.58
+ 15.71" class="st4"/>
</g>
- <g id="shape27-19" v:mID="27" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.501054,-2.96391)">
- <title content="structured text">On-page reference.158</title>
+ <g id="shape27-19" v:mID="27" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.656943,-2.96391)">
+ <title>On-page reference.27</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.76 A5.83609 5.83609 0 1 1 11.67 11.76 A5.83609 5.83609 0 0 1 0 11.76 Z" class="st1"/>
+ <path d="M0 32.97 A5.83609 5.83609 0 1 1 11.67 32.97 A5.83609 5.83609 0 0 1 0 32.97 Z" class="st1"/>
</g>
- <g id="shape29-21" v:mID="29" v:groupContext="shape" v:layerMember="1" transform="translate(12.1732,-1.71339)">
- <title content="structured text">Dynamic connector.160</title>
- <path d="M0 10.51 L12.89 10.51" class="st4"/>
+ <g id="shape28-21" v:mID="28" v:groupContext="shape" v:layerMember="1;0" transform="translate(248.476,-2.96391)">
+ <title>On-page reference.28</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 32.97 A5.83609 5.83609 0 1 1 11.67 32.97 A5.83609 5.83609 0 0 1 0 32.97 Z" class="st1"/>
</g>
- <g id="shape30-26" v:mID="30" v:groupContext="shape" v:layerMember="1" transform="translate(186.816,-1.71339)">
- <title content="structured text">Dynamic connector.161</title>
- <path d="M0 10.51 L24.85 10.51" class="st4"/>
+ <g id="shape29-23" v:mID="29" v:groupContext="shape" v:layerMember="1" transform="translate(12.3291,-1.71339)">
+ <title>Dynamic connector.29</title>
+ <path d="M0 31.72 L12.58 31.72" class="st4"/>
</g>
- <g id="shape31-31" v:mID="31" v:groupContext="shape" v:layerMember="0" transform="translate(112.676,-2.13018)">
- <title content="structured text">Process.163</title>
- <desc content="structured text">column</desc>
+ <g id="shape30-28" v:mID="30" v:groupContext="shape" v:layerMember="1" transform="translate(223.417,-31.4772)">
+ <title>Dynamic connector.30</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 0 0 1 10.63 44.12 L10.63 55.81 A5.66929 5.66929 -180 0 0 16.3 61.48 L22.3
+ 61.48" class="st4"/>
+ </g>
+ <g id="shape31-33" v:mID="31" v:groupContext="shape" v:layerMember="0" transform="translate(112.676,-2.13018)">
+ <title>Process.31</title>
+ <desc>conditionalElement</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"/>
@@ -103,24 +121,26 @@
<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="18.9765" cy="10.9302" width="37.96" height="13.3396"/>
- <rect x="0" y="4.26036" width="37.953" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.08" y="13.33" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>column</text> </g>
- <g id="shape32-34" v:mID="32" v:groupContext="shape" v:layerMember="1" transform="translate(95.659,-1.71339)">
- <title content="structured text">Dynamic connector.164</title>
- <path d="M0 10.51 L14.26 10.51" class="st4"/>
+ <v:textRect cx="36.2367" cy="32.134" width="72.48" height="13.3396"/>
+ <rect x="0" y="25.4641" width="72.4735" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="2.43" y="34.53" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>conditionalElement</text> </g>
+ <g id="shape32-36" v:mID="32" v:groupContext="shape" v:layerMember="1" transform="translate(95.8149,-31.894)">
+ <title>Dynamic connector.32</title>
+ <path d="M0 38.8 L4.89 38.8 A4.8872 4.8872 0 0 1 9.77 43.69 L9.77 58.35 A3.54331 3.54331 -180 0 0 13.32 61.9 L14.1 61.9"
+ class="st4"/>
</g>
- <g id="shape33-39" v:mID="33" v:groupContext="shape" v:layerMember="1" transform="translate(150.629,-1.71339)">
- <title content="structured text">Dynamic connector.165</title>
- <path d="M0 10.51 L13.42 10.51" class="st4"/>
+ <g id="shape33-41" v:mID="33" v:groupContext="shape" v:layerMember="1" transform="translate(185.149,-8.8)">
+ <title>Dynamic connector.33</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 -180 0 0 10.63 33.49 L10.63 19.94 A3.81417 3.81417 0 0 1 14.44 16.13 L15.5
+ 16.13" class="st4"/>
</g>
- <g id="shape28-44" v:mID="28" v:groupContext="shape" v:layerMember="1;0" transform="translate(214.424,-2.96391)">
- <title content="structured text">On-page reference.159</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.76 A5.83609 5.83609 0 1 1 11.67 11.76 A5.83609 5.83609 0 0 1 0 11.76 Z" class="st1"/>
+ <g id="shape156-46" v:mID="156" v:groupContext="shape" v:layerMember="1" transform="translate(57.4634,-1.71339)">
+ <title>Dynamic connector.156</title>
+ <path d="M0 31.72 L52.45 31.72" class="st4"/>
</g>
+ <g id="shape157-51" v:mID="157" v:groupContext="shape" v:layerMember="1" transform="translate(185.149,-1.71339)">
+ <title>Dynamic connector.157</title>
+ <path d="M0 31.72 L60.57 31.72" class="st4"/>
+ </g>
</g>
-</svg>
\ No newline at end of file
+</svg>
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.svg (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixAnd.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -0,0 +1,153 @@
+<?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 infixAnd.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.41681in"
+ height="0.519256in" viewBox="0 0 246.01 37.3865" 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="shape89-1" v:mID="89" v:groupContext="shape" v:layerMember="0" transform="translate(90.7815,-2.13018)">
+ <title>Process.89</title>
+ <desc>CE</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.4689" cy="30.7166" width="42.94" height="13.3396"/>
+ <rect x="0" y="24.0468" width="42.9378" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="15.92" y="33.12" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>CE</text> </g>
+ <g id="shape97-4" v:mID="97" v:groupContext="shape" v:layerMember="1" transform="translate(135.887,-8.8)">
+ <title>Dynamic connector.97</title>
+ <path d="M-2.17 37.39 L3.15 37.39 A5.31496 5.31496 -180 0 0 8.46 32.07 L8.46 21.38 A5.66929 5.66929 -180 0 0 2.79 15.71
+ L-9.25 15.71" class="st3"/>
+ </g>
+ <g id="shape98-10" v:mID="98" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.24,-2.96391)">
+ <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 31.55 A5.83609 5.83609 0 1 1 11.67 31.55 A5.83609 5.83609 0 0 1 0 31.55 Z" class="st1"/>
+ </g>
+ <g id="shape99-12" v:mID="99" v:groupContext="shape" v:layerMember="1;0" transform="translate(234.098,-2.96391)">
+ <title>On-page reference.99</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 31.55 A5.83609 5.83609 0 1 1 11.67 31.55 A5.83609 5.83609 0 0 1 0 31.55 Z" class="st1"/>
+ </g>
+ <g id="shape100-14" v:mID="100" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-1.71339)">
+ <title>Dynamic connector.100</title>
+ <path d="M0 30.3 L55.03 30.3 L76.11 30.3" class="st3"/>
+ </g>
+ <g id="shape91-19" v:mID="91" v:groupContext="shape" v:layerMember="1" transform="translate(52.2556,-29.7679)">
+ <title>Dynamic connector.91</title>
+ <path d="M0 37.39 L3.76 37.39 A3.75599 3.75599 0 0 1 7.51 41.14 L7.51 52.69 A5.66929 5.66929 -180 0 0 13.18 58.35 L35.77
+ 58.35" class="st3"/>
+ </g>
+ <g id="shape37-24" v:mID="37" v:groupContext="shape" v:layerMember="1" transform="translate(133.719,-15.8866)">
+ <title>Dynamic connector.37</title>
+ <path d="M0 44.47 L24.51 44.47 L97.62 44.47" class="st3"/>
+ </g>
+ <g id="shape79-29" v:mID="79" v:groupContext="shape" v:layerMember="0" transform="translate(100.07,-23.8068)">
+ <title>Process.79</title>
+ <desc>‘and’</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="11.9052" cy="30.7166" width="23.82" height="13.3396"/>
+ <rect x="0" y="24.0468" width="23.8103" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="3.45" y="33.12" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">and</tspan>’</text> </g>
+ <g id="shape80-33" v:mID="80" v:groupContext="shape" v:layerMember="1" transform="translate(102.513,-30.4766)">
+ <title>Dynamic connector.80</title>
+ <path d="M-2.44 37.39 L-18.65 37.39 A5.66929 5.66929 -180 0 0 -24.32 43.06 L-24.32 53.39 A5.66929 5.66929 -180 0 0 -18.65
+ 59.06 L-14.49 59.06" class="st3"/>
+ </g>
+ <g id="shape81-38" v:mID="81" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-8.8)">
+ <title>Dynamic connector.81</title>
+ <path d="M0 37.39 L5.31 37.39 A5.31496 5.31496 -180 0 0 10.63 32.07 L10.63 21.78 A5.36084 5.36084 0 0 1 15.99 16.42 L18.59
+ 16.42" class="st3"/>
+ </g>
+ <g id="shape48-43" v:mID="48" v:groupContext="shape" v:layerMember="0" transform="translate(33.2638,-23.0981)">
+ <title>Process.48</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="9.49589" cy="30.7166" width="19" height="13.3396"/>
+ <rect x="0" y="24.0468" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="33.12" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">(</tspan>’</text> </g>
+ <g id="shape82-47" v:mID="82" v:groupContext="shape" v:layerMember="0" transform="translate(179.673,-23.0981)">
+ <title>Process.82</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="9.49589" cy="30.7166" width="19" height="13.3396"/>
+ <rect x="0" y="24.0468" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="33.12" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">)</tspan>’</text> </g>
+ <g id="shape85-51" v:mID="85" v:groupContext="shape" v:layerMember="1" transform="translate(133.719,-8.8)">
+ <title>Dynamic connector.85</title>
+ <path d="M0 37.39 L30.93 37.39 A5.66929 5.66929 -180 0 0 36.6 31.72 L36.6 21.1 A4.67733 4.67733 0 0 1 41.28 16.42 L43.19
+ 16.42" class="st3"/>
+ </g>
+ <g id="shape86-56" v:mID="86" v:groupContext="shape" v:layerMember="1" transform="translate(198.665,-29.7679)">
+ <title>Dynamic connector.86</title>
+ <path d="M0 37.39 L8.5 37.39 A5.66929 5.66929 0 0 1 14.17 43.06 L14.17 52.69 A5.66929 5.66929 -180 0 0 19.84 58.35 L32.67
+ 58.35" class="st3"/>
+ </g>
+ </g>
+</svg>
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.svg (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/infixOr.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -0,0 +1,178 @@
+<?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 infixOr.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="5.09525in"
+ height="0.474097in" viewBox="0 0 366.858 34.135" 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="shape39-1" v:mID="39" v:groupContext="shape" v:layerMember="0" transform="translate(211.629,-2.13018)">
+ <title>Process.39</title>
+ <desc>CE</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.4689" cy="27.4652" width="42.94" height="13.3396"/>
+ <rect x="0" y="20.7954" width="42.9378" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="15.92" y="29.87" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>CE</text> </g>
+ <g id="shape40-4" v:mID="40" v:groupContext="shape" v:layerMember="1" transform="translate(256.296,-8.8)">
+ <title>Dynamic connector.40</title>
+ <path d="M-1.73 34.14 L3.59 34.14 A5.31496 5.31496 -180 0 0 8.9 28.82 L8.9 21.38 A5.66929 5.66929 -180 0 0 3.23 15.71
+ L-9.68 15.71" class="st3"/>
+ </g>
+ <g id="shape42-10" v:mID="42" v:groupContext="shape" v:layerMember="1;0" transform="translate(354.946,-2.96391)">
+ <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 28.3 A5.83609 5.83609 0 1 1 11.67 28.3 A5.83609 5.83609 0 0 1 0 28.3 Z" class="st1"/>
+ </g>
+ <g id="shape43-12" v:mID="43" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-1.71339)">
+ <title>Dynamic connector.43</title>
+ <path d="M0 27.05 L196.96 27.05" class="st3"/>
+ </g>
+ <g id="shape44-17" v:mID="44" v:groupContext="shape" v:layerMember="1" transform="translate(173.103,-27.2252)">
+ <title>Dynamic connector.44</title>
+ <path d="M0 34.14 L3.76 34.14 A3.75599 3.75599 0 0 1 7.51 37.89 L7.51 46.89 A5.66929 5.66929 -180 0 0 13.18 52.56 L35.77
+ 52.56" class="st3"/>
+ </g>
+ <g id="shape45-22" v:mID="45" v:groupContext="shape" v:layerMember="1" transform="translate(254.567,-15.8866)">
+ <title>Dynamic connector.45</title>
+ <path d="M0 41.22 L97.62 41.22" class="st3"/>
+ </g>
+ <g id="shape46-27" v:mID="46" v:groupContext="shape" v:layerMember="0" transform="translate(220.042,-20.5554)">
+ <title>Process.46</title>
+ <desc>‘or’</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="11.9052" cy="27.4652" width="23.82" height="13.3396"/>
+ <rect x="0" y="20.7954" width="23.8103" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.57" y="29.87" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">or</tspan>’</text> </g>
+ <g id="shape47-31" v:mID="47" v:groupContext="shape" v:layerMember="1" transform="translate(222.922,-27.2252)">
+ <title>Dynamic connector.47</title>
+ <path d="M-2.88 34.14 L-18.21 34.14 A5.66929 5.66929 -180 0 0 -23.88 39.8 L-23.88 46.89 A5.66929 5.66929 -180 0 0 -18.21
+ 52.56 L-14.05 52.56" class="st3"/>
+ </g>
+ <g id="shape67-36" v:mID="67" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-8.8)">
+ <title>Dynamic connector.67</title>
+ <path d="M0 34.14 L125.9 34.14 A5.66929 5.66929 -180 0 0 131.57 28.47 L131.57 21.02 A5.31496 5.31496 0 0 1 136.88 15.71
+ L139.44 15.71" class="st3"/>
+ </g>
+ <g id="shape87-41" v:mID="87" v:groupContext="shape" v:layerMember="0" transform="translate(154.111,-20.5554)">
+ <title>Process.87</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="9.49589" cy="27.4652" width="19" height="13.3396"/>
+ <rect x="0" y="20.7954" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="29.87" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">(</tspan>’</text> </g>
+ <g id="shape88-45" v:mID="88" v:groupContext="shape" v:layerMember="0" transform="translate(300.521,-20.5554)">
+ <title>Process.88</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="9.49589" cy="27.4652" width="19" height="13.3396"/>
+ <rect x="0" y="20.7954" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="29.87" class="st5" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st6"
+ v:langID="2057">)</tspan>’</text> </g>
+ <g id="shape104-49" v:mID="104" v:groupContext="shape" v:layerMember="1" transform="translate(254.567,-8.8)">
+ <title>Dynamic connector.104</title>
+ <path d="M0 34.14 L30.93 34.14 A5.66929 5.66929 -180 0 0 36.6 28.47 L36.6 20.39 A4.67733 4.67733 0 0 1 41.28 15.71 L43.19
+ 15.71" class="st3"/>
+ </g>
+ <g id="shape105-54" v:mID="105" v:groupContext="shape" v:layerMember="1" transform="translate(319.513,-27.2252)">
+ <title>Dynamic connector.105</title>
+ <path d="M0 34.14 L8.5 34.14 A5.66929 5.66929 0 0 1 14.17 39.8 L14.17 46.89 A5.66929 5.66929 -180 0 0 19.84 52.56 L32.67
+ 52.56" class="st3"/>
+ </g>
+ <g id="shape151-59" v:mID="151" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.24,-2.96391)">
+ <title>On-page reference.151</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 28.3 A5.83609 5.83609 0 1 1 11.67 28.3 A5.83609 5.83609 0 0 1 0 28.3 Z" class="st1"/>
+ </g>
+ <g id="shape153-61" v:mID="153" v:groupContext="shape" v:layerMember="0" transform="translate(37.7568,-20.5554)">
+ <title>Process.153</title>
+ <desc>patternBinding</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="27.8469" cy="27.4652" width="55.7" height="13.3396"/>
+ <rect x="0" y="20.7954" width="55.6937" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="2.05" y="29.87" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>patternBinding</text> </g>
+ <g id="shape154-64" v:mID="154" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-8.8)">
+ <title>Dynamic connector.154</title>
+ <path d="M0 34.14 L5.31 34.14 A5.31496 5.31496 -180 0 0 10.63 28.82 L10.63 21.38 A5.66929 5.66929 0 0 1 16.3 15.71 L23.08
+ 15.71" class="st3"/>
+ </g>
+ <g id="shape155-69" v:mID="155" v:groupContext="shape" v:layerMember="1" transform="translate(93.4505,-27.2252)">
+ <title>Dynamic connector.155</title>
+ <path d="M0 34.14 L6.17 34.14 A5.66929 5.66929 0 0 1 11.84 39.8 L11.84 46.89 A5.66929 5.66929 -180 0 0 17.51 52.56 L115.42
+ 52.56" class="st3"/>
+ </g>
+ </g>
+</svg>
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.png
===================================================================
(Binary files differ)
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.svg 2007-07-22 15:32:06 UTC (rev 13708)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/not.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -1,34 +1,39 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 not.svg Page-1 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" xmlns:xlink="http://www.w3.org/1999/xlink" width="3.14572in" height="0.244444in" viewBox="0 0 226.492 17.6" xml:space="preserve" color-interpolation-filters="sRGB" class="st6" preserveAspectRatio="xMidYMid meet" zoomAndPan="magnify" version="1.0" contentScriptType="text/ecmascript" contentStyleType="text/css">
+<?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 not.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.6165in"
+ height="0.538941in" viewBox="0 0 260.388 38.8038" xml:space="preserve" color-interpolation-filters="sRGB" class="st6">
<v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/>
- <style type="text/css" xml:space="preserve">
-
+ <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: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 xmlns="http://www.w3.org/TR/xhtml1/transitional" overflow="visible" id="mrkr2-18" class="st5" v:arrowType="2" v:arrowSize="2" v:setback="11.5" refX="-11.5" orient="auto" markerUnits="strokeWidth" preserveAspectRatio="xMidYMid meet">
- <use xmlns="http://www.w3.org/2000/svg" xlink:href="#lend2" transform="scale(-11.5,-11.5) " xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
+ <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 content="structured text">Page-1</title>
- <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394" v:shadowOffsetY="-8.50394"/>
+ <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="shape12-1" v:mID="12" v:groupContext="shape" v:layerMember="0" transform="translate(27.6709,-2.13018)">
- <title content="structured text">Process.141</title>
- <desc content="structured text">‘not’</desc>
+ <title>Process.141</title>
+ <desc>‘not’</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"/>
@@ -38,12 +43,13 @@
<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.9302" width="29.8" height="13.3396"/>
- <rect x="0" y="4.26036" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="7.56" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">not</tspan>’</text> </g>
- <g id="shape13-5" v:mID="13" v:groupContext="shape" v:layerMember="0" transform="translate(75.8054,-2.13018)">
- <title content="structured text">Process.142</title>
- <desc content="structured text">‘(‘</desc>
+ <v:textRect cx="14.8963" cy="32.134" width="29.8" height="13.3396"/>
+ <rect x="0" y="25.4641" width="29.7926" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="7.56" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">not</tspan>’</text> </g>
+ <g id="shape13-5" v:mID="13" v:groupContext="shape" v:layerMember="0" transform="translate(75.8054,-25.2241)">
+ <title>Process.142</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"/>
@@ -53,12 +59,13 @@
<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="10.9302" width="20.01" height="13.3396"/>
- <rect x="0" y="4.26036" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.89" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">(</tspan>‘</text> </g>
- <g id="shape14-9" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(166.963,-2.13018)">
- <title content="structured text">Process.143</title>
- <desc content="structured text">‘)’</desc>
+ <v:textRect cx="10.0047" cy="32.134" width="20.01" height="13.3396"/>
+ <rect x="0" y="25.4641" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.89" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">(</tspan>‘</text> </g>
+ <g id="shape14-9" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(203.408,-24.8073)">
+ <title>Process.143</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"/>
@@ -68,40 +75,43 @@
<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="10.9302" width="20.01" height="13.3396"/>
- <rect x="0" y="4.26036" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.89" y="13.33" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3" v:langID="2057">)</tspan>’</text> </g>
- <g id="shape15-13" v:mID="15" v:groupContext="shape" v:layerMember="1" transform="translate(57.4634,-1.71339)">
- <title content="structured text">Dynamic connector.144</title>
- <path d="M0 10.51 L15.58 10.51" class="st4"/>
+ <v:textRect cx="10.0047" cy="32.134" width="20.01" height="13.3396"/>
+ <rect x="0" y="25.4641" width="20.0095" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.89" y="34.53" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">)</tspan>’</text> </g>
+ <g id="shape15-13" v:mID="15" v:groupContext="shape" v:layerMember="1" transform="translate(57.4634,-8.8)">
+ <title>Dynamic connector.144</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 -180 0 0 10.63 33.49 L10.63 19.57 A3.85604 3.85604 0 0 1 14.49 15.71 L15.58
+ 15.71" class="st4"/>
</g>
<g id="shape16-19" v:mID="16" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.656943,-2.96391)">
- <title content="structured text">On-page reference.145</title>
+ <title>On-page reference.145</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.76 A5.83609 5.83609 0 1 1 11.67 11.76 A5.83609 5.83609 0 0 1 0 11.76 Z" class="st1"/>
+ <path d="M0 32.97 A5.83609 5.83609 0 1 1 11.67 32.97 A5.83609 5.83609 0 0 1 0 32.97 Z" class="st1"/>
</g>
- <g id="shape17-21" v:mID="17" v:groupContext="shape" v:layerMember="1;0" transform="translate(214.58,-2.96391)">
- <title content="structured text">On-page reference.146</title>
+ <g id="shape17-21" v:mID="17" v:groupContext="shape" v:layerMember="1;0" transform="translate(248.476,-2.96391)">
+ <title>On-page reference.146</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.76 A5.83609 5.83609 0 1 1 11.67 11.76 A5.83609 5.83609 0 0 1 0 11.76 Z" class="st1"/>
+ <path d="M0 32.97 A5.83609 5.83609 0 1 1 11.67 32.97 A5.83609 5.83609 0 0 1 0 32.97 Z" class="st1"/>
</g>
<g id="shape18-23" v:mID="18" v:groupContext="shape" v:layerMember="1" transform="translate(12.3291,-1.71339)">
- <title content="structured text">Dynamic connector.147</title>
- <path d="M0 10.51 L12.58 10.51" class="st4"/>
+ <title>Dynamic connector.147</title>
+ <path d="M0 31.72 L12.58 31.72" class="st4"/>
</g>
- <g id="shape19-28" v:mID="19" v:groupContext="shape" v:layerMember="1" transform="translate(186.972,-1.71339)">
- <title content="structured text">Dynamic connector.148</title>
- <path d="M0 10.51 L24.85 10.51" class="st4"/>
+ <g id="shape19-28" v:mID="19" v:groupContext="shape" v:layerMember="1" transform="translate(223.417,-31.4772)">
+ <title>Dynamic connector.148</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 0 0 1 10.63 44.12 L10.63 55.81 A5.66929 5.66929 -180 0 0 16.3 61.48 L22.3
+ 61.48" class="st4"/>
</g>
<g id="shape20-33" v:mID="20" v:groupContext="shape" v:layerMember="0" transform="translate(112.676,-2.13018)">
- <title content="structured text">Process.149</title>
- <desc content="structured text">column</desc>
+ <title>Process.149</title>
+ <desc>conditionalElement</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"/>
@@ -111,16 +121,26 @@
<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="18.9765" cy="10.9302" width="37.96" height="13.3396"/>
- <rect x="0" y="4.26036" width="37.953" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
- <text x="6.08" y="13.33" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>column</text> </g>
- <g id="shape21-36" v:mID="21" v:groupContext="shape" v:layerMember="1" transform="translate(95.8149,-1.71339)">
- <title content="structured text">Dynamic connector.150</title>
- <path d="M0 10.51 L14.1 10.51" class="st4"/>
+ <v:textRect cx="36.2367" cy="32.134" width="72.48" height="13.3396"/>
+ <rect x="0" y="25.4641" width="72.4735" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="2.43" y="34.53" class="st2" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>conditionalElement</text> </g>
+ <g id="shape21-36" v:mID="21" v:groupContext="shape" v:layerMember="1" transform="translate(95.8149,-31.894)">
+ <title>Dynamic connector.150</title>
+ <path d="M0 38.8 L4.89 38.8 A4.8872 4.8872 0 0 1 9.77 43.69 L9.77 58.35 A3.54331 3.54331 -180 0 0 13.32 61.9 L14.1 61.9"
+ class="st4"/>
</g>
- <g id="shape22-41" v:mID="22" v:groupContext="shape" v:layerMember="1" transform="translate(150.629,-1.71339)">
- <title content="structured text">Dynamic connector.151</title>
- <path d="M0 10.51 L13.57 10.51" class="st4"/>
+ <g id="shape22-41" v:mID="22" v:groupContext="shape" v:layerMember="1" transform="translate(185.149,-8.8)">
+ <title>Dynamic connector.151</title>
+ <path d="M0 38.8 L5.31 38.8 A5.31496 5.31496 -180 0 0 10.63 33.49 L10.63 19.94 A3.81417 3.81417 0 0 1 14.44 16.13 L15.5
+ 16.13" class="st4"/>
</g>
+ <g id="shape41-46" v:mID="41" v:groupContext="shape" v:layerMember="1" transform="translate(57.4634,-1.71339)">
+ <title>Dynamic connector.41</title>
+ <path d="M0 31.72 L52.45 31.72" class="st4"/>
+ </g>
+ <g id="shape152-51" v:mID="152" v:groupContext="shape" v:layerMember="1" transform="translate(185.149,-1.71339)">
+ <title>Dynamic connector.152</title>
+ <path d="M0 31.72 L60.57 31.72" class="st4"/>
+ </g>
</g>
-</svg>
\ No newline at end of file
+</svg>
Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/pattern.vsd
===================================================================
(Binary files differ)
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.svg (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixAnd.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -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 prefixAnd.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="3.61366in"
+ height="0.484719in" viewBox="0 0 260.184 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 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+ .st5 {marker-end:url(#mrkr2-19);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-19" 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="shape108-1" v:mID="108" v:groupContext="shape" v:layerMember="0" transform="translate(34.4225,-2.13018)">
+ <title>Process.108</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="9.49589" cy="28.2299" width="19" height="13.3396"/>
+ <rect x="0" y="21.5601" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" 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="shape110-5" v:mID="110" v:groupContext="shape" v:layerMember="0" transform="translate(69.8556,-2.13018)">
+ <title>Process.110</title>
+ <desc>‘and’</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="11.9052" cy="28.2299" width="23.82" height="13.3396"/>
+ <rect x="0" y="21.5601" width="23.8103" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="3.45" y="30.63" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">and</tspan>’</text> </g>
+ <g id="shape111-9" v:mID="111" v:groupContext="shape" v:layerMember="0" transform="translate(126.549,-2.13018)">
+ <title>Process.111</title>
+ <desc>CE</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.4689" cy="28.2299" width="42.94" height="13.3396"/>
+ <rect x="0" y="21.5601" width="42.9378" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="15.92" y="30.63" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>CE</text> </g>
+ <g id="shape112-12" v:mID="112" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.24,-2.96391)">
+ <title>On-page reference.112</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="shape113-14" v:mID="113" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-1.71339)">
+ <title>Dynamic connector.113</title>
+ <path d="M0 27.81 L19.75 27.81" class="st5"/>
+ </g>
+ <g id="shape114-20" v:mID="114" v:groupContext="shape" v:layerMember="1" transform="translate(53.4143,-1.71339)">
+ <title>Dynamic connector.114</title>
+ <path d="M0 27.81 L13.68 27.81" class="st5"/>
+ </g>
+ <g id="shape115-25" v:mID="115" v:groupContext="shape" v:layerMember="1" transform="translate(93.666,-1.71339)">
+ <title>Dynamic connector.115</title>
+ <path d="M0 27.81 L30.12 27.81" class="st5"/>
+ </g>
+ <g id="shape116-30" v:mID="116" v:groupContext="shape" v:layerMember="1" transform="translate(169.486,-1.71339)">
+ <title>Dynamic connector.116</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-47.9 10.51 A5.66929 5.66929 -180 0 0 -53.57 16.18 L-53.57 22.5 A5.31496 5.31496 -180 0 0 -48.25 27.81
+ L-45.7 27.81" class="st5"/>
+ </g>
+ <g id="shape117-35" v:mID="117" v:groupContext="shape" v:layerMember="0" transform="translate(204.501,-2.13018)">
+ <title>Process.117</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="9.49589" cy="28.2299" width="19" height="13.3396"/>
+ <rect x="0" y="21.5601" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" 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="shape118-39" v:mID="118" v:groupContext="shape" v:layerMember="1;0" transform="translate(248.271,-2.96391)">
+ <title>On-page reference.118</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="shape119-41" v:mID="119" v:groupContext="shape" v:layerMember="1" transform="translate(169.486,-1.71339)">
+ <title>Dynamic connector.119</title>
+ <path d="M0 27.81 L32.25 27.81" class="st5"/>
+ </g>
+ <g id="shape120-46" v:mID="120" v:groupContext="shape" v:layerMember="1" transform="translate(223.493,-1.71339)">
+ <title>Dynamic connector.120</title>
+ <path d="M0 27.81 L22.02 27.81" class="st5"/>
+ </g>
+ </g>
+</svg>
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.png
===================================================================
(Binary files differ)
Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.svg (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Language/prefixOr.svg 2007-07-22 17:59:58 UTC (rev 13709)
@@ -0,0 +1,166 @@
+<?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 prefixOr.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.81213in"
+ height="0.474097in" viewBox="0 0 346.474 34.135" 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 {fill:#000000;font-family:Arial;font-size:0.666664em;font-style:italic}
+ .st5 {marker-end:url(#mrkr2-19);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-19" 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="shape121-1" v:mID="121" v:groupContext="shape" v:layerMember="0" transform="translate(120.712,-2.13018)">
+ <title>Process.121</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="9.49589" cy="27.4652" width="19" height="13.3396"/>
+ <rect x="0" y="20.7954" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="29.87" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">(</tspan>’</text> </g>
+ <g id="shape122-5" v:mID="122" v:groupContext="shape" v:layerMember="0" transform="translate(156.146,-2.13018)">
+ <title>Process.122</title>
+ <desc>‘or’</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="11.9052" cy="27.4652" width="23.82" height="13.3396"/>
+ <rect x="0" y="20.7954" width="23.8103" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.57" y="29.87" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">or</tspan>’</text> </g>
+ <g id="shape123-9" v:mID="123" v:groupContext="shape" v:layerMember="0" transform="translate(212.838,-2.13018)">
+ <title>Process.123</title>
+ <desc>CE</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.4689" cy="27.4652" width="42.94" height="13.3396"/>
+ <rect x="0" y="20.7954" width="42.9378" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="15.92" y="29.87" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>CE</text> </g>
+ <g id="shape124-12" v:mID="124" v:groupContext="shape" v:layerMember="1;0" transform="translate(0.24,-2.96391)">
+ <title>On-page reference.124</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 28.3 A5.83609 5.83609 0 1 1 11.67 28.3 A5.83609 5.83609 0 0 1 0 28.3 Z" class="st1"/>
+ </g>
+ <g id="shape140-14" v:mID="140" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-1.71339)">
+ <title>Dynamic connector.140</title>
+ <path d="M0 27.05 L106.04 27.05" class="st5"/>
+ </g>
+ <g id="shape141-20" v:mID="141" v:groupContext="shape" v:layerMember="1" transform="translate(139.704,-1.71339)">
+ <title>Dynamic connector.141</title>
+ <path d="M0 27.05 L13.68 27.05" class="st5"/>
+ </g>
+ <g id="shape142-25" v:mID="142" v:groupContext="shape" v:layerMember="1" transform="translate(179.956,-1.71339)">
+ <title>Dynamic connector.142</title>
+ <path d="M0 27.05 L30.12 27.05" class="st5"/>
+ </g>
+ <g id="shape143-30" v:mID="143" v:groupContext="shape" v:layerMember="1" transform="translate(255.776,-1.71339)">
+ <title>Dynamic connector.143</title>
+ <path d="M0 27.05 L5.31 27.05 A5.31496 5.31496 -180 0 0 10.63 21.73 L10.63 16.48 A5.66929 5.66929 -180 0 0 4.96 10.81
+ L-47.9 10.81 A5.66929 5.66929 -180 0 0 -53.57 16.48 L-53.57 21.73 A5.31496 5.31496 -180 0 0 -48.25 27.05
+ L-45.7 27.05" class="st5"/>
+ </g>
+ <g id="shape144-35" v:mID="144" v:groupContext="shape" v:layerMember="0" transform="translate(290.791,-2.13018)">
+ <title>Process.144</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="9.49589" cy="27.4652" width="19" height="13.3396"/>
+ <rect x="0" y="20.7954" width="18.9918" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="6.39" y="29.87" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>‘<tspan class="st3"
+ v:langID="2057">)</tspan>’</text> </g>
+ <g id="shape145-39" v:mID="145" v:groupContext="shape" v:layerMember="1;0" transform="translate(334.561,-2.96391)">
+ <title>On-page reference.145</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 28.3 A5.83609 5.83609 0 1 1 11.67 28.3 A5.83609 5.83609 0 0 1 0 28.3 Z" class="st1"/>
+ </g>
+ <g id="shape146-41" v:mID="146" v:groupContext="shape" v:layerMember="1" transform="translate(255.776,-1.71339)">
+ <title>Dynamic connector.146</title>
+ <path d="M0 27.05 L32.25 27.05" class="st5"/>
+ </g>
+ <g id="shape147-46" v:mID="147" v:groupContext="shape" v:layerMember="1" transform="translate(309.783,-1.71339)">
+ <title>Dynamic connector.147</title>
+ <path d="M0 27.05 L22.02 27.05" class="st5"/>
+ </g>
+ <g id="shape148-51" v:mID="148" v:groupContext="shape" v:layerMember="0" transform="translate(37.7568,-20.5554)">
+ <title>Process.148</title>
+ <desc>patternBinding</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="27.8469" cy="27.4652" width="55.7" height="13.3396"/>
+ <rect x="0" y="20.7954" width="55.6937" height="13.3396" rx="2.83465" ry="2.83465" class="st1"/>
+ <text x="2.05" y="29.87" class="st4" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>patternBinding</text> </g>
+ <g id="shape149-54" v:mID="149" v:groupContext="shape" v:layerMember="1" transform="translate(11.9122,-8.8)">
+ <title>Dynamic connector.149</title>
+ <path d="M0 34.14 L5.31 34.14 A5.31496 5.31496 -180 0 0 10.63 28.82 L10.63 21.38 A5.66929 5.66929 0 0 1 16.3 15.71 L23.08
+ 15.71" class="st5"/>
+ </g>
+ <g id="shape150-59" v:mID="150" v:groupContext="shape" v:layerMember="1" transform="translate(93.4505,-27.2252)">
+ <title>Dynamic connector.150</title>
+ <path d="M0 34.14 L6.17 34.14 A5.66929 5.66929 0 0 1 11.84 39.8 L11.84 46.89 A5.66929 5.66929 -180 0 0 17.51 52.56 L24.5
+ 52.56" class="st5"/>
+ </g>
+ </g>
+</svg>
More information about the jboss-svn-commits
mailing list