parent work item instance also completes, at which point the task is marked as com- pleted and a token is produced in its output place, allowing the process control-flow to continue. Further, when an enabled work item of a multiple instance task is started and decomposed into a parent and a number of children, the children are each given the status Fired . Then, exactly one child is moved from Fired to Executing status (where there are multiple children, one is chosen at random to become Executing ). This means that, regardless of whether the task is single or multiple instance, only one child is ever started for a check-out request, while the remaining instances (i.e., in the case of a multiple instance task) are left at the intermediate Fired status, and must each be explicitly started before they are moved to Executing status. To summarize, the “execution” statuses are: IsParent: Denotes that instance of a work item that oversees the execution of the other (child) instances. When all child instances have completed, and in the case of multiple instance tasks, when the completion threshold has been reached, the parent also completes, allowing the process to continue as per its control-flow. Executing: Each work item that is successfully started is given Executing status. For multiple instance tasks, only one (indiscriminate) child is initially started via a check-out request; the other child instances are initialized at that time and given Fired status, and must be individually started to move each to Executing . Thus, Executing status denotes that the work item has started and is being processed by a designated Custom Service. Suspended: A work item with a status of Enabled , Fired , or Executing may be suspended. Basically, a status of Suspended blocks a work item from being progressed to a status subsequent to the status it had at the time it was sus- pended. So, an enabled work item, when suspended, cannot be fired; a fired work item cannot be executed; an executing work item cannot be completed. Suspension is typically used to “hold” a process in its current state, while, for example, some compensatory action is taken following an exception. Note that
252 M. Adams when a suspended work item is unsuspended, it always reverts to the status it held immediately before it was suspended. Every work item created for a task will eventually reach a completion status. As stated earlier, once all (or the specified threshold) of the child instances have reached a completion status, the parent instance also completes, and the task itself is said to have completed. The five completion statuses are the following: Complete: The work item has completed normally, typically via a check-in request from a Custom Service ForcedComplete: The work item was executing and has been forced to com- plete, typically by an exception handler. This status implies that the work item was not completed in the normal manner, but the process should move to the next task(s) in the control-flow (i.e., when all work items of the task are completed,
You've reached the end of your free preview.
Want to read all 664 pages?