Page 361 -
P. 361

13  The Business Process Modeling Notation                      359
                              This way of mapping events works well for intermediate message/timer events
                           and for final message/timer events. But it does not work for start events. Start mes-
                           sage/timer events in BPMN have the effect of creating new process instances. For
                           example, a start message event in BPMN means that a new instance of a process
                           is created every time a message (of the designated type) is received. This feature
                           is called implicit instantiation – because a process instance is created when a given
                           type of event happens. Meanwhile, YAWL supports explicit instantiation, mean-
                           ing that to create an instance of a YAWL net, an external application needs to send a
                           “create instance” message to the process engine with the corresponding net identifier
                           and the required input data.
                              From an application development perspective, the above difference is rather
                           minor. It mainly implies that in YAWL, one has to follow a strict separation between
                           the instantiation of a net and the net itself. For example, if we wanted to create
                           an instance of a YAWL net every time an invoice is received, or every Saturday
                           at 2 am, we would need to develop an application that receives the invoice mes-
                           sage or that is triggered every Saturday at 2 am. This application would then send a
                           “create instance” message to the Engine to start the execution of the corresponding
                           YAWL net.
                              A BPMN diagram may have multiple start events, in which case at least one of
                           these events must have a trigger (e.g., message/timer) event. This situation cannot
                           be captured directly in YAWL because YAWL supports only plain start events (i.e.,
                           explicit instantiation). As there is only one way of creating an instance of a YAWL
                           net, it is natural that YAWL nets only have one start (input) condition.
                              Similarly, a BPMN diagram may have multiple end events, while a YAWL net
                           always has a single final (output) condition. Also, the termination policy of end
                           events in YAWL is such that when a token reaches the output condition, the pro-
                           cess instance immediately completes, even if there are still active or enabled tasks.
                           Meanwhile, if the execution of a branch in a BPMN diagram reaches an end event,
                           but there are other enabled or active tasks, the process instance does not termi-
                           nate immediately (implicit termination policy). For BPMN diagrams that are 1-safe,
                           meaning that no two tokens can accumulate in the same flow, this is not a limita-
                           tion. Such models can be translated into YAWL by mapping all the final flows to
                           YAWL arcs that lead to a single empty task with an OR-join. This empty task with
                           an OR-join is then connected to the single output condition in YAWL. The OR-join
                           waits for at least one token in each branch (except for branches that need not wait
                           for tokens) before producing one token in the output condition. This transformation
                           is illustrated in Fig. 13.11.


                           Multiple Instance Tasks


                           As shown in Fig. 13.9, a multiple instance task in BPMN is mapped into a multiple
                           instance task in YAWL – and similarly, a multiple instance subprocess invocation
                           in BPMN is mapped to a multiple instance composite task in YAWL. In BPMN,
                           any number of instances of a multiple instance activity may be started (without
   356   357   358   359   360   361   362   363   364   365   366