28.01.2015 Views

Semantics, Verification, and Implementation of Workflows ... - YAWL

Semantics, Verification, and Implementation of Workflows ... - YAWL

Semantics, Verification, and Implementation of Workflows ... - YAWL

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!