Before we describe the actual Resource Patterns in detail, we first present a standard set of definitions for the various components of a workflow system that we will utilise throughout this body of work. A workflow or workflow model is a description of a business process in sufficient detail that it is able to be directly executed by a workflow management system. A workflow model is composed of a number of tasks which are connected in the form of a directed graph. An executing instance of a workflow model is called a case or process instance. There may be multiple cases of a particular workflow model running simultaneously, however each of these is assumed to have an independent existence and they typically execute without reference to each other.
Figure 1 : Components of a workflow
There is usually a unique first task and a unique final task in a workflow. These are the tasks that are first to run and last to run in a given workflow case. A task corresponds to a single unit of work. Four distinct types of task are denoted: atomic, block, multi-instance and multiple-instance block. We use the generic term components of a workflow to refer to all of the tasks that comprise a given workflow model. An atomic task is one which has a simple, self-contained definition (i.e. one that is not described in terms of other workflow tasks) and only one instance of the task executes when it is initiated. A block task is a complex action which has its implementation described in terms of a sub-workflow. When a block task is started, it passes control to the first task(s) in its corresponding sub-workflow. This sub-workflow executes to completion and at its conclusion, it passes control back to the block task. E.g. block task C is defined in terms of the sub-workflow comprising tasks, X, Y and Z. A multiple-instance task is a task that may have multiple distinct execution instances running concurrently within the same workflow case. Each of these instances executes independently. Only when a nominated number of these instances have completed is the task following the multiple instance task initiated. A multiple-instance block task is a combination of the two previous constructs and denotes a task that may have multiple distinct execution instances each of which is block structured in nature (i.e. has a corresponding sub-workflow). The control flow between tasks occurs via the control channel which is indicated by a solid arrow between tasks. Each invocation of a task that executes is termed a work item. Usually there is one work item initiated for each task in a given case however in the case of a multiple-instance task, there may be several associated work items that are created when the task is initiated. Similarly, where a task forms part of a loop, a distinct work item is created for each iteration. In general a work item is directed to a resource for execution (although a resource is not required to undertake automatic tasks). There are a variety of ways by which this may be achieved which will be discussed subsequently. A task may initiate one or several tasks when it completes (i.e. when a work item corresponding to it completes). This is illustrated by an arrow from the completing task to the task being initiated e.g. in Figure 1, task B is initiated when task A completes. This may also occur conditionally and where this is the case, the edge between tasks indicates the condition that must be satisfied for the subsequent task to be started.