[jboss-svn-commits] JBL Code SVN: r15146 - in labs/jbossrules/trunk/documentation/manual/en: Chapter-Examples and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Sep 15 22:58:57 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-09-15 22:58:57 -0400 (Sat, 15 Sep 2007)
New Revision: 15146

Added:
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/guests_at_table.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/guests_at_table.vsd
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/make_path.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/make_path.vsd
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.png
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.svg
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.vsd
Removed:
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Papers/
Modified:
   labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/Section-Examples.xml
Log:
-updated examples to include manners updated documentation

Modified: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/Section-Examples.xml
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/Section-Examples.xml	2007-09-16 02:56:00 UTC (rev 15145)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/Section-Examples.xml	2007-09-16 02:58:57 UTC (rev 15146)
@@ -588,7 +588,7 @@
 
     <para>At this point the Agenda looks like the figure shown below. However
     the "Bootstrap" rule does not fire as the "Recurse" rule has a higher
-    salience. </para>
+    salience.</para>
 
     <figure>
       <title>Fibonacci Example "Recurse" Agenda View 1</title>
@@ -1333,4 +1333,623 @@
       </itemizedlist>
     </section>
   </section>
+
+  <section>
+    <title>Miss Manners and Benchmarking</title>
+
+    <programlisting><emphasis role="bold">Name:</emphasis> Miss Manners
+<emphasis role="bold">Main class:</emphasis> org.drools.benchmark.manners.MannersBenchmark
+<emphasis role="bold">Type:</emphasis> java application
+<emphasis role="bold">Rules file:</emphasis> manners.drl
+<emphasis role="bold">Objective:</emphasis> Advanced walkthrough on the Manners benchmark, covers Depth conflict resolution in depth.</programlisting>
+
+    <section>
+      <title>Introduction</title>
+
+      <para>Miss Manners is throwing a party and being the good host she wants
+      to arrange good seating. Her initial design arranges everyone in male
+      female pairs, but then she worries about people have things to talk
+      about; what is a good host to do? So she decides to note the hobby of
+      each guest so she can then arrange guests in not only male and female
+      pairs but also ensure that a guest has someone to talk about a common
+      hobby, from either their left or right side.</para>
+
+      <figure>
+        <title>Miss Manners' Guests</title>
+
+        <mediaobject>
+          <imageobject>
+            <imagedata align="center" contentwidth="300"
+                       fileref="guests_at_table.svg" format="SVG" scalefit="1" />
+          </imageobject>
+
+          <imageobject>
+            <imagedata align="center" fileref="guests_at_table.png"
+                       format="PNG" scalefit="1" />
+          </imageobject>
+        </mediaobject>
+      </figure>
+
+      <section>
+        <title>BenchMarking</title>
+
+        <para>5 benchmarks were established in the 1991 paper "Effects of
+        Database Size on Rule System Performance: Five Case Studies" by Brant,
+        Timothy Grose, Bernie Lofaso, &amp; Daniel P. Miranker.</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Manners</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Uses a depth-first search approach to determine the
+                seating arrangements of boy/girl and one common hobby for
+                dinner guests</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Waltz</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>line labeling for simple scenes by constraint
+                propagation</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>WaltzDB</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>More general version of Walts to be able to adapt to a
+                database of facts</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>ARP</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>Route planner for a robotic air vehicle using the A*
+                search algorithm</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+
+          <listitem>
+            <para>Weavera</para>
+
+            <itemizedlist>
+              <listitem>
+                <para>VLSI router for channels and boxes using a black-board
+                technique</para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </itemizedlist>
+
+        <para>Manners has become the de facto rule engine benchmark; however
+        it's behavior is now well known and many engines optimize for this
+        thus negating its usefulness as a benchmark which is why Waltz is
+        becoming more favorable. These 5 benchmarks are also published at the
+        University of Texas <ulink
+        url="http://www.cs.utexas.edu/ftp/pub/ops5-benchmark-suite/">http://www.cs.utexas.edu/ftp/pub/ops5-benchmark-suite/</ulink>.</para>
+      </section>
+
+      <section>
+        <title>Miss Manners Execution Flow</title>
+
+        <para>After the first Seating arrangement has been assigned a
+        depth-first recursion occurs which repeatedly assigns correct Seating
+        arrangements until the last seat is assigned. Manners uses a Context
+        instance to control execution flow; the activity diagram is
+        partitioned to show the relation of the rule execution to the current
+        Context state.</para>
+
+        <figure>
+          <title>Manners Activity Diagram</title>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata align="center" contentwidth="400"
+                         fileref="manners_activity_diagram.svg" format="SVG"
+                         scalefit="1" />
+            </imageobject>
+
+            <imageobject>
+              <imagedata align="center" fileref="manners_activity_diagram.png"
+                         format="PNG" scalefit="1" />
+            </imageobject>
+          </mediaobject>
+        </figure>
+      </section>
+
+      <section>
+        <title>The Data and Results</title>
+
+        <para>Before going deeper into the rules lets first take a look at the
+        asserted data and the resulting Seating arrangement. The data is a
+        simple set of 5 guests who should be arranged in male/female pairs
+        with common hobbies.</para>
+
+        <para><emphasis role="bold">The Data</emphasis></para>
+
+        <para>Each line of the results list is printed per execution of the
+        “Assign Seat” rule. They key bit to notice is that each line has pid
+        one greater than the last, the significance of this will be explained
+        in t he “Assign Seating” rule description. The 'l' and the 'r' refer
+        to the left and right, 's' is sean and 'n' is the guest name. In my
+        actual implementation I used longer notation, 'leftGuestName', but
+        this is not practice in a printed article. I found the notation of
+        left and right preferable to the original OPS5 '1' and '2</para>
+
+        <literallayout>(guest (name n1) (sex m) (hobby  h1)  )
+(guest (name n2) (sex f) (hobby  h1)  )
+(guest (name n2) (sex f) (hobby  h3)  )
+(guest (name n3) (sex m) (hobby  h3)  )
+(guest (name n4) (sex m) (hobby  h1)  )
+(guest (name n4) (sex f) (hobby  h2)  )
+(guest (name n4) (sex f) (hobby  h3)  )
+(guest (name n5) (sex f) (hobby  h2)  )
+(guest (name n5) (sex f) (hobby  h1)  )
+(last_seat (seat 5)  )</literallayout>
+
+        <para><emphasis role="bold">The Results</emphasis></para>
+
+        <literallayout>[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] 
+[Seating id=2, pid=1, done=false, ls=1, ln=n5, rs=2, rn=n4] 
+[Seating id=3, pid=2, done=false, ls=2, ln=n4, rs=3, rn=n3] 
+[Seating id=4, pid=3, done=false, ls=3, rn=n3, rs=4, rn=n2] 
+[Seating id=5, pid=4, done=false, ls=4, ln=n2, rs=5, rn=n1]</literallayout>
+      </section>
+    </section>
+
+    <section>
+      <title>Indepth look</title>
+
+      <section>
+        <title>Cheating</title>
+
+        <para>Manners has been around a long time and is a contrived benchmark
+        meant to exercise the cross product joins and agenda, many people not
+        understanding this tweak the example to achieve better perfmance,
+        making their use of the Manners benchmark pointless. Known cheats to
+        Miss Manners are:</para>
+
+        <itemizedlist>
+          <listitem>
+            <para>Using arrays for a guests hobbies, instead of asserting each
+            one as a single fact. This massively reduces the cross
+            products.</para>
+          </listitem>
+
+          <listitem>
+            <para>The altering of the sequence of data can also reducing the
+            amount of matching increase execution speed</para>
+          </listitem>
+
+          <listitem>
+            <para>Changing NOT CE (conditional element) such that the test
+            algorithm only uses the "first-best-match". Basically, changing
+            the test algorithm to backward chaining. the results are only
+            comparable to other backward chaining rule engines or ports of
+            Manners.</para>
+          </listitem>
+
+          <listitem>
+            <para>Removing the context so the rule engine matches the guests
+            and seats pre-maturely. A proper port will prevent facts from
+            matching using the context start.</para>
+          </listitem>
+
+          <listitem>
+            <para>Any change which prevents the rule engine from performing
+            combinatorial pattern matching</para>
+          </listitem>
+
+          <listitem>
+            <para>If no facts are retracted in the reasoning cycle, as a
+            result of NOT CE, the port is incorrect.</para>
+          </listitem>
+        </itemizedlist>
+      </section>
+
+      <section>
+        <title>Conflict Resolution</title>
+
+        <para>Manners benchmark was written for OPS5 which has two conflict
+        resolution strategies, LEX and MEA; LEX is a chain of several
+        strategies including Salience, Recency, Complexity. The Recency part
+        of the strategy drives the depth first (LIFO) firing order. The Clips
+        manual documents the recency strategy as:</para>
+
+        <blockquote>
+          <attribution>Clips Reference Manual</attribution>
+
+          <para>Every fact and instance is marked internally with a “time tag”
+          to indicate its relative recency with respect to every other fact
+          and instance in the system. The pattern entities associated with
+          each rule activation are sorted in descending order for determining
+          placement. An activation with a more recent pattern entities is
+          placed before activations with less recent pattern entities. To
+          determine the placement order of two activations, compare the sorted
+          time tags of the two activations one by one starting with the
+          largest time tags. The comparison should continue until one
+          activation’s time tag is greater than the other activation’s
+          corresponding time tag. The activation with the greater time tag is
+          placed before the other activation on the agenda. If one activation
+          has more pattern entities than the other activation and the compared
+          time tags are all identical, then the activation with more time tags
+          is placed before the other activation on the agenda.</para>
+        </blockquote>
+
+        <para>However Jess and Clips both use the Depth strategy, which is
+        simpler and lighter, which Drools also adopted. The Clips manual
+        documents the Depth strategy as:</para>
+
+        <blockquote>
+          <attribution>Clips Reference Manual</attribution>
+
+          <para>Newly activated rules are placed above all rules of the same
+          salience. For example, given that fact-a activates rule-1 and rule-2
+          and fact-b activates rule-3 and rule-4, then if fact-a is asserted
+          before fact-b, rule-3 and rule-4 will be above rule-1 and rule-2 on
+          the agenda. However, the position of rule-1 relative to rule-2 and
+          rule-3 relative to rule-4 will be arbitrary.</para>
+        </blockquote>
+
+        <para>The initial Drools implementation for the Depth strategy would
+        not work for manners without the use of salience on the "make_path"
+        rule, the Clips support team had this to say:</para>
+
+        <blockquote>
+          <attribution>Clips Support Forum</attribution>
+
+          <para>The default conflict resolution strategy for CLIPS, depth, is
+          different than the default conflict resolution strategy used by
+          OPS5. Therefore if you directly translate an OPS5 program to CLIPS,
+          but use the default depth conflict resolution strategy, you're only
+          likely to get the correct behavior by coincidence. The lex and mea
+          conflict resolution strategies are provided in CLIPS to allow you to
+          quickly convert and correctly run an OPS5 program in CLIPS</para>
+        </blockquote>
+
+        <para>Investigation into the Clips code reveals there is undocumented
+        functionality in the Depth strategy. There is an accumulated time tag
+        used in this strategy; it's not an extensively fact by fact comparison
+        as in the recency strategy, it simply adds the total of all the time
+        tags for each activation and compares.</para>
+      </section>
+
+      <section>
+        <title>Assign First Seat</title>
+
+        <para>Once the context is changed to START_UP Activations are created
+        for all asserted Guests; because all Activations are created as the
+        result of a single Working Memory action, they all have the same
+        Activation time tag. The last asserted Guest would have a higher fact
+        time tag and its Activation would fire, becuase it has the highest
+        accumulated fact time tag. The execution order in this rule has little
+        importance, but has a big impact in the rule "Assign Seat". The
+        Activation fires and asserts the first Seating arrangement, a Path and
+        then sets the Context's state to create Activation for "Assign
+        Seat".</para>
+
+        <programlisting>rule assignFirstSeat
+    when
+        context : Context( state == Context.START_UP )
+        guest : Guest()
+        count : Count()
+    then
+        String guestName = guest.getName();        
+
+        insert( new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName) );        
+        insert( new Path( count.getValue(), 1, guestName ) );        
+
+        count.setValue(  count.getValue() + 1 );        
+        update( count );
+        context.setState( Context.ASSIGN_SEATS );       
+        update( context );
+end</programlisting>
+      </section>
+
+      <section>
+        <title>Assign Seat</title>
+
+        <para>This rule determines each of the Seating arrangements. The Rule
+        creates cross product solutions for ALL asserted Seating arrangements
+        against ALL the asserted guests; accept against itself or any already
+        assigned Chosen solutions.</para>
+
+        <programlisting>rule findSeating
+   when 
+       context : Context( state == Context.ASSIGN_SEATS )
+       $s      : Seating( pathDone == true )
+       $g1     : Guest( name == $s.rightGuestName )
+       $g2     : Guest( sex != $g1.sex, hobby == $g1.hobby )
+       count   : Count()
+       not ( Path( id == $s.id, guestName == $g2.name) )
+       not ( Chosen( id == $s.id, guestName == $g2.name, hobby == $g1.hobby) )
+   then
+       int rightSeat = $s.getRightSeat();
+       int seatId = $s.getId();
+       int countValue = count.getValue();
+       
+       insert( new Seating( countValue, seatId, false, rightSeat, $s.getRightGuestName(), rightSeat + 1, $g2.getName() ) );                                
+       insert( new Path( countValue, rightSeat + 1, $g2.getName() ) );       
+       insert( new Chosen( seatId, $g2.getName(), $g1.getHobby() ) );
+
+       count.setValue(  countValue + 1 );
+       update( count );       
+       context.setState( Context.MAKE_PATH );
+       update( context );
+end</programlisting>
+
+        <para>However, as can be seen from the printed results shown earlier,
+        it is essential that only the Seating with the highest pid cross
+        product be chosen – yet how can this be possible if we have
+        Activations, of the same time tag, for nearly all existing Seating and
+        Guests. For example on the third iteration of "Assing Seat" these are
+        the produced Activations, remember this is from a very small data set
+        and with larger data sets there would be many more possible Activated
+        Seating solutions, with multiple solutions per pid:</para>
+
+        <literallayout>=&gt;[ActivationCreated(35): rule=findSeating 
+[fid:19:33]:[Seating id=3, pid=2, done=true, ls=2, ln=n4, rs=3, rn=n3] 
+[fid:4:4]:[Guest name=n3, sex=m, hobbies=h3] 
+[fid:3:3]:[Guest name=n2, sex=f, hobbies=h3]
+
+=&gt;[ActivationCreated(35): rule=findSeating 
+[fid:15:23]:[Seating id=2, pid=1, done=true, ls=1, ln=n5, rs=2, rn=n4] 
+[fid:5:5]:[Guest name=n4, sex=m, hobbies=h1] 
+[fid:2:2]:[Guest name=n2, sex=f, hobbies=h1] 
+
+=&gt;[ActivationCreated(35): rule=findSeating 
+[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] 
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1] 
+[fid:1:1]:[Guest name=n1, sex=m, hobbies=h1]</literallayout>
+
+        <para>The creation of all these redundant Activations might seem
+        pointless, but it must be remembered that Manners is not about good
+        rule design; it's purposefully designed as a bad ruleset to fully
+        stress test the cross product matching process and the agenda, which
+        this clearly does. Notice that each Activation has the same time tag
+        of 35, as they were all activated by the change in Context to
+        ASSIGN_SEATS. With OPS5 and LEX it would correctly fire the Activation
+        with the last asserted Seating. With Depth the accumulated fact time
+        tag ensures the Activation with the last asserted Seating
+        fires.</para>
+      </section>
+
+      <section>
+        <title>Make Path and Path Done</title>
+
+        <para>"Make Path" must always fires before "Path Done". A Path is
+        asserted for each Seating arrangement up to the last asserted Seating.
+        Notice that "Path Done" is a subset of "Make Path", so how do we
+        ensure that "Make Path" fires first?</para>
+
+        <programlisting>rule makePath
+    when 
+        Context( state == Context.MAKE_PATH )
+        Seating( seatingId:id, seatingPid:pid, pathDone == false )
+        Path( id == seatingPid, pathGuestName:guestName, pathSeat:seat )
+        not Path( id == seatingId, guestName == pathGuestName )
+    then
+        insert( new Path( seatingId, pathSeat, pathGuestName ) );
+end</programlisting>
+
+        <programlisting>rule pathDone
+    when
+        context : Context( state == Context.MAKE_PATH ) 
+        seating : Seating( pathDone == false ) 
+    then
+        seating.setPathDone( true ); 
+        update( seating );
+        
+        context.setState( Context.CHECK_DONE ); 
+        update( context );
+end</programlisting>
+
+        <figure>
+          <title>Rete Diagram</title>
+
+          <mediaobject>
+            <imageobject>
+              <imagedata align="center" contentdepth="500"
+                         fileref="make_path.svg" format="SVG" scalefit="1" />
+            </imageobject>
+
+            <imageobject>
+              <imagedata align="center" fileref="make_path.png" format="PNG"
+                         scalefit="1" />
+            </imageobject>
+          </mediaobject>
+        </figure>
+
+        <para>Both rules end up on the Agenda in conflict and with identical
+        activation time tags, however the accumulate fact time tag is greater
+        for "Make Path" so it gets priority.</para>
+      </section>
+
+      <section>
+        <title>Continue and Are We Done</title>
+
+        <para>"Are We Done" only activates when the last seat is assigned, at
+        which point both rules will be activated. For the same reason that
+        "Make Path" always wins over "Path Done" "Are We Done" will take
+        priority over "Continue".</para>
+
+        <programlisting>rule areWeDone
+    when
+        context : Context( state == Context.CHECK_DONE ) 
+        LastSeat( lastSeat: seat )
+        Seating( rightSeat == lastSeat ) 
+    then
+        context.setState(Context.PRINT_RESULTS ); 
+        update( context );
+end
+</programlisting>
+
+        <programlisting>rule continue
+    when
+        context : Context( state == Context.CHECK_DONE ) 
+    then
+        context.setState( Context.ASSIGN_SEATS ); 
+        update( context );
+end
+</programlisting>
+      </section>
+    </section>
+
+    <section>
+      <title>Output Summary</title>
+
+      <literallayout><emphasis role="bold">Assign First seat</emphasis>
+=&gt;[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5]
+=&gt;[fid:14:14]:[Path id=1, seat=1, guest=n5]
+
+==&gt;[ActivationCreated(16): rule=findSeating
+[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5]
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1]
+[fid:1:1]:[Guest name=n1, sex=m, hobbies=h1]
+
+==&gt;[ActivationCreated(16): rule=findSeating
+[fid:13:13]:[Seating id=1 , pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5]
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1]
+[fid:5:5]:[Guest name=n4, sex=m, hobbies=h1]*
+
+<emphasis role="bold">Assign Seating</emphasis>
+=&gt;[fid:15:17] :[Seating id=2 , pid=1 , done=false, ls=1, lg=n5, rs=2, rn=n4]
+=&gt;[fid:16:18]:[Path id=2, seat=2, guest=n4]
+=&gt;[fid:17:19]:[Chosen id=1, name=n4, hobbies=h1]
+
+=&gt;[ActivationCreated(21): rule=makePath 
+[fid:15:17] : [Seating id=2, pid=1, done=false, ls=1, ln=n5, rs=2, rn=n4]
+[fid:14:14] : [Path id=1, seat=1, guest=n5]*
+
+==&gt;[ActivationCreated(21): rule=pathDone
+[Seating id=2, pid=1, done=false, ls=1, ln=n5, rs=2, rn=n4]*
+
+<emphasis role="bold">Make Path</emphasis>
+=&gt;[fid:18:22:[Path id=2, seat=1, guest=n5]]
+
+<emphasis role="bold">Path Done</emphasis>
+
+<emphasis role="bold">Continue Process</emphasis>
+=&gt;[ActivationCreated(25): rule=findSeating
+[fid:15:23]:[Seating id=2, pid=1, done=true, ls=1, ln=n5, rs=2, rn=n4]
+[fid:7:7]:[Guest name=n4, sex=f, hobbies=h3]
+[fid:4:4] : [Guest name=n3, sex=m, hobbies=h3]*
+
+=&gt;[ActivationCreated(25): rule=findSeating
+[fid:15:23]:[Seating id=2, pid=1, done=true, ls=1, ln=n5, rs=2, rn=n4]
+[fid:5:5]:[Guest name=n4, sex=m, hobbies=h1]
+[fid:2:2]:[Guest name=n2, sex=f, hobbies=h1], [fid:12:20] : [Count value=3]
+
+=&gt;[ActivationCreated(25): rule=findSeating
+[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5]
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1]
+[fid:1:1]:[Guest name=n1, sex=m, hobbies=h1]
+
+<emphasis role="bold">Assign Seating</emphasis>
+=&gt;[fid:19:26]:[Seating id=3, pid=2, done=false, ls=2, lnn4, rs=3, rn=n3]]
+=&gt;[fid:20:27]:[Path id=3, seat=3, guest=n3]]
+=&gt;[fid:21:28]:[Chosen id=2, name=n3, hobbies=h3}]
+
+=&gt;[ActivationCreated(30): rule=makePath
+[fid:19:26]:[Seating id=3, pid=2, done=false, ls=2, ln=n4, rs=3, rn=n3]
+[fid:18:22]:[Path id=2, seat=1, guest=n5]*
+
+=&gt;[ActivationCreated(30): rule=makePath 
+[fid:19:26]:[Seating id=3, pid=2, done=false, ls=2, ln=n4, rs=3, rn=n3]
+[fid:16:18]:[Path id=2, seat=2, guest=n4]*
+
+=&gt;[ActivationCreated(30): rule=done 
+[fid:19:26]:[Seating id=3, pid=2, done=false, ls=2, ln=n4, rs=3, rn=n3]*
+
+<emphasis role="bold">Make Path</emphasis>
+=&gt;[fid:22:31]:[Path id=3, seat=1, guest=n5]
+
+<emphasis role="bold">Make Path </emphasis>
+=&gt;[fid:23:32] [Path id=3, seat=2, guest=n4]
+
+<emphasis role="bold">Path Done</emphasis>
+
+<emphasis role="bold">Continue Processing</emphasis>
+=&gt;[ActivationCreated(35): rule=findSeating
+[fid:19:33]:[Seating id=3, pid=2, done=true, ls=2, ln=n4, rs=3, rn=n3]
+[fid:4:4]:[Guest name=n3, sex=m, hobbies=h3]
+[fid:3:3]:[Guest name=n2, sex=f, hobbies=h3], [fid:12:29]*
+
+=&gt;[ActivationCreated(35): rule=findSeating 
+[fid:15:23]:[Seating id=2, pid=1, done=true, ls=1, ln=n5, rs=2, rn=n4] 
+[fid:5:5]:[Guest name=n4, sex=m, hobbies=h1]
+[fid:2:2]:[Guest name=n2, sex=f, hobbies=h1]
+
+=&gt;[ActivationCreated(35): rule=findSeating 
+[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] 
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1], [fid:1:1] : [Guest name=n1, sex=m, hobbies=h1]
+
+<emphasis role="bold">Assign Seating</emphasis>
+=&gt;[fid:24:36]:[Seating id=4, pid=3, done=false, ls=3, ln=n3, rs=4, rn=n2]]
+=&gt;[fid:25:37]:[Path id=4, seat=4, guest=n2]]
+=&gt;[fid:26:38]:[Chosen id=3, name=n2, hobbies=h3]
+
+==&gt;[ActivationCreated(40): rule=makePath 
+[fid:24:36]:[Seating id=4, pid=3, done=false, ls=3, ln=n3, rs=4, rn=n2]
+[fid:23:32]:[Path id=3, seat=2, guest=n4]*
+
+==&gt;[ActivationCreated(40): rule=makePath 
+[fid:24:36]:[Seating id=4, pid=3, done=false, ls=3, ln=n3, rs=4, rn=n2] 
+[fid:20:27]:[Path id=3, seat=3, guest=n3]*
+
+=&gt;[ActivationCreated(40): rule=makePath 
+[fid:24:36]:[Seating id=4, pid=3, done=false, ls=3, ln=n3, rs=4, rn=n2]
+[fid:22:31]:[Path id=3, seat=1, guest=n5]*
+
+=&gt;[ActivationCreated(40): rule=done 
+[fid:24:36]:[Seating id=4, pid=3, done=false, ls=3, ln=n3, rs=4, rn=n2]*
+
+<emphasis role="bold">Make Path </emphasis>
+=&gt;fid:27:41:[Path id=4, seat=2, guest=n4]
+
+<emphasis role="bold">Make Path</emphasis>
+=&gt;fid:28:42]:[Path id=4, seat=1, guest=n5]]
+
+<emphasis role="bold">Make Path</emphasis>
+=&gt;fid:29:43]:[Path id=4, seat=3, guest=n3]]
+
+<emphasis role="bold">Path Done</emphasis>
+
+<emphasis role="bold">Continue  Processing</emphasis>
+=&gt;[ActivationCreated(46): rule=findSeating 
+[fid:15:23]:[Seating id=2, pid=1, done=true, ls=1, ln=n5, rs=2, rn=n4] 
+[fid:5:5]:[Guest name=n4, sex=m, hobbies=h1], [fid:2:2]
+[Guest name=n2, sex=f, hobbies=h1]
+
+=&gt;[ActivationCreated(46): rule=findSeating 
+[fid:24:44]:[Seating id=4, pid=3, done=true, ls=3, ln=n3, rs=4, rn=n2]
+[fid:2:2]:[Guest name=n2, sex=f, hobbies=h1]
+[fid:1:1]:[Guest name=n1, sex=m, hobbies=h1]*
+
+=&gt;[ActivationCreated(46): rule=findSeating 
+[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5]
+[fid:9:9]:[Guest name=n5, sex=f, hobbies=h1]
+[fid:1:1]:[Guest name=n1, sex=m, hobbies=h1]
+
+<emphasis role="bold">Assign Seating</emphasis>
+=&gt;[fid:30:47]:[Seating id=5, pid=4, done=false, ls=4, ln=n2, rs=5, rn=n1]
+=&gt;[fid:31:48]:[Path id=5, seat=5, guest=n1]
+=&gt;[fid:32:49]:[Chosen id=4, name=n1, hobbies=h1]
+</literallayout>
+    </section>
+  </section>
 </section>
\ No newline at end of file

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


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

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/guests_at_table.vsd
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/guests_at_table.vsd
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

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


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

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/make_path.vsd
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/make_path.vsd
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

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


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

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.svg
===================================================================
--- labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.svg	                        (rev 0)
+++ labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.svg	2007-09-16 02:58:57 UTC (rev 15146)
@@ -0,0 +1,559 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated by Microsoft Visio 11.0, SVG Export, v1.0 manners_activity_diagram.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="7.89733in" height="6.9885in" viewBox="0 0 568.608 503.172" xml:space="preserve" color-interpolation-filters="sRGB" class="st14" preserveAspectRatio="xMidYMid meet" zoomAndPan="magnify" version="1.0" contentScriptType="text/ecmascript" contentStyleType="text/css">
+	<v:documentProperties v:langID="1033" v:metric="true"/>
+
+	<style type="text/css" xml:space="preserve">
+	
+		.st1 {fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}
+		.st2 {fill:#000000;font-family:Arial;font-size:1.00001em}
+		.st3 {font-size:1em}
+		.st4 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}
+		.st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}
+		.st6 {fill:#000000;font-family:Arial;font-size:0.666664em}
+		.st7 {fill:#000000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st8 {fill:#000000;stroke:none;stroke-width:1}
+		.st9 {marker-end:url(#mrkr3-71);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.48}
+		.st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.10810806741051}
+		.st11 {fill:none}
+		.st12 {stroke:#000000;stroke-dasharray:5.04,3.6;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72}
+		.st13 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24}
+		.st14 {fill:none;fill-rule:evenodd;font-size:12;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+	
+	</style>
+
+	<defs id="Markers">
+		<g id="lend3">
+			<path d="M 2 1 L 0 0 L 2 -1 " style="stroke-linecap:round;stroke-linejoin:round;fill:none"/>
+		</g>
+		<marker xmlns="http://www.w3.org/TR/xhtml1/transitional" overflow="visible" id="mrkr3-71" class="st10" v:arrowType="3" v:arrowSize="4" orient="auto" markerUnits="strokeWidth" preserveAspectRatio="xMidYMid meet">
+			<use xmlns="http://www.w3.org/2000/svg" xlink:href="#lend3" transform="scale(-9.2500034821895,-9.2500034821895) " xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
+		</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"/>
+		<v:layer v:name="Swimlanes" v:index="0" v:snap="false" v:glue="false"/>
+		<g id="shape1-1" v:mID="1" v:groupContext="shape" v:layerMember="0" transform="translate(454.263,-0.720106)">
+			<title content="structured text">Swimlane.41</title>
+			<desc content="structured text">PRINT RESULTS</desc>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(63):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({3D0B90F0-7997-4048-B958-E2D430F8F96C})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a partition for organizing responsibility for activities.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
+			<v:textRect cx="56.6929" cy="252.306" width="113.39" height="501.732"/>
+			<rect x="0" y="1.44021" width="113.386" height="501.732" class="st1"/>
+			<text x="9.36" y="16.24" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>PRINT RESULTS</text>		</g>
+		<g id="shape2-4" v:mID="2" v:groupContext="shape" v:layerMember="0" transform="translate(340.877,-0.720106)">
+			<title content="structured text">Swimlane.40</title>
+			<desc content="structured text">CHECK DONE</desc>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(63):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({B70CD6A2-C8F2-41E7-8A0B-4364B926C213})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a partition for organizing responsibility for activities.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
+			<v:textRect cx="56.6929" cy="252.306" width="113.39" height="501.732"/>
+			<rect x="0" y="1.44021" width="113.386" height="501.732" class="st1"/>
+			<text x="16.69" y="16.24" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>CHECK DONE</text>		</g>
+		<g id="shape3-7" v:mID="3" v:groupContext="shape" v:layerMember="0" transform="translate(227.492,-0.720106)">
+			<title content="structured text">Swimlane.39</title>
+			<desc content="structured text">MAK PATH</desc>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(63):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({2BDF3D67-E7C5-4A9B-A36F-B092FDAD9B83})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a partition for organizing responsibility for activities.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
+			<v:textRect cx="56.6929" cy="252.306" width="113.39" height="501.732"/>
+			<rect x="0" y="1.44021" width="113.386" height="501.732" class="st1"/>
+			<text x="22.02" y="16.24" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>MAK<tspan class="st3" v:langID="2057">E</tspan> PATH</text>		</g>
+		<g id="shape4-11" v:mID="4" v:groupContext="shape" v:layerMember="0" transform="translate(114.106,-0.720106)">
+			<title content="structured text">Swimlane.38</title>
+			<desc content="structured text">ASSIGN SEATS</desc>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(63):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({5FE20143-2F05-4843-84D8-69654A33246B})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a partition for organizing responsibility for activities.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
+			<v:textRect cx="56.6929" cy="252.306" width="113.39" height="501.732"/>
+			<rect x="0" y="1.44021" width="113.386" height="501.732" class="st1"/>
+			<text x="12.68" y="16.24" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>ASSIGN SEATS</text>		</g>
+		<g id="shape5-14" v:mID="5" v:groupContext="shape" v:layerMember="0" transform="translate(0.72,-0.720106)">
+			<title content="structured text">Swimlane</title>
+			<desc content="structured text">START UP</desc>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(63):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({75512333-30FD-445E-A107-21F276DEBAB2})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a partition for organizing responsibility for activities.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197" v:verticalAlign="0"/>
+			<v:textRect cx="56.6929" cy="252.306" width="113.39" height="501.732"/>
+			<rect x="0" y="1.44021" width="113.386" height="501.732" class="st1"/>
+			<text x="27.03" y="16.24" class="st2" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>START UP</text>		</g>
+		<g id="group6-17" transform="translate(21.6928,-370.641)" v:mID="6" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({DB57AEDC-DB06-4A74-9314-493961D4DB78})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State</title>
+			<g id="shape7-18" v:mID="7" v:groupContext="shape" transform="translate(-3.59712E-013,-0.002)">
+				<title content="structured text">Sheet.7</title>
+				<path d="M9 503.17 L62.44 503.17 A9 9 -180 0 0 71.44 494.17 L71.44 486.66 A9 9 -180 0 0 62.44 477.66 L9 477.66 A9         9 -180 0 0 -0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape8-20" v:mID="8" v:groupContext="shape" transform="translate(0,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape9-22" v:mID="9" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Assign First Seat</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="35.7202" cy="490.572" width="71.45" height="25.2"/>
+				<rect x="0" y="477.972" width="71.4403" height="25.2" class="st5"/>
+				<text x="5.49" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Assign First Seat</text>			</g>
+		</g>
+		<g id="shape10-25" v:mID="10" v:groupContext="shape" transform="translate(48.909,-459.93)">
+			<title content="structured text">Initial State</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(42):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({D3A1415C-7F84-4D75-B77E-54E0988D4921})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOptions" v:val="VT0(3):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents the point at which a newly created object starts. )"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 494.67 A8.505 8.505 0 0 1 17.01 494.67 A8.505 8.505 0 0 1 0 494.67 Z" class="st7"/>
+		</g>
+		<g id="group11-27" transform="translate(128.279,-370.641)" v:mID="11" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({E425FBE2-6092-4F19-BCF9-83EBE6D8AA54})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.7</title>
+			<g id="shape12-28" v:mID="12" v:groupContext="shape" transform="translate(0,-0.002)">
+				<title content="structured text">Sheet.12</title>
+				<path d="M9 503.17 L45 503.17 A9 9 -180 0 0 54 494.17 L54 486.66 A9 9 -180 0 0 45 477.66 L9 477.66 A9 9 -180 0 0         -0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape13-30" v:mID="13" v:groupContext="shape" transform="translate(-2.63789E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape14-32" v:mID="14" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Assign Seat</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="27" cy="490.572" width="54" height="25.2"/>
+				<rect x="0" y="477.972" width="54" height="25.2" class="st5"/>
+				<text x="5.65" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Assign Seat</text>			</g>
+		</g>
+		<g id="group15-35" transform="translate(268.817,-278.515)" v:mID="15" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({78CF0676-A242-4FF4-9B81-3A830037047F})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.11</title>
+			<g id="shape16-36" v:mID="16" v:groupContext="shape" transform="translate(0,-0.002)">
+				<title content="structured text">Sheet.16</title>
+				<path d="M9 503.17 L45 503.17 A9 9 -180 0 0 54 494.17 L54 486.66 A9 9 -180 0 0 45 477.66 L9 477.66 A9 9 -180 0 0         -0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape17-38" v:mID="17" v:groupContext="shape" transform="translate(-2.63789E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape18-40" v:mID="18" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Make Path</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="27" cy="490.572" width="54" height="25.2"/>
+				<rect x="0" y="477.972" width="54" height="25.2" class="st5"/>
+				<text x="7.88" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Make Path</text>			</g>
+		</g>
+		<g id="group19-43" transform="translate(268.817,-190.641)" v:mID="19" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({657E0538-CBB4-4B62-B170-CA54F78F0FC3})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.15</title>
+			<g id="shape20-44" v:mID="20" v:groupContext="shape" transform="translate(0,-0.002)">
+				<title content="structured text">Sheet.20</title>
+				<path d="M9 503.17 L45 503.17 A9 9 -180 0 0 54 494.17 L54 486.66 A9 9 -180 0 0 45 477.66 L9 477.66 A9 9 -180 0 0         -0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape21-46" v:mID="21" v:groupContext="shape" transform="translate(-2.63789E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape22-48" v:mID="22" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Path Done</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="27" cy="490.572" width="54" height="25.2"/>
+				<rect x="0" y="477.972" width="54" height="25.2" class="st5"/>
+				<text x="8.1" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Path Done</text>			</g>
+		</g>
+		<g id="group23-51" transform="translate(357.885,-114.106)" v:mID="23" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({0CB21845-E36D-4CDF-B78A-00B75363D7E2})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.19</title>
+			<g id="shape24-52" v:mID="24" v:groupContext="shape" transform="translate(3.83693E-013,-0.002)">
+				<title content="structured text">Sheet.24</title>
+				<path d="M9 503.17 L68.67 503.17 A9 9 -180 0 0 77.67 494.17 L77.67 486.66 A9 9 -180 0 0 68.67 477.66 L9 477.66 A9         9 -180 0 0 0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape25-54" v:mID="25" v:groupContext="shape" transform="translate(-3.8769E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape26-56" v:mID="26" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Are We Done Yet?</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="38.8371" cy="490.572" width="77.68" height="25.2"/>
+				<rect x="0" y="477.972" width="77.6742" height="25.2" class="st5"/>
+				<text x="5.5" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Are We Done Yet?</text>			</g>
+		</g>
+		<g id="group27-59" transform="translate(499.433,-14.8903)" v:mID="27" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(43):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({B1433F32-F2A4-439C-B8CC-D61EC899F625})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOptions" v:val="VT0(3):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents the final occurrence of an event at the enclosing state or the completion of activity in the enclosing state.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:prompt="" v:val="VT0(3):26"/>
+			</v:userDefs>
+			<title content="structured text">Final State</title>
+			<g id="shape28-60" v:mID="28" v:groupContext="shape" transform="translate(1.7,-1.7)">
+				<title content="structured text">Sheet.28</title>
+				<path d="M0 496.37 A6.805 6.805 0 1 1 13.61 496.37 A6.805 6.805 0 1 1 -0 496.37 Z" class="st8"/>
+			</g>
+			<g id="shape29-62" v:mID="29" v:groupContext="shape" transform="translate(1.7,-1.7)">
+				<title content="structured text">Sheet.29</title>
+				<path d="M0 496.37 A6.805 6.805 0 1 1 13.61 496.37 A6.805 6.805 0 1 1 -0 496.37 Z" class="st1"/>
+			</g>
+			<g id="shape30-64" v:mID="30" v:groupContext="shape">
+				<title content="structured text">Sheet.30</title>
+				<path d="M0 494.67 A8.505 8.505 0 0 1 17.01 494.67 A8.505 8.505 0 1 1 -0 494.67 Z" class="st1"/>
+			</g>
+		</g>
+		<g id="shape31-66" v:mID="31" v:groupContext="shape" transform="translate(93.1331,-383.393)">
+			<title content="structured text">Transition</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({B3C07C44-3D10-4AD1-A487-A918B63E7036})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 503.17 L35.15 503.17" class="st9"/>
+		</g>
+		<g id="shape32-72" v:mID="32" v:groupContext="shape" transform="translate(155.279,-291.273)">
+			<title content="structured text">Transition.26</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({4F3E71C3-C7E3-4C97-BCE4-9EE74B61A90E})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 423.8 L0 503.17 L113.54 503.17" class="st9"/>
+		</g>
+		<g id="shape33-77" v:mID="33" v:groupContext="shape" transform="translate(295.82,-216.157)">
+			<title content="structured text">Transition.27</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({504935DB-8552-4C36-BB2A-679D59656DF9})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 440.81 L0 503.17" class="st9"/>
+		</g>
+		<g id="shape34-82" v:mID="34" v:groupContext="shape" transform="translate(322.817,-203.393)">
+			<title content="structured text">Transition.23</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({57E139FF-A173-426F-820B-4F7C9BFEC138})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 503.17 L63.98 503.17" class="st9"/>
+		</g>
+		<g id="shape35-87" v:mID="35" v:groupContext="shape" transform="translate(507.94,-31.8981)">
+			<title content="structured text">Transition.28</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({5FECE46A-D06F-418F-981D-461303A12B44})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 420.96 L0 503.17" class="st9"/>
+		</g>
+		<g id="shape36-92" v:mID="36" v:groupContext="shape" transform="translate(182.277,-298.36)">
+			<title content="structured text">Transition.29</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({2C74DA93-74E8-41A5-92D8-33F11DFE1CC4})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M216.64 503.17 L216.64 418.13 L0 418.13" class="st9"/>
+		</g>
+		<g id="shape37-97" v:mID="37" v:groupContext="shape" transform="translate(57.4163,-396.155)">
+			<title content="structured text">Transition.30</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({184492BD-048C-4EF2-8A9B-8858BE1127F1})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 439.39 L0 503.17" class="st9"/>
+		</g>
+		<g id="shape38-102" v:mID="38" v:groupContext="shape" transform="translate(386.801,-193.478)">
+			<title content="structured text">Decision</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(62):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({92B419EA-931A-4897-B261-6E85B2B91766})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(3):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Expresses a decision when guard conditions are used to indicate different possible transitions that are Boolean dependent.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M9.92 483.33 L19.84 493.25 L9.92 503.17 L0 493.25 L9.92 483.33 Z" class="st4"/>
+		</g>
+		<g id="shape39-104" v:mID="39" v:groupContext="shape" transform="translate(396.726,-139.618)">
+			<title content="structured text">Transition.32</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({0C0D162D-C8BA-4916-9E41-0251B2A289C3})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 449.31 L0 503.17" class="st9"/>
+		</g>
+		<g id="group40-109" transform="translate(406.645,-203.395)" v:mID="40" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(45):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({9E3814E0-25B1-43C1-A187-E4B1218E0059})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Use to place a comment on a diagram. )"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">Note</title>
+			<g id="shape41-110" v:mID="41" v:groupContext="shape">
+				<title content="structured text">Sheet.41</title>
+				<path d="M109.98 472.41 L0 503.17 L109.98 472.41 Z" class="st11"/>
+				<path d="M109.98 472.41 L0 503.17" class="st12"/>
+			</g>
+			<g id="shape42-113" v:mID="42" v:groupContext="shape" transform="translate(66.5014,-12.76)">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Has the last seat been assigned?</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="43.4786" cy="485.174" width="86.96" height="36"/>
+				<path d="M86.96 477.97 L77.96 467.17 L77.96 477.97 L86.96 477.97 Z M0 503.17 L86.96 503.17 L86.96 477.97 L77.96 477.97         L77.96 467.17 L0 467.17 L0 503.17 Z" class="st13"/>
+				<text x="4" y="477.97" class="st6" v:langID="1033"><v:paragraph/><v:tabList/>Has the last seat<v:newlineChar/><v:newlineChar/><tspan x="4" dy="2.4em" class="st3">been assigned</tspan>?</text>			</g>
+		</g>
+		<g id="shape43-117" v:mID="43" v:groupContext="shape" transform="translate(241.247,-162.295)">
+			<title content="structured text">Transition.36</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({4CA9F553-D55B-452E-AC25-34A2387F9FF8})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M54.57 474.82 L54.57 503.17 L0 503.17 L0 462.07 L27.57 462.07" class="st9"/>
+		</g>
+		<g id="group44-122" transform="translate(479.775,-114.106)" v:mID="44" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({45A56721-BBBC-4499-92F5-D1460BF36DFC})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.42</title>
+			<g id="shape45-123" v:mID="45" v:groupContext="shape" transform="translate(2.79776E-013,-0.002)">
+				<title content="structured text">Sheet.45</title>
+				<path d="M9 503.17 L47.32 503.17 A9 9 -180 0 0 56.32 494.17 L56.32 486.66 A9 9 -180 0 0 47.32 477.66 L9 477.66 A9         9 -180 0 0 -0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape46-125" v:mID="46" v:groupContext="shape" transform="translate(-2.79776E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape47-127" v:mID="47" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Print Results</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="28.1617" cy="490.572" width="56.33" height="25.2"/>
+				<rect x="0" y="477.972" width="56.3234" height="25.2" class="st5"/>
+				<text x="5.5" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Print Results</text>			</g>
+		</g>
+		<g id="shape48-130" v:mID="48" v:groupContext="shape" transform="translate(435.56,-126.857)">
+			<title content="structured text">Transition.46</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({1E830686-D9A6-494E-BFB9-A2EC4ECC87E5})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 503.17 L44.22 503.17" class="st9"/>
+		</g>
+		<g id="shape49-135" v:mID="49" v:groupContext="shape" transform="translate(507.939,-126.865)">
+			<title content="structured text">Transition.47</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({522F1FDF-7CC6-4604-AE43-C0C5FBC68F58})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M28.16 503.17 L48.37 503.17 L48.37 464.91 L0 464.91 L0 490.42" class="st9"/>
+		</g>
+		<g id="group50-140" transform="translate(371.917,-272.846)" v:mID="50" v:groupContext="group">
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(40):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({279920C9-96D3-48C9-B5C7-9BD96A5EA82B})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption1" v:val="VT0(1):26"/>
+				<v:ud v:nameU="UMLSuppressOption" v:val="VT0(32):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="UMLAutoLockTextEdit" v:val="VT0(1):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a condition during which an object satisfies some condition, performs an action or waits for an event.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<title content="structured text">State.48</title>
+			<g id="shape51-141" v:mID="51" v:groupContext="shape" transform="translate(0,-0.002)">
+				<title content="structured text">Sheet.51</title>
+				<path d="M9 503.17 L45 503.17 A9 9 -180 0 0 54 494.17 L54 486.66 A9 9 -180 0 0 45 477.66 L9 477.66 A9 9 -180 0 0         0 486.66 L0 494.17 A9 9 -180 0 0 9 503.17 Z" class="st4"/>
+			</g>
+			<g id="shape52-143" v:mID="52" v:groupContext="shape" transform="translate(-2.67786E-013,-0.002)">
+				<title content="structured text">Transitions</title>
+				<path d="M0 503.17 L53.86 503.17 L0 503.17 Z" class="st5"/>
+			</g>
+			<g id="shape53-145" v:mID="53" v:groupContext="shape">
+				<title content="structured text">Name</title>
+				<desc content="structured text">Continue?</desc>
+				<v:userDefs/>
+				<v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+				<v:textRect cx="27" cy="490.572" width="54" height="25.2"/>
+				<rect x="0" y="477.972" width="54" height="25.2" class="st5"/>
+				<text x="8.76" y="492.97" class="st6" v:langID="1033"><v:paragraph v:horizAlign="1"/><v:tabList/>Continue?</text>			</g>
+		</g>
+		<g id="shape54-148" v:mID="54" v:groupContext="shape" transform="translate(396.723,-213.32)">
+			<title content="structured text">Transition.52</title>
+			<v:userDefs>
+				<v:ud v:nameU="UMLShapeType" v:val="VT0(44):26"/>
+				<v:ud v:nameU="UMLObjectGUID" v:val="VT4({9C4F3353-5467-4385-8431-508C3C950FD2})"/>
+				<v:ud v:nameU="UMLError" v:val="VT0(0):26"/>
+				<v:ud v:nameU="UMLPresOption2" v:val="VT0(98306):26"/>
+				<v:ud v:nameU="UMLVersion" v:val="VT0(2):26"/>
+				<v:ud v:nameU="visDescription" v:val="VT4(Represents a transition from one state to another.)"/>
+				<v:ud v:nameU="visVersion" v:val="VT0(11):26"/>
+			</v:userDefs>
+			<path d="M0 503.17 L2.19 443.64" class="st9"/>
+		</g>
+	</g>
+</svg>
\ No newline at end of file

Added: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.vsd
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/documentation/manual/en/Chapter-Examples/manners_activity_diagram.vsd
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list