Table 11-2. A list of the kinds of constructs you will use when working with a BPM or workflow system and
A state can mean many things, but simply, it's a pause or window in the action.
It's a way of letting your process rest in a known condition indefinitely. Perhaps
during this time, an external event might take place, or the system might wait for
an input. Perhaps the state is entered and then left as quickly as can be, serving
only to provide record of the event. This is one of the simplest and most powerful
functions of a workflow engine. Indeed, all discussions of long-lived state, of
conversational state, and of continuations are centered on this concept. It allows
your process to stop and wait for an event that tells it to proceed. This is powerful
because it implies that no resources need to be wasted waiting for that event, and
that the process can effectively sleep, or passivate, until such an event, at which
point the workflow engine will “wake” the process up and start it moving.
An activity is a pause in the action that can only move forward when a known
actor or agent in the system moves it forward. You might imagine the moderator
or group admin who has to OK your subscription to a news group. In that case,
only specified agents or roles may say the process may move forward.
A sequence is simply an aggregation of states, activities, and other types of
constructs that serializes them. You might have three states and an activity. You
might imagine them as steps on a ladder, where the ladder is the sequence
directing the process upwards to the ultimate goal.
The reason a sequence is important is because it implies there's another way of
threading things along. A fork is a concurrent execution of multiple threads of
execution at the same time, originating from a common thread. Some parts of a
business process are inherently sequential, and some are readily concurrent. In
the new employee example explored previously, you might imagine the security
clearance, laptop provisioning, and other tasks could be done at the same time,
thus increasing the speed of the process.
In the new employee example, we discuss several tasks that need to be
performed by representatives of different departments. Each department may
have its own task list to complete in order to achieve the goals of the overarching
process. These sub-tasks (basically a separate process unto their own) may be
modeled as a sub-process. Sub-processes afford your workflows the same
flexibility through reuse that composition through functions or classes affords