Page 248 -
P. 248

242                                                        M. Adams
                              time with regards to the control-flow of the process, then awaits further requests
                              from the service as to obtaining ownership of the task instance (via a “check-out”
                              call) and later passing ownership back to the Engine (via a “check-in” call); what
                              happens in relation to the task in the meantime is of no concern to the Engine. At
                              check-in, the Engine will validate the data values assigned to the task instance by
                              the Custom Service against the data schema of the task to ensure that the data is
                              valid before the check-in is accepted, but it is not concerned with how that data
                              was actually assigned to the task instance by the Custom Service (e.g., through
                              user input, database lookup, web service response values, and so on).
                             The Engine knows nothing about users, but only of its registered custom services.
                              It may be that a Custom Service manages a set of users (e.g., the Resource Ser-
                              vice) but the Engine allows only custom services to connect to it. Thus, it is said
                              to be completely agnostic to “physical” users.
                             The Engine is unconcerned about how a task is resourced. This is a corollary to
                              the second point above: the Engine will pass responsibility for a task instance
                              to a Custom Service, but has no concern for which “physical” user actually per-
                              forms the work of the task instance, if any. In other words, the entire resource
                              perspective is handled externally to the Engine and wholly within the Resource
                              Service.

                              The two perspectives that the Engine is aware of and manages for each process
                           are the control-flow perspective (determining which task(s) are enabled at certain
                           times during the life-cycle of a process, based on arcs, conditions, splits, joins, and
                           so on), and the data perspective (mapping data values to and from tasks and their par-
                           ent nets, performing transformations, and evaluating expressions using the specified
                           XPath and XQuery predicates). How it manages these two perspectives at runtime
                           is detailed later in this chapter.
                              The Engine can execute a number of process instances concurrently, each one an
                           instance of a process specification. A specification is expressed as an XML docu-
                           ment, typically stored in a disk file, that describes the structure, format, data, and
                           layout of a process that has been expressed graphically in the Editor. An XML
                           specification file is produced when the process is saved in the Editor (the layout
                           information stored is used by the Editor when a specification file is reopened, but
                           is ignored by the Engine). Each specification is loaded into the Engine via Inter-
                           face A – the Resource Service provides a web form that allows for the loading of
                           specifications (see Fig. 9.1). Once loaded, the Engine stores the specification until
                           such time it is manually unloaded (which will succeed only if there are no process
                           instances based on it currently running).
                              Several versions of the same specification can coexist in the Engine at the same
                           time (i.e., having the same specification identifier but different version numbers).
                           Figure 9.1 shows two versions of the Order Fulfillment specification loaded and
                           running, for example. This allows for currently running process instances to con-
                           tinue to completion, even though a newer version of the specification is loaded into
                           the Engine; however, new case instances may only be started from the most recent
                           version loaded.
   243   244   245   246   247   248   249   250   251   252   253