From: <jbo...@li...> - 2006-05-21 23:58:58
|
Author: mar...@jb... Date: 2006-05-21 19:58:44 -0400 (Sun, 21 May 2006) New Revision: 4336 Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.png labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.svg labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.png labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.svg labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.png labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.svg labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.png labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.svg labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.png labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.svg Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/A_Basic_Rete_Network.vsd labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rete_Algorithm.xml labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rules.xml labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-What_is_a_Rule_Engine.xml Log: -more Rule Engine docs Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/A_Basic_Rete_Network.vsd =================================================================== (Binary files differ) Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.png =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.svg =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.svg 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Alpha_Nodes.svg 2006-05-21 23:58:44 UTC (rev 4336) @@ -0,0 +1,95 @@ +<?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 Alpha_Nodes.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="2.37892in" + height="2.46346in" viewBox="0 0 171.283 177.369" 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:#3366ff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st2 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {marker-end:url(#mrkr4-10);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:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st6 {fill:#000000;font-family:Arial;font-size:0.833336em} + .st7 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend4"> + <path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/> + </g> + <marker id="mrkr4-10" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" 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="Connector" v:index="0"/> + <v:layer v:name="Flowchart" v:index="1"/> + <g id="shape79-1" v:mID="79" v:groupContext="shape" v:layerMember="0;1" transform="translate(35.8381,-127.988)"> + <title>On-page reference.79</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 163.2 A14.1732 14.1732 0 0 1 28.35 163.2 A14.1732 14.1732 0 1 1 0 163.2 Z" class="st1"/> + </g> + <g id="shape80-3" v:mID="80" v:groupContext="shape" v:layerMember="0;1" transform="translate(35.8381,-63.1219)"> + <title>On-page reference.80</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 163.2 A14.1732 14.1732 0 0 1 28.35 163.2 A14.1732 14.1732 0 1 1 0 163.2 Z" class="st2"/> + </g> + <g id="shape81-5" v:mID="81" v:groupContext="shape" v:layerMember="0" transform="translate(57.098,-127.988)"> + <title>Dynamic connector.81</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M-7.09 177.37 L-7.09 208.37" class="st3"/> + </g> + <g id="shape82-11" v:mID="82" v:groupContext="shape" transform="translate(0.72,-164.649)"> + <title>Sheet.82</title> + <desc>Cheese</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="171.369" width="100.01" height="12"/> + <rect x="0" y="165.369" width="100" height="12" class="st5"/> + <text x="32.77" y="174.37" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Cheese</text> </g> + <g id="shape83-14" v:mID="83" v:groupContext="shape" v:layerMember="0" transform="translate(42.9247,-63.1219)"> + <title>Dynamic connector.83</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 177.37 L7.09 206.38" class="st3"/> + </g> + <g id="shape84-19" v:mID="84" v:groupContext="shape" transform="translate(66.6255,-71.2951)"> + <title>Sheet.84</title> + <desc>name == “cheddar”</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="171.369" width="100.01" height="12"/> + <rect x="0" y="165.369" width="100" height="12" class="st5"/> + <text x="7.48" y="174.37" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>name == “cheddar”</text> </g> + <g id="shape91-22" v:mID="91" v:groupContext="shape" v:layerMember="0;1" transform="translate(35.8381,-0.24)"> + <title>On-page reference.91</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 163.2 A14.1732 14.1732 0 0 1 28.35 163.2 A14.1732 14.1732 0 1 1 0 163.2 Z" class="st2"/> + </g> + <g id="shape93-24" v:mID="93" v:groupContext="shape" transform="translate(70.5625,-8.41323)"> + <title>Sheet.93</title> + <desc>strength == “strong”</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="171.369" width="100.01" height="12"/> + <rect x="0" y="165.369" width="100" height="12" class="st5"/> + <text x="4.7" y="174.37" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>strength == “strong”</text> </g> + </g> +</svg> Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.png =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.svg =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.svg 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Join_Node.svg 2006-05-21 23:58:44 UTC (rev 4336) @@ -0,0 +1,149 @@ +<?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 Join_Node.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.29493in" + height="4.25016in" viewBox="0 0 309.235 306.012" xml:space="preserve" color-interpolation-filters="sRGB" class="st11"> + <v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/> + + <style type="text/css"> + <![CDATA[ + .st1 {fill:#3366ff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st2 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {marker-end:url(#mrkr4-10);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:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st6 {fill:#000000;font-family:Arial;font-size:0.833336em} + .st7 {fill:#00ff00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st8 {fill:#ffcc00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st9 {font-size:1em} + .st10 {marker-end:url(#mrkr4-40);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st11 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend4"> + <path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/> + </g> + <marker id="mrkr4-10" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/> + </marker> + <marker id="mrkr4-40" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="21.5" refX="-21.5" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" 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="Connector" v:index="0"/> + <v:layer v:name="Flowchart" v:index="1"/> + <g id="shape47-1" v:mID="47" v:groupContext="shape" v:layerMember="0;1" transform="translate(36.5468,-250.299)"> + <title>On-page reference.47</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 291.84 A14.1732 14.1732 0 0 1 28.35 291.84 A14.1732 14.1732 0 1 1 0 291.84 Z" class="st1"/> + </g> + <g id="shape48-3" v:mID="48" v:groupContext="shape" v:layerMember="0;1" transform="translate(36.5468,-179.433)"> + <title>On-page reference.48</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 291.84 A14.1732 14.1732 0 0 1 28.35 291.84 A14.1732 14.1732 0 1 1 0 291.84 Z" class="st2"/> + </g> + <g id="shape49-5" v:mID="49" v:groupContext="shape" v:layerMember="0" transform="translate(43.6334,-250.299)"> + <title>Dynamic connector.49</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 306.01 L7.09 343.01" class="st3"/> + </g> + <g id="shape50-11" v:mID="50" v:groupContext="shape" transform="translate(0.72,-292.441)"> + <title>Sheet.50</title> + <desc>Cheese</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="300.012" width="100.01" height="12"/> + <rect x="0" y="294.012" width="100" height="12" class="st5"/> + <text x="32.77" y="303.01" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Cheese</text> </g> + <g id="shape55-14" v:mID="55" v:groupContext="shape" transform="translate(67.3342,-193.607)"> + <title>Sheet.55</title> + <desc>name == “cheddar”</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="300.012" width="100.01" height="12"/> + <rect x="0" y="294.012" width="100" height="12" class="st5"/> + <text x="7.48" y="303.01" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>name == “cheddar”</text> </g> + <g id="shape43-17" v:mID="43" v:groupContext="shape" v:layerMember="0;1" transform="translate(206.744,-250.299)"> + <title>On-page reference.43</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 291.84 A14.1732 14.1732 0 0 1 28.35 291.84 A14.1732 14.1732 0 1 1 0 291.84 Z" class="st1"/> + </g> + <g id="shape44-19" v:mID="44" v:groupContext="shape" v:layerMember="1" transform="translate(106.311,563.362) scale(1,-1)"> + <title>Manual operation</title> + <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="AntiScale" v:val="VT0(1):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"/> + <path d="M14.17 306.01 L56.69 306.01 L70.87 263.49 L0 263.49 L14.17 306.01 Z" class="st7"/> + </g> + <g id="shape45-21" v:mID="45" v:groupContext="shape" v:layerMember="0;1" transform="translate(36.5468,-109.04)"> + <title>On-page reference.45</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 291.84 A14.1732 14.1732 0 0 1 28.35 291.84 A14.1732 14.1732 0 1 1 0 291.84 Z" class="st8"/> + </g> + <g id="shape46-23" v:mID="46" v:groupContext="shape" v:layerMember="0" transform="translate(43.6334,-179.433)"> + <title>Dynamic connector</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 306.01 L7.09 342.54" class="st3"/> + </g> + <g id="shape53-28" v:mID="53" v:groupContext="shape" transform="translate(173.555,-293.292)"> + <title>Sheet.53</title> + <desc>Person</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="300.012" width="100.01" height="12"/> + <rect x="0" y="294.012" width="100" height="12" class="st5"/> + <text x="34.16" y="303.01" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person</text> </g> + <g id="shape57-31" v:mID="57" v:groupContext="shape" transform="translate(179.854,-6.00027)"> + <title>Sheet.57</title> + <desc>Person.favouriteCheese == Cheese.name</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="64.3307" cy="300.012" width="128.67" height="12"/> + <rect x="0" y="294.012" width="128.661" height="12" class="st5"/> + <text x="3.45" y="297.01" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person.favouriteCheese == <tspan + x="33.19" dy="1.2em" class="st9">Cheese</tspan>.name</text> </g> + <g id="shape58-35" v:mID="58" v:groupContext="shape" v:layerMember="0" transform="translate(50.72,-109.04)"> + <title>Dynamic connector.58</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 306.01 C0 326.42 -1.58 348.16 11.1 363.81 C21.58 376.75 41.8 385.52 57.17 387.31 L57.53 387.33" + class="st10"/> + </g> + <g id="shape59-41" v:mID="59" v:groupContext="shape" v:layerMember="0" transform="translate(220.917,-250.299)"> + <title>Dynamic connector.59</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 306.01 C0 414.89 -3.87 456.43 -18.58 491.78 C-25.52 508.47 -34.89 523.78 -45.41 527.85 L-45.76 527.92" + class="st10"/> + </g> + </g> +</svg> Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.png =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.svg =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.svg 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Node_Sharing.svg 2006-05-21 23:58:44 UTC (rev 4336) @@ -0,0 +1,237 @@ +<?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 Node_Sharing.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.75972in" + height="7.68743in" viewBox="0 0 342.7 553.495" xml:space="preserve" color-interpolation-filters="sRGB" class="st12"> + <v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/> + + <style type="text/css"> + <![CDATA[ + .st1 {fill:#3366ff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st2 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {marker-end:url(#mrkr4-10);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;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st6 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st7 {fill:#000000;font-family:Arial;font-size:0.833336em} + .st8 {fill:#00ff00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st9 {fill:#ffcc00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st10 {font-size:1em} + .st11 {marker-end:url(#mrkr4-53);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st12 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend4"> + <path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/> + </g> + <marker id="mrkr4-10" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/> + </marker> + <marker id="mrkr4-53" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="21.5" refX="-21.5" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" 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="Connector" v:index="0"/> + <v:layer v:name="Flowchart" v:index="1"/> + <g id="shape1-1" v:mID="1" v:groupContext="shape" v:layerMember="0;1" transform="translate(26.3893,-497.027)"> + <title>On-page reference.47</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 539.32 A14.1732 14.1732 0 0 1 28.35 539.32 A14.1732 14.1732 0 1 1 0 539.32 Z" class="st1"/> + </g> + <g id="shape2-3" v:mID="2" v:groupContext="shape" v:layerMember="0;1" transform="translate(26.3893,-426.16)"> + <title>On-page reference.48</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 539.32 A14.1732 14.1732 0 0 1 28.35 539.32 A14.1732 14.1732 0 1 1 0 539.32 Z" class="st2"/> + </g> + <g id="shape3-5" v:mID="3" v:groupContext="shape" v:layerMember="0" transform="translate(33.4759,-497.027)"> + <title>Dynamic connector.49</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 553.49 L7.09 590.49" class="st3"/> + </g> + <g id="shape4-11" v:mID="4" v:groupContext="shape" v:layerMember="1" transform="translate(104.657,-204.113)"> + <title>Terminator.51</title> + <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"/> + <path d="M14.17 553.49 L56.69 553.49 A14.1732 14.1732 -180 0 0 56.69 525.15 L14.17 525.15 A14.1732 14.1732 -180 1 0 14.17 + 553.49 Z" class="st5"/> + </g> + <g id="shape5-13" v:mID="5" v:groupContext="shape" v:layerMember="0" transform="translate(133.003,-281.783)"> + <title>Dynamic connector.52</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 553.49 L7.09 597.3" class="st3"/> + </g> + <g id="shape6-18" v:mID="6" v:groupContext="shape" transform="translate(57.1767,-440.334)"> + <title>Sheet.6</title> + <desc>name == “cheddar”</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="547.495" width="100.01" height="12"/> + <rect x="0" y="541.495" width="100" height="12" class="st6"/> + <text x="7.48" y="550.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>name == “cheddar”</text> </g> + <g id="shape7-21" v:mID="7" v:groupContext="shape" v:layerMember="0;1" transform="translate(274.066,-497.783)"> + <title>On-page reference.43</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 539.32 A14.1732 14.1732 0 0 1 28.35 539.32 A14.1732 14.1732 0 1 1 0 539.32 Z" class="st1"/> + </g> + <g id="shape8-23" v:mID="8" v:groupContext="shape" v:layerMember="1" transform="translate(104.657,782.687) scale(1,-1)"> + <title>Manual operation</title> + <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="AntiScale" v:val="VT0(1):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"/> + <path d="M14.17 553.49 L56.69 553.49 L70.87 510.97 L0 510.97 L14.17 553.49 Z" class="st8"/> + </g> + <g id="shape9-25" v:mID="9" v:groupContext="shape" v:layerMember="0;1" transform="translate(26.3893,-355.767)"> + <title>On-page reference.45</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 539.32 A14.1732 14.1732 0 0 1 28.35 539.32 A14.1732 14.1732 0 1 1 0 539.32 Z" class="st9"/> + </g> + <g id="shape10-27" v:mID="10" v:groupContext="shape" v:layerMember="0" transform="translate(33.4759,-426.16)"> + <title>Dynamic connector</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 553.49 L7.09 590.02" class="st3"/> + </g> + <g id="shape11-32" v:mID="11" v:groupContext="shape" transform="translate(240.877,-540.775)"> + <title>Sheet.11</title> + <desc>Person</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="547.495" width="100.01" height="12"/> + <rect x="0" y="541.495" width="100" height="12" class="st6"/> + <text x="34.16" y="550.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person</text> </g> + <g id="shape12-35" v:mID="12" v:groupContext="shape" transform="translate(145.287,-257.972)"> + <title>Sheet.12</title> + <desc>Person.favouriteCheese == Cheese.name</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="64.3307" cy="547.495" width="128.67" height="12"/> + <rect x="0" y="541.495" width="128.661" height="12" class="st6"/> + <text x="3.45" y="544.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person.favouriteCheese == <tspan + x="33.19" dy="1.2em" class="st10">Cheese</tspan>.name</text> </g> + <g id="shape15-39" v:mID="15" v:groupContext="shape" transform="translate(0.72,-180.775)"> + <title>Sheet.15</title> + <desc>System.out.println( person.getName() + " likes cheddar" )</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="132.303" cy="547.495" width="264.61" height="12"/> + <rect x="0" y="541.495" width="264.606" height="12" class="st6"/> + <text x="5.78" y="550.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>System.out.println( person.getName() + " likes cheddar" )</text> </g> + <g id="shape17-42" v:mID="17" v:groupContext="shape" v:layerMember="1" transform="translate(142.452,956.734) scale(1,-1)"> + <title>Manual operation.17</title> + <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="AntiScale" v:val="VT0(1):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"/> + <path d="M14.17 553.49 L56.69 553.49 L70.87 510.97 L0 510.97 L14.17 553.49 Z" class="st8"/> + </g> + <g id="shape18-44" v:mID="18" v:groupContext="shape" transform="translate(213.318,-107.735)"> + <title>Sheet.18</title> + <desc>Person.favouriteCheese != Cheese.name</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="64.3307" cy="547.495" width="128.67" height="12"/> + <rect x="0" y="541.495" width="128.661" height="12" class="st6"/> + <text x="4.98" y="544.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person.favouriteCheese != <tspan + x="33.19" dy="1.2em" class="st10">Cheese</tspan>.name</text> </g> + <g id="shape19-48" v:mID="19" v:groupContext="shape" v:layerMember="0" transform="translate(288.24,-497.783)"> + <title>Dynamic connector.19</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 553.49 C0 645.69 -0 801.81 -19.6 869.81 C-33.39 917.69 -56.9 921.88 -76.49 922.25 L-76.85 922.25" + class="st11"/> + </g> + <g id="shape13-54" v:mID="13" v:groupContext="shape" v:layerMember="0" transform="translate(40.5625,-355.767)"> + <title>Dynamic connector.13</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 553.49 C-0 566.68 0 585.64 12.28 595.51 C24.29 605.17 48.06 606.12 65.66 606.21 L66.02 606.21" class="st11"/> + </g> + <g id="shape20-59" v:mID="20" v:groupContext="shape" v:layerMember="0" transform="translate(40.5625,-355.767)"> + <title>Dynamic connector.20</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 553.49 C-0 610.19 0 702.72 24.19 744.91 C43.13 777.93 76.89 780.11 103.46 780.26 L103.82 780.26" + class="st11"/> + </g> + <g id="shape14-64" v:mID="14" v:groupContext="shape" v:layerMember="0" transform="translate(288.24,-497.783)"> + <title>Dynamic connector.14</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 553.49 C-0 602.18 0 679.84 -25.4 716.2 C-46.43 746.31 -84.87 748.12 -114.28 748.23 L-114.64 748.23" + class="st11"/> + </g> + <g id="shape21-69" v:mID="21" v:groupContext="shape" v:layerMember="1" transform="translate(142.452,-29.3389)"> + <title>Terminator.21</title> + <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"/> + <path d="M14.17 553.49 L56.69 553.49 A14.1732 14.1732 -180 0 0 56.69 525.15 L14.17 525.15 A14.1732 14.1732 -180 1 0 14.17 + 553.49 Z" class="st5"/> + </g> + <g id="shape22-71" v:mID="22" v:groupContext="shape" v:layerMember="0" transform="translate(170.799,-107.735)"> + <title>Dynamic connector.22</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 553.49 L7.09 598.02" class="st3"/> + </g> + <g id="shape23-76" v:mID="23" v:groupContext="shape" transform="translate(45.5822,-6.00027)"> + <title>Sheet.23</title> + <desc>System.out.println( person.getName() + " does not like chedda...</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="132.303" cy="547.495" width="264.61" height="12"/> + <rect x="0" y="541.495" width="264.606" height="12" class="st6"/> + <text x="12" y="544.49" class="st7" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>System.out.println( person.getName() + " does not like <tspan + x="109.4" dy="1.2em" class="st10">cheddar</tspan>" )</text> </g> + </g> +</svg> Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.png =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.svg =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.svg 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Object_Type_Nodes.svg 2006-05-21 23:58:44 UTC (rev 4336) @@ -0,0 +1,114 @@ +<?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 Object_Type_Nodes.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="2.78876in" + height="2.3339in" viewBox="0 0 200.79 168.041" xml:space="preserve" color-interpolation-filters="sRGB" class="st8"> + <v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/> + + <style type="text/css"> + <![CDATA[ + .st1 {fill:#000000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st2 {fill:#3366ff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {marker-end:url(#mrkr4-10);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:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st6 {fill:#000000;font-family:Arial;font-size:0.833336em} + .st7 {marker-end:url(#mrkr4-29);stroke:#4677bf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st8 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend4"> + <path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/> + </g> + <marker id="mrkr4-10" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="23" refX="-23" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" transform="scale(-11.5,-11.5) "/> + </marker> + <marker id="mrkr4-29" class="st4" v:arrowType="4" v:arrowSize="2" v:setback="21.5" refX="-21.5" orient="auto" + markerUnits="strokeWidth"> + <use xlink:href="#lend4" 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="Connector" v:index="0"/> + <v:layer v:name="Flowchart" v:index="1"/> + <g id="shape65-1" v:mID="65" v:groupContext="shape" v:layerMember="0;1" transform="translate(82.4326,-115.618)"> + <title>On-page reference.65</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 153.87 A14.1732 14.1732 0 0 1 28.35 153.87 A14.1732 14.1732 0 1 1 0 153.87 Z" class="st1"/> + </g> + <g id="shape66-3" v:mID="66" v:groupContext="shape" v:layerMember="0;1" transform="translate(12.472,-48.6912)"> + <title>On-page reference.66</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 153.87 A14.1732 14.1732 0 0 1 28.35 153.87 A14.1732 14.1732 0 1 1 0 153.87 Z" class="st2"/> + </g> + <g id="shape67-5" v:mID="67" v:groupContext="shape" v:layerMember="0" transform="translate(19.5586,-48.6912)"> + <title>Dynamic connector.67</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 168.04 L7.09 205.04" class="st3"/> + </g> + <g id="shape68-11" v:mID="68" v:groupContext="shape" transform="translate(0.72,-91.8539)"> + <title>Sheet.68</title> + <desc>Cheese</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="25.9252" cy="162.041" width="51.86" height="12"/> + <rect x="0" y="156.041" width="51.8504" height="12" class="st5"/> + <text x="8.69" y="165.04" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Cheese</text> </g> + <g id="shape69-14" v:mID="69" v:groupContext="shape" v:layerMember="0;1" transform="translate(149.047,-48.6912)"> + <title>On-page reference.69</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 153.87 A14.1732 14.1732 0 0 1 28.35 153.87 A14.1732 14.1732 0 1 1 0 153.87 Z" class="st2"/> + </g> + <g id="shape70-16" v:mID="70" v:groupContext="shape" transform="translate(149.48,-91.6834)"> + <title>Sheet.70</title> + <desc>Person</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="25.2953" cy="162.041" width="50.6" height="12"/> + <rect x="0" y="156.041" width="50.5906" height="12" class="st5"/> + <text x="9.46" y="165.04" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Person</text> </g> + <g id="shape71-19" v:mID="71" v:groupContext="shape" v:layerMember="0" transform="translate(156.133,-48.6912)"> + <title>Dynamic connector.71</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M7.09 168.04 L7.09 205.04" class="st3"/> + </g> + <g id="shape72-24" v:mID="72" v:groupContext="shape" v:layerMember="0" transform="translate(96.6058,-115.618)"> + <title>Dynamic connector.72</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 168.04 C0 187.01 -55.71 189.05 -67.7 201.58 L-67.85 201.91" class="st7"/> + </g> + <g id="shape73-30" v:mID="73" v:groupContext="shape" v:layerMember="0" transform="translate(96.6058,-115.618)"> + <title>Dynamic connector.73</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <path d="M0 168.04 C0 187 52.95 189.05 64.44 201.55 L64.58 201.88" class="st7"/> + </g> + <g id="shape74-35" v:mID="74" v:groupContext="shape" transform="translate(64.6373,-155.321)"> + <title>Sheet.74</title> + <desc>ReteNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="31.9685" cy="162.041" width="63.94" height="12"/> + <rect x="0" y="156.041" width="63.937" height="12" class="st5"/> + <text x="9.46" y="165.04" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>ReteNode</text> </g> + </g> +</svg> Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.png =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.svg =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.svg 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Rete_Nodes.svg 2006-05-21 23:58:44 UTC (rev 4336) @@ -0,0 +1,167 @@ +<?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 Rete_Nodes.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.35694in" + height="2.71336in" viewBox="0 0 313.7 195.362" xml:space="preserve" color-interpolation-filters="sRGB" class="st9"> + <v:documentProperties v:langID="1033" v:metric="true" v:viewMarkup="false"/> + + <style type="text/css"> + <![CDATA[ + .st1 {fill:#3366ff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st2 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {fill:#ffcc00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st4 {fill:#000000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st6 {fill:#000000;font-family:Arial;font-size:0.833336em} + .st7 {fill:#00ff00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st8 {fill:#ffff00;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st9 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <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="Connector" v:index="0"/> + <v:layer v:name="Flowchart" v:index="1"/> + <g id="shape35-1" v:mID="35" v:groupContext="shape" v:layerMember="0;1" transform="translate(2.75173,-166.067)"> + <title>On-page reference.35</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 181.19 A14.1732 14.1732 0 0 1 28.35 181.19 A14.1732 14.1732 0 1 1 0 181.19 Z" class="st1"/> + </g> + <g id="shape36-3" v:mID="36" v:groupContext="shape" v:layerMember="0;1" transform="translate(2.75173,-120.712)"> + <title>On-page reference.36</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 181.19 A14.1732 14.1732 0 0 1 28.35 181.19 A14.1732 14.1732 0 1 1 0 181.19 Z" class="st2"/> + </g> + <g id="shape37-5" v:mID="37" v:groupContext="shape" v:layerMember="0;1" transform="translate(2.75173,-75.3581)"> + <title>On-page reference.37</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 181.19 A14.1732 14.1732 0 0 1 28.35 181.19 A14.1732 14.1732 0 1 1 0 181.19 Z" class="st3"/> + </g> + <g id="shape38-7" v:mID="38" v:groupContext="shape" v:layerMember="1" transform="translate(142.114,-0.24)"> + <title>Terminator.40</title> + <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"/> + <path d="M14.17 195.36 L56.69 195.36 A14.1732 14.1732 -180 0 0 56.69 167.02 L14.17 167.02 A14.1732 14.1732 -180 1 0 14.17 + 195.36 Z" class="st4"/> + </g> + <g id="shape39-9" v:mID="39" v:groupContext="shape" transform="translate(25.4289,-175.531)"> + <title>Sheet.39</title> + <desc>ObjectTypeNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="189.362" width="100.01" height="12"/> + <rect x="0" y="183.362" width="100" height="12" class="st5"/> + <text x="12.48" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>ObjectTypeNode</text> </g> + <g id="shape40-12" v:mID="40" v:groupContext="shape" transform="translate(31.0982,-128.76)"> + <title>Sheet.40</title> + <desc>AlphaNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="31.9685" cy="189.362" width="63.94" height="12"/> + <rect x="0" y="183.362" width="63.937" height="12" class="st5"/> + <text x="7.23" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>AlphaNode</text> </g> + <g id="shape61-15" v:mID="61" v:groupContext="shape" v:layerMember="1" transform="translate(145.271,246.626) scale(1,-1)"> + <title>Manual operation.38</title> + <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="AntiScale" v:val="VT0(1):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"/> + <path d="M14.17 195.36 L56.69 195.36 L70.87 152.84 L0 152.84 L14.17 195.36 Z" class="st7"/> + </g> + <g id="shape62-17" v:mID="62" v:groupContext="shape" transform="translate(205.823,-122.838)"> + <title>Sheet.62</title> + <desc>JoinNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="189.362" width="100.01" height="12"/> + <rect x="0" y="183.362" width="100" height="12" class="st5"/> + <text x="28.87" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>JoinNode</text> </g> + <g id="shape63-20" v:mID="63" v:groupContext="shape" transform="translate(22.4761,-83.5313)"> + <title>Sheet.63</title> + <desc>LeftInputAdapterNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="66.1024" cy="189.362" width="132.21" height="12"/> + <rect x="0" y="183.362" width="132.205" height="12" class="st5"/> + <text x="17.17" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>LeftInputAdapterNode</text> </g> + <g id="shape64-23" v:mID="64" v:groupContext="shape" transform="translate(212.98,-6.6652)"> + <title>Sheet.64</title> + <desc>TerminalNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="189.362" width="100.01" height="12"/> + <rect x="0" y="183.362" width="100" height="12" class="st5"/> + <text x="18.6" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>TerminalNode</text> </g> + <g id="shape41-26" v:mID="41" v:groupContext="shape" v:layerMember="0;1" transform="translate(166.531,-166.775)"> + <title>On-page reference.41</title> + <v:userDefs> + <v:ud v:nameU="visVersion" v:val="VT0(11):26"/> + </v:userDefs> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <path d="M0 181.19 A14.1732 14.1732 0 0 1 28.35 181.19 A14.1732 14.1732 0 1 1 0 181.19 Z" class="st4"/> + </g> + <g id="shape42-28" v:mID="42" v:groupContext="shape" transform="translate(226.689,-174.949)"> + <title>Sheet.42</title> + <desc>ReteNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="31.9685" cy="189.362" width="63.94" height="12"/> + <rect x="0" y="183.362" width="63.937" height="12" class="st5"/> + <text x="9.46" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>ReteNode</text> </g> + <g id="shape75-31" v:mID="75" v:groupContext="shape" v:layerMember="0;1" transform="translate(0.24,-28.5865)"> + <title>On-page reference.75</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 181.19 A14.1732 14.1732 0 0 1 28.35 181.19 A14.1732 14.1732 0 1 1 0 181.19 Z" class="st7"/> + </g> + <g id="shape76-33" v:mID="76" v:groupContext="shape" transform="translate(19.9644,-36.7597)"> + <title>Sheet.76</title> + <desc>EvalNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="41.3937" cy="189.362" width="82.79" height="12"/> + <rect x="0" y="183.362" width="82.7873" height="12" class="st5"/> + <text x="19.72" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>EvalNode</text> </g> + <g id="shape77-36" v:mID="77" v:groupContext="shape" v:layerMember="1" transform="translate(141.531,304.736) scale(1,-1)"> + <title>Manual operation.77</title> + <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="AntiScale" v:val="VT0(1):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"/> + <path d="M14.17 195.36 L56.69 195.36 L70.87 152.84 L0 152.84 L14.17 195.36 Z" class="st8"/> + </g> + <g id="shape78-38" v:mID="78" v:groupContext="shape" transform="translate(202.082,-64.7282)"> + <title>Sheet.78</title> + <desc>NotNode</desc> + <v:textBlock v:margins="rect(2,2,2,2)" v:tabSpace="42.5197"/> + <v:textRect cx="50" cy="189.362" width="100.01" height="12"/> + <rect x="0" y="183.362" width="100" height="12" class="st5"/> + <text x="30.27" y="192.36" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>NotNode</text> </g> + </g> +</svg> Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rete_Algorithm.xml =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rete_Algorithm.xml 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rete_Algorithm.xml 2006-05-21 23:58:44 UTC (rev 4336) @@ -18,6 +18,20 @@ Forgy's 1982 paper, he described 4 basic nodes: root, 1-input, 2-input and terminal.</para> + <figure> + <title>Rete Nodes</title> + + <mediaobject> + <imageobject> + <imagedata align="center" fileref="Rete_Nodes.svg" format="SVG" /> + </imageobject> + + <imageobject> + <imagedata align="center" fileref="Rete_Nodes.png" format="PNG" /> + </imageobject> + </mediaobject> + </figure> + <para>The root node is where all objects enter the network. From there, it immediately goes to the ObjectTypeNode. The purpose of the ObjectTypeNode is to make sure the engine doesn't do more work than it needs to. For example, @@ -27,50 +41,137 @@ the nodes that match the object type. The easiest way to do this is to create an ObjectTypeNode and have all 1-input and 2-input nodes descend from it. This way, if an application asserts a new account, it won't propogate to - the nodes for the Order object. Many modern RETE implementation have - specialized ObjectTypeNode. In some cases, the ObjectTypeNode is further - optimized using hashing.</para> + the nodes for the Order object. In Drools when an object is asserted it + retrieves the List of valid ObjectTypesNodes via a lookup in a HashMap from + the object's Class; if this list does'nt exist it scans all the ObjectTypde + nodes finding valid matches which it caches in the List. This enables Drools + to match against any Class type that matches with an + <literal>instanceof</literal> of check.</para> - <para>One input nodes are commonly called AlphaNodes. AlphaNodes are used to - evaluate literal conditions. Although the 1982 paper only covers equality - conditions, many RETE implementations support other operations. For example, - Account.name == "Mark" is a literal conditions. When a rule has multiple - literal conditions for a single object type, they are linked together. This - means that if an application asserts an account object, it must first - satisfy the first literal condition before it can proceed to the next - AlphaNode. In Dr. Forgy's paper, he refers to these as IntraElement - conditions. ObjectTypeNode mentioned in the previous paragraph is a - specialized AlphaNode.</para> + <figure> + <title>ObjectTypeNodes</title> - <para>Two input nodes are commonly called BetaNodes. BetaNodes are use to - compare 2 objects to each other. The objects may be the same or different - types. The left input for a BetaNode is generally a list of objects. The - right input is a single object. In some cases, a rule engine may implement - several BetaNodes to handle existential conditions and negated conditional - element. Many modern RETE implementations also optimize BetaNodes through - hash or b-tree indexes.</para> + <mediaobject> + <imageobject> + <imagedata align="center" fileref="Object_Type_Nodes.svg" format="SVG" /> + </imageobject> + <imageobject> + <imagedata align="center" fileref="Object_Type_Nodes.png" format="PNG" /> + </imageobject> + </mediaobject> + </figure> + + <para>ObjectTypdeNodes can propagate to AlphaNodes, LeftInputAdapterNodes + and BetaNodes. AlphaNodes are used to evaluate literal conditions. Although + the 1982 paper only covers equality conditions, many RETE implementations + support other operations. For example, Account.name == "Mr Trout" is a + literal condition. When a rule has multiple literal conditions for a single + object type, they are linked together. This means that if an application + asserts an account object, it must first satisfy the first literal condition + before it can proceed to the next AlphaNode. In Dr. Forgy's paper, he refers + to these as IntraElement conditions. The following shows the AlphaNode + combinations for Cheese( name == "cheddar, strength == "strong" ):</para> + + <figure> + <title>AlphaNodes</title> + + <mediaobject> + <imageobject> + <imagedata align="center" fileref="Alpha_Nodes.svg" format="SVG" /> + </imageobject> + + <imageobject> + <imagedata align="center" fileref="Alpha_Nodes.png" format="PNG" /> + </imageobject> + </mediaobject> + </figure> + + <para>Drools extends Rete by optimising the propagation from ObjectTypdeNode + to AlphaNode using hashing. Each time an AlphaNode is added to an + ObjectTypdeNode it adds the literal value as a key to the HashMap with the + AlphaNode as the value. When a new instance enters the ObjectTypde node, + rather than propagating to each AlphaNode, it can instead retrieve the + correct AlphaNode from the HashMap - avoiding unecessary literal + checks.</para> + + <para>There are two two-input nodes; JoinNode and NotNode - both are + referred as BetaNodes. BetaNodes are use to compare 2 objects, and their + fields, to each other. The objects may be the same or different types. By + convention we refer to the two inputs as left and right. The left input for + a BetaNode is generally a list of objects, in Drools this is a Tuple. The + right input is a single object. Two Nots can be used to implement 'exists' + checks. BetaNodes also have memory. The left input is called the Beta Memory + and remembers all incoming tuples. The right input is called the Alpha + Memory and remembers all incoming objects. Drools extends Rete by + performaning indexing on the BetaNodes. For instance if we know that a + BetaNode is peforming a check on a String field, as each object enters we + can do a hash lookup on that String value. This means when facts enter from + the opposite side, instead of iterating over all the facts to find valid + joins we instead do a lookup returning potentially valid candidates. At any + point a valid join is found the Tuple is joined with the Object, which is + referred to as a partial match, and then propagated to the next node.</para> + + <figure> + <title>JoinNode</title> + + <mediaobject> + <imageobject> + <imagedata align="center" fileref="Join_Node.svg" format="SVG" /> + </imageobject> + + <imageobject> + <imagedata align="center" fileref="Join_Node.png" format="PNG" /> + </imageobject> + </mediaobject> + </figure> + + <para>To enable the first Object, in the above case Cheese, to enter the + network we use a LeftInputNodeAdapter - this takes an Object as an input and + propagates a single Object Tuple.</para> + <para>Terminal nodes are used to indicate a single rule has matched all its - conditions. In some cases, a rule with an OR disjunction can have more than - 1 terminal node. From a RETE network perspective a rule with OR disjunction - is really just 2 nodes with many shared nodes.</para> + conditions - at this point we say the rule has a full match. A rule with an + 'or' conditional disjunctive connective results in subrule generation for + each possible logically branch; thus one rule can have multiple terminal + nodes.</para> - <para>The second part of RETE algorithm is the runtime. When an application - asserts an object, the engine passes the data to the root node. From there, - it enters the ObjectTypeNode and propogates down the network. When the data - matches the condition of a node, the node remembers it with an AlphaMemory. - When the data reaches a BetaNode, the node adds it to the corresponding - memory. The BetaNode will propogate the data, if there is a match between - the right and left. This is done for several reasons. The primary benefit is - faster performance. Although remembering all complete and partial matches - takes memory, it provides a significant speed and scalability advantage. - When all the conditions of a rule are satisfied, it is considered a complete - match. Partial matches occur when some of the rules conditions match, but - other conditions are not. Some rule engines optimize the Beta and Alpha - memory for BetaNodes and attempt to reduce the number of evaluations between - the data in the right and left inputs.</para> + <para>Drools also performs node sharing. Many rules repeat the same + patterns, node sharing allows us to collapse those patterns so that they + don't have to be re-evaluated for every single instance. The following two + rules share the first same pattern, but not the last:</para> - <para>In general, optimizing the runtime performance of RETE through - additional indexing of the memories does not violate the basic intent and - design of RETE algorithm.</para> + <programlisting>rule + when + Cheese( $chedddar : name == "cheddar" ) + $person : Person( favouriteCheese == $cheddar ) + then + System.out.println( $person.getName() + " likes cheddar" ); +end</programlisting> + + <programlisting>rule + when + Cheese( $chedddar : name == "cheddar" ) + $person : Person( favouriteCheese != $cheddar ) + then + System.out.println( $person.getName() + " does likes cheddar" ); +end</programlisting> + + <para>As you can see the compiled Rete network shows the alpha node is + shared, but the beta nodes are not, each with their own TerminalNode. Had + the second pattern been the same it would have also been shared.</para> + + <figure> + <title>Node Sharing</title> + + <mediaobject> + <imageobject> + <imagedata align="center" fileref="Node_Sharing.svg" format="SVG" /> + </imageobject> + + <imageobject> + <imagedata align="center" fileref="Node_Sharing.png" format="PNG" /> + </imageobject> + </mediaobject> + </figure> </section> \ No newline at end of file Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rules.xml =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rules.xml 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-Rules.xml 2006-05-21 23:58:44 UTC (rev 4336) @@ -302,6 +302,8 @@ m.score < 40 )</programlisting> + <para></para> + <programlisting>rule when exists( $student : Student() && Module( student == $student, score < 40 ) )</programlisting> Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-What_is_a_Rule_Engine.xml =================================================================== --- labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-What_is_a_Rule_Engine.xml 2006-05-21 21:56:33 UTC (rev 4335) +++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Rule_Engine/Section-What_is_a_Rule_Engine.xml 2006-05-21 23:58:44 UTC (rev 4336) @@ -152,7 +152,7 @@ results in rules firing - we start with a fact, it propagates and we end in a conclusion. Drools is a forward chaining engine. Backward chaining is 'goal-driven', we start with a conclusion which the engine tries to - satisfy. If it can't it searches for conclusions, 'sub goals', that helps + satisfy. If it can't it searches for conclusions, 'sub goals', that help sa... [truncated message content] |