Pattern 2 (Duplication)
FLASH animation of Duplication pattern
Description
Duplication (aka Cloning) introduces controlled redundancy in a process model by repeating model elements. Two model elements are duplicated if they point to the same conceptual definition.
Purpose
To improve understandability and maintenance through a simpler process model structure. Often required to block-structure an unstructured process model.
Example
Fig. 4 shows a behavior-equivalent representation of the model in Fig. 3a after repeating task "Reject loan". This alternative representation of the same model does not have any crossing lines nor OR-join gateways.
Metrics
Despite increasing model size, this pattern typically also increases structuredness.
Rationale
Less cluttered and more structured process models are easier to comprehend [80], [81] and less error-prone [76], [69].
Realization
Process modeling languages generally provide the possibility of creating duplicate model elements. For example, in YAWL [112] tasks can be duplicated by associating multiple tasks to the same Task Decomposition, so that these tasks have same operationalization. Still, the two duplicates can be allocated to different resources for their execution. In BPMN 2.0 [87] two Service Tasks can be associated with the same Service Reference and Service Endpoint, thus pointing to the same Web service implementation. To duplicate other types of tasks, such as Manual and User Tasks, BPMN 2.0 provides the Global Task construct, which is a reusable atomic Task that can be called from within any process model via an atomic Call Activity. Similar to Service Tasks, a Call Activity can override the Resources attribute of the invoked Global Task. Global Tasks replace Reference Tasks in BPMN 1.2 [86], which supported duplication within the same process model only. In eEPCs [55], [29], an element (e.g. an Event or Function) can point to the same definition, thus allowing the repeated use of the same concept. Since different Functions may be preceded or succeeded by the same Events, it may be useful to duplicate all preceding/subsequent Events of a given Function so as to line them up close to the corresponding Function's symbol, instead of having crossing arcs. In the Activity Diagrams (ADs) of UML 2.3 [47], duplication is supported by the Call- BehaviorAction, which is an Action that points to an ActivityDefinition. The mechanisms offered by these languages are generally supported by the respective tool implementations. For example, in ARIS one can navigate from the Occurrence of a Definition in a process model back to the Definition Object stored in the ARIS Database, and when creating Occurrence copies of a Definition, all attributes will also be copied. In Tibco Business Studio a BPMN 1.2 Task can be identified as a Reference Task and assigned to another task within the same model, while a function "Reveal" allows highlighting the task being referenced by a Reference Task. In Signavio a task can be set as Call Activity, but it cannot be linked to a global task. In the literature, duplication is used to block-structure process models. For instance, the block-structuring approach in [90] uses unfolding techniques from Petri net theory to construct an occurrence net [37]. In an occurrence net, each XOR-join is unfolded by repeating the subsequent net. The result is a structured, but often much bigger model. The possibility to have multiple tasks having identical labels may increase the expressiveness of the language. A classical example can be found in the Theory of Regions for Petri nets. To construct a bisimilar Petri net for a transition system, it may be necessary to do "label splitting" (multiple transitions referring to the same task) [26].