Semantics, Verification, and Implementation of Workflows ... - YAWL
Semantics, Verification, and Implementation of Workflows ... - YAWL
Semantics, Verification, and Implementation of Workflows ... - YAWL
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 3. OR-join semantics<br />
wards firing rule. Section 3.4 presents two restriction techniques to improve the<br />
efficiency <strong>of</strong> OR-join analysis. Section 3.5 describes the implementation in the<br />
context <strong>of</strong> the open source system <strong>YAWL</strong> <strong>and</strong> provides a detailed analysis <strong>of</strong> its<br />
performance. Section 3.6 discusses related work on OR-join semantics.<br />
This chapter presents <strong>and</strong> exp<strong>and</strong>s upon work published previously [WEAH05].<br />
3.1 Original OR-join semantics<br />
In this section, the informal semantics <strong>of</strong> an OR-join is first explained using a<br />
number <strong>of</strong> examples. Two problems associated with multiple OR-joins in a <strong>YAWL</strong><br />
net are then discussed using the OR-join semantics as defined by van der Aalst<br />
<strong>and</strong> ter H<strong>of</strong>stede [AH05]. Some alternative treatments for OR-joins on the path<br />
to other OR-joins are then proposed.<br />
The OR-join is a control flow construct that sometimes behaves like an AND<br />
join <strong>and</strong> sometimes like an XOR join based on the current context. Consider<br />
the car servicing scenario shown in Figure 3.1. When a customer requests car<br />
servicing, the mechanic needs to perform a number <strong>of</strong> tasks. After scheduling<br />
the car for service, the mechanic performs two tasks: one to make a checklist <strong>of</strong><br />
servicing requirements <strong>and</strong> one to check for other faults that need to be repaired.<br />
These two tasks can be done in any order. If the mechanic finds a problem<br />
that requires repair actions, he/she will wait until other service requirements are<br />
identified before performing necessary repairs. If the service requirements have<br />
been identified first, the mechanic will wait for the outcome <strong>of</strong> the other task:<br />
check for faults. There are two possible outcomes from check for faults: a fault is<br />
either detected or there is no fault. When the outcome is known, servicing can be<br />
started. As a result, the perform servicing task has been modelled as an OR-join.<br />
Before generating the bill, we should make sure that all the necessary checks <strong>and</strong><br />
maintenance tasks have been performed. If there is no fault, the generate bill<br />
task will wait for synchronisation until the perform servicing task is completed.<br />
Otherwise, it can be started when the servicing has been completed for both<br />
regular maintenance <strong>and</strong> necessary repairs. Hence, the generate bill task is also<br />
modelled as an OR-join. The car servicing scenario in Figure 3.1 highlights the<br />
need for a construct like OR-join in process modelling. The decision to start the<br />
generate bill task requires knowledge <strong>of</strong> the status <strong>of</strong> all other tasks in the process<br />
model <strong>and</strong>, hence, is non-local.<br />
Check for faults<br />
Schedule service<br />
Identify yearly<br />
servicing requirements<br />
Perform car<br />
servicing<br />
Generate bill<br />
Figure 3.1: Car servicing scenario<br />
PhD Thesis – c○ 2006 M.T.K Wynn – Page 33