6 Replies Latest reply on Aug 23, 2007 9:57 AM by tom.baeyens

    unstructured joins

      This is just an after lunch thought on the way to implement unstructured joins:

      unstructured joins are joins nodes getting incomming transitions from different split/forks.

      So, how to know whether this join operates ? I think the easy way is to get the number of incoming transitions and wait until all of them are done. The difficult thing here is that each call to the Join execute method is comming from a different child execution.

      We could use an ExecutionScope to maintain a counter of the number of finished transitions. This execution scope should be stored in the common root execution of those incoming transitions.

      so another question is, how we can get this root execution ?

      - One solution would be to add a search method in the Join implementation
      or
      - At XML (i.e XPDL) parsing time we can store this information in node implementations

      thoughts are welcome :-)

      regards,
      Miguel Valdes

        • 1. Re: unstructured joins
          tom.baeyens

          must have been a good lunch... if it produces this kind of after-thoughts :)

          that seems indeed the best approach.

          there should definitely be a getRoot() method on the execution. wether that should be based on a memberField initialized during parsing or wether that is calculated dyncamically going up the parent until it is null, that i don't know yet.

          • 2. Re: unstructured joins

            Was indeed a good lunch even if some tempranillo was missed :-)

            I would like to try doing that in the parsing. This will probably save time during the execution.

            regards,
            Miguel Valdes

            • 3. Re: unstructured joins
              blachonm

              I added a counter in join type nodes during parsing and initiated with the number of incoming transitions. At execution time the counter is decreased each time an execution enters the join node until it reaches 0. It works well and then avoid the getRoot() method on the execution treatment.
              As it implies xpdl parsing it has been put under the xpdl bonita prototype.
              http://forge.objectweb.org/plugins/scmsvn/index.php?group_id=56
              under bonitaPVM tree.
              junit sample test launched : SplitJoinXpdl2Test

              • 4. Re: unstructured joins
                tom.baeyens

                a counter in a join node is wrong.

                join node is static process definition information. the same object is used for all executions.

                the counter is runtime information. so that is something which should go into an execution scope

                • 5. Re: unstructured joins
                  blachonm

                  Yes Tom, I was aware of that. I'm going to work introducing runtime classes ..... That was just a simple test.

                  • 6. Re: unstructured joins
                    tom.baeyens

                    ok. cool.