The Workflow Management Coalition Specification
Workflow Management Coalition
Workflow Standard - Interoperability
Abstract Specification
Document Number WFMC-TC-1012
20 October 1996
Version 1.0
Copyright 1996 The Workflow Management Coalition
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior written permission of the Workflow Management Coalition except that reproduction, storage or transmission without permission is permitted if all copies of the publication (or portions thereof) produced thereby contain a notice that the Workflow Management Coalition and its members are the owners of the copyright therein.
This Specification has been authored by Workflow Management Coalition members.
Workflow Management Coalition
Avenue Marcel Thiry 204
1200 Brussels
Belgium
Tel: +32 2 774 96 33
Fax: +32 2 774 96 90
Email: 100113.1555@compuserve.com or WfMC@eyam.be
www:http://www.aiai.ed.ac.uk/wfmc
or http://www.arms.ohio-state.edu/wfmc
The "WfMC" logo and "Workflow Management Coalition" name are service marks of the Workflow Management Coalition.
Neither the Workflow Management Coalition nor any of its members make any warranty of any kind whatsoever, express or implied, with respect to the Specification, including as to non-infringement, merchantability or fitness for a particular purpose. This Specification is provided "as is".
1.
Purpose
This document is a Workflow Management Coalition Standard providing an abstract
specification which defines the functionality required to support
interoperability between different workflow engines. It is intended that this
document provide a basis for early experimentation by workflow product vendors
to provide informed feedback, leading to the production of a ratified standard
in the fullness of time. Workflow product vendors should use this document to
understand the principles of how interoperability between workflow engines is
effected using the WfMC Standards. They should then refer to specific transport
binding specifications for details of how conformant implementations must work.
2.
Audience
The intended audience for this document is the Workflow Management Coalition,
as well as others that are interested in the efforts of the Coalition.
3.
Scope
3.1.
Scope of The Interoperability
Specification
The Workflow Management Coalition Standard - Interoperability defines the
mechanisms that workflow product vendors are required to implement in order
that one workflow engine may make requests of another workflow engine to effect
the:
· selection
· instantiation
· enactment
of known process definitions by that other engine. The requesting workflow engine should (optionally) also be able to receive back status information and the results of the enactment of the process definition. As far as possible, this is to be done in a way that is "transparent to the user". This interface is intended for the use of vendor organizations not users. As a side effect of facilitating the above communications between workflow engines, there is a stated requirement that audit data be produced.
3.2.
Models of
Interoperability
In its earlier work on the topic of interoperability (see [ICL95] and
[WfMC006]), the Workflow Management Coalition has identified a number of
different models of interoperability and a number of different levels against
which vendors of workflow products may measure their offerings. A synopsis of
these is presented here to assist the understanding of readers who come to this
document without first having had access to earlier documents.
3.2.1.
Interoperability
The following terminology is taken from the Workflow Management Coalition
Glossary [WfMC000].
Workflow Interoperability is described as:
" the ability of two or more workflow engines to communicate and interoperate in order to coordinate and execute workflow process instances across those engines."
A Workflow Engine is described as:
" A software service or "engine" that provides the run time execution environment for a workflow instance."
A Workflow Process Instance is defined to be:
" ...an instance of a workflow process definition which includes the automated aspects of a process instance... created and managed by a Workflow Management System"
A Workflow Management System is defined to be:
" A system that completely defines, manages and executes workflow processes through the execution of software whose order of execution is driven by a computer representation of the workflow process logic."
" A Workflow Management System consists of one or more Workflow Enactment Services".
" A Workflow Enactment Service consists of one or more Workflow Process Engines."
Hence we can conclude that interoperability can occur between:
two or more workflow engines (see figure 3.1 below)
Figure 3.1 Direct interaction between workflow engines
two or more workflow engines operating within the same workflow enactment service (see figure 3.2 below)
Figure 3.2. Interaction between workflow engines within an enactment service
two or more workflow enactment services (i.e. two or more workflow engines operating from within two or more workflow enactment services) within the bounds of a Workflow Management System. (see figure 3.3 below)
Figure 3.3 Interoperating workflow engines in different enactment services
The Workflow Management Coalition Reference Model [WfMC003] expands on the definition of a Workflow Enactment Service to explain that it:
" ... provides the run-time environment in which process instantiation and activation occurs, utilizing one or more workflow management engines, responsible for interpreting and activating part, or all, of the process definition and interacting with the external resources necessary to process the various activities."
From the above, we can infer that two process engines having different run-time environments can be taken to be different workflow enactment services.
"External resources" can be taken to be:
(i) human agents (via workflow client applications);
(ii) software tools invoked to perform particular tasks;
(iii) other workflow engines (which may individually or collectively constitute
workflow enactment services).
The Reference Model describes Workflow Domains which may contain one or more workflow engines. Workflow Domains can be thought of as being defined by some form of business agreement to allow two or more workflow engines to interoperate. Two interoperating workflow engines will share the same workflow domain which identifies the context within which the interoperation takes place. There are two kinds of workflow domain:
Open workflow domains - which describe the set of workflow engines that a workflow engine ends up interoperating with as a result of some exchange of verification tokens[1] in a business context.
Closed workflow domains - which describe the trusted set of workflow engines within which interoperability is to be allowed within a given business context.
Workflow domains, as used in the operation specifications given in section 5 of this document, describe just such logical groupings of workflow engines. It is a matter for the implementors of workflow solutions as to the exact basis on which these workflow domains are defined. Whether a particular workflow domain can be classified as being open or closed is, similarly, a matter for the implementors and owners of a given workflow solution.
3.2.2.
Effecting
Interoperability
Interoperability between software tools is normally taken to mean the ability
to share data and/or functionality by two or more tools. A software tool can be
any piece of software that performs a specific (set of) functions, such as a
text editor, a mail tool, a corporate database server or a workflow management
system. Interoperability is normally achieved using one of the following
strategies:
1. direct interaction between the tools (see figure 3.4 below)
Figure 3.4 Direct interaction between software tools
2. message passing (see figure 3.5 below)
Figure 3.5 Software tools interacting by passing messages
3. bridging (using some form of encapsulation, translation or gateway
mechanism as shown in figure 3.6 below)
Figure 3.6 Software tools interacting via a gateway that performs protocol transliteration
4. use of a shared data store (common repository - see figure 3.7 below).
Figure 3.7 Software tools integrated via use of a common repository
This last approach is not specifically addressed by the reference model, but
given that there are workflow products which move work from one activity to
another via an internal database, using a common (shared) database to move work
packages between workflow products is allowable as an alternative way of
effecting interoperability between those products. At an abstract level this
approach can be viewed as being just another form of store-forward mechanism.
3.2.3.
Levels of
Interoperability
The Workflow Management Coalition's Interoperability White Paper [WfMC006]
identifies eight levels of interoperability. The levels are distinguished by
the architectural and consequent operational characteristics of implementations
of workflow engines.
Level 1 - No interoperability
This level is characterized by products that have no way of communicating with each other and hence no potential for interoperability.
Level 2 - Coexistence
There is no standard approach to the interoperability of workflow products at this level. Rather there is exploitation of industry, national and international standards by vendors of workflow products to improve the availability of their products on multiple platforms. The effect is that increasing numbers of workflow products become available and can coexist on the same platform(s).
Thus, this level is characterized by workflow products sharing the same run-time environment (hardware, operating system, network). This level does not imply any direct interaction between different workflow products, but does enable organizations to implement different parts of a "whole process" using different workflow products as appropriate to their needs and the availability of suitable products.
The means of interfacing between different workflow products is through the active participation of human agents (this process has finished, so I now start that one).
This level will also characterize situations where there exist workflow products interoperating with each other using WAPI interfaces alongside workflow products that do not have WAPI interface capability.
Gateways
A gateway is a mechanism that allows specific workflow products to move work between each other (see figure 3.6 above). A gateway may be part of (one of) the products that use it or may be a separate product. Gateways may or may not exist on the same platform and are primarily concerned with the transfer of workflow control data and, where necessary, application data between different process instances. In certain circumstances an application may act as a gateway between two workflow systems. Gateways use protocol converters to map data and command formats from one domain to another. Gateway implementations may vary in the options for translation that they provide. Gateways may also be required to transfer control of data objects from one workflow management system to another. Where more than two workflow instances are involved, the gateway will also have to perform routing operations. The Interoperability White Paper defines two levels of gateway.
Level 3 - Unique Gateways
This level is characterized by workflow products working together using some bridging mechanism that performs:
routing of operations between workflow engines and instances
translation and delivery of workflow relevant data
translation and delivery of workflow application data
Level 3a - Common Gateway API
This level is characterized by workflow products working together using gateways that share a common (standard) API. This level carries the implication that the operations supported by different gateway mechanisms have been normalized to produce a common subset that can be supported by a standard, but does not exclude the possibility of supersets.
Level 4 - Limited Common API Subset
This level is characterized by workflow products that share a common (standard) API that allows them to interact (interoperate) with each other directly in order to move and manage work between them.
To implement this level of interoperability requires that a core set of API function calls are defined in a published standard and that most/all workflow engines can implement that API. The implementation models for this level are actually quite simple and are based on the use of APIs or encapsulations, i.e.
Figure 3.8 Workflow engines interoperating via API calls
or
Figure 3.9 Encapsulated interoperating workflow engines
The implementation of the encapsulations or APIs will need to handle any necessary data transformations. In order to avoid the need to implement multiple APIs for a given workflow product to support interoperation with different workflow products, it may be necessary to define neutral information formats to handle the transport of workflow relevant and workflow application data. Each implemented API would then be required to convert to/from the neutral information format.
Level 5 - Complete workflow API
This level is characterized by all workflow products sharing a single standard API that gives access to the full range of possible operations by any workflow management system. This does exclude any domain specific functionality that might be offered by workflow products developed to address the needs of particular market segments.
To define a complete workflow API requires detailed study of the operational command sets of all workflow products on the market in order to deduce the intersecting set of operations that can be supported (in some way) by all products. The wide range of types of workflow products on the market will necessarily impose constraints on what is realistically achievable at this level and it may well be that all that can be done in reaching this level will be achieved by continuous evolution at level 4. The key requirement is that a set of common operations can be defined, probably at an abstract level. These operations must be mapped to operations for each workflow product supporting this level of interoperability by the vendor of that product. The implementation of this mapping mechanism will require the same implementation models as for level 4.
Level 6 - Shared Definition Formats
This level is characterized by different workflow products having a shared format for process definitions that covers routing decisions; user access rights and the maintenance of workflow system resources. The consequence of this is that an organization can produce a single definition for each process that is to be supported on a workflow system, and can guarantee the behavior of the process whatever the workflow engine used to enact it. Constraints on this approach will naturally arise from the different forms and characteristics of present and future workflow products.
A simplistic view would be to state that all workflow products will support all possible operations taken from a defined set (otherwise they cannot call themselves workflow products). A more realistic approach is to recognize that different workflow products designed to solve problems in particular application domains will have specialized functionality that allows them to meet the needs of those domains. They will also have generic functionalities that are common to all or most workflow products and it is these that offer the best hope for achieving this level of interoperability. Functionality outside of this generic set must be treated as part of a superset that can only be dealt with by certain classes of workflow product (i.e. those with the appropriate operational profile). In this view of the world, there are two steps to achieving a standard that will support this level of interoperability:
1. the definition of the generic set of functionality
2. the definition of operational profiles for different classes of workflow product in order to identify those that can be used to provide specific functionalities.
The Workflow Management Coalition is in the process of defining a process definition language (WPDL) [WfMC0020] in order to take the first step. The additional functionalities could be offered using an extended language definition in the same way as computer programmers extend the functionality of a programming language by including types, functions and constants from header files and compile and run time libraries.
The potential offered by this approach is not only that a single process definition can be enacted upon a variety of workflow engines, but also that parts of a suitably modular process definition can be enacted on different workflow engines (as resources become available). The ability to switch work between different work groups that use different workflow products offers a degree of flexibility that promises increases in levels of efficiency and responsiveness of the organization as a whole.
The WPDL as defined is intended to support the definition of workflow processes in a product independent formalism that can be mapped or translated to the specific process definition formalisms that are understood by individual workflow engines.
Two interfaces are identified as being necessary for workflow engines to be able to work with WPDL:
1. Import a process definition from a character stream of definitions according to the common process definition language into the vendor's internal representation.
2. Export a process definition from the vendor's internal representation to a character stream according to the common process definition language.
[WfMC0020]
Level 7 - Protocol Compatibility
This level assumes that all API client/server communication including the transmission of definitions, workflow transactions and recovery is standardized. To achieve this level of interoperability, vendors may be required to support a number of different mechanisms through which such interoperation can be effected.
Level 8 - Common Look and Feel Utilities
This level assumes that in addition to the preceding levels, all workflow products present the user with the same standard user interface or at least "look and feel". For commercial and practical reasons, this level may never actually be attained.
3.2.4.
Models of
Interoperability
Previous work on the subject of interoperability by the Workflow Management
Coalition has identified the following models of interoperability.
1. Chained processes
Figure 3.10 The chained model of interoperability
This model of interoperability assumes that the process instance being enacted on Workflow Engine A triggers the creation and enactment of a sub-process instance on Workflow Engine B. Once enactment of the sub-process instance has begun on Workflow Engine B, Workflow Engine A may terminate or may continue with the enactment of its own process instance. It takes no further interest in the newly created sub-process instance.
2. Nested sub-process
Figure 3.12. The nested sub-process model of interoperability
The nested sub-process model of interoperability assumes that a process instance enacted on a workflow engine causes the creation and enactment of a sub-process instance on a second engine and then waits for its termination before carrying on with its own enactment.
3. Parallel synchronized
figure 3.13. The parallel synchronized model of interoperability
The parallel synchronized model of interoperability assumes that two workflow engines simultaneously enact process instances and that at some point in the definition of each of the process instances, a rendezvous has been specified. Having achieved the rendezvous point, the first workflow engine (which engine is first is not specified) waits for the other to achieve its rendezvous point. Once the enactment of both process instances has achieved the respective rendezvous points, there is some (unspecified) interchange between the workflow engines, before both continue with the enactment of their respective process instances.
The parallel synchronized model of interoperability is outside the scope of
what this standard is currently trying to achieve.
4.
Overview
4.1
Design
Assumptions
The basic design assumption underpinning this work is that two or more workflow
engines exist (they may be two or more instances of the same workflow product
or instances of different workflow products) which can communicate with each
other in order to effect the:
* selection
* instantiation
* enactment
of known process definitions and (optionally) the return of the results of the performance of a nested process definition to the invoking workflow engine. No assumptions are made about how such communication is effected, only that it is effected. Similarly, no assumptions are made about the architecture or operating characteristics of the workflow products. A necessary distinction is made between the operational characteristics of workflow engines that communicate with each other synchronously and workflow engines that communicate with each other asynchronously. The principle of transparency across the interface assumes that process definitions are specified using a common definition protocol such as WPDL as described in [WfMC0020].
4.2
Design
Objectives
>
The design objective is to define a standard capable of supporting the
implementation of nested sub-processes across multiple workflow engines. In the
following descriptions of possible interoperability scenarios, the term
Workflow Engine A is used to denote the workflow engine enacting the (parent)
process instance that causes some other workflow engine, termed Workflow Engine
B, to initiate enactment of a (child) sub-process instance.
4.2.1
Starting a chained
sub-process
Workflow Engine A
Workflow Engine B
Figure 4.1. main process starts a chained sub-process on another workflow engine
This scenario involves the invoking workflow engine (which is running the parent workflow process instance) creating/starting a new (child) process instance as a sub-process to be enacted by some other workflow engine. In this first scenario, the invoking workflow engine does not wait for the sub-process to complete, but either terminates or carries on with the next step in the parent process model.
To see how this works in practice, assume the existence of two workflow engines A and B. To meet the objectives set out above, it must be possible for Workflow Engine A to:
1. select a known process definition managed by or accessible to Workflow Engine B
2. pass Workflow Engine B process relevant data (which may include the location of application data) in order to instantiate the selected definition
3. request Workflow Engine B to enact the selected process definition
The transfer of application data between interoperating workflow engines is deemed to be outside the scope of this specification and of the WAPI in general. The notification of the location of application data to be processed by tools invoked during the enactment of workflow activities is treated as the passing of process relevant data.
There are a number of possibilities regarding the selection of the process definition to be enacted by Workflow Engine B.
1. The definition is owned (managed) by Workflow Engine A and is passed to Workflow Engine B when it is required.
2. The definition is managed by Workflow Engine B and requested by Workflow Engine A when required (this implies that Workflow Engine A has knowledge of the existence and location of the definition).
3. All definitions are stored in some shared space (say a repository) and can be retrieved as required by any of the workflow engines involved.
For the purposes of this standard, these possibilities can be reduced to two options;
1. the definition of the sub-process to be enacted is passed from one workflow engine to another;
2. the location of the definition of the sub-process to be enacted is known and accessible to the workflow engine that is to enact it.
This standard assumes that if process definitions were to be passed between workflow engines, this would occur at the request of Workflow Engine B on instruction from Workflow Engine A and would be effected by the workflow engines using some other exchange mechanism, possibly one that involves Process Definition Interchange as defined in [WfMC0020]. Thus it is only necessary for this standard to address option 2.
A key issue for the specification of concrete bindings is whether the interoperation between the two workflow engines is to be effected using some model of synchronous communication, such as would be required by direct connection via TCP/IP, or asynchronous communication which could be effected using some form of store-forward mechanism such as electronic mail. There are thus two distinct cases that have to be considered[2]:
* synchronous interoperation and
* asynchronous interoperation.
The main difference between the two modes of working lies in the requirement for both workflow engines to be "on-line" at the same time in order to effect an interoperability dialogue.
In terms of the operations defined in section 5 below, the operations listed in table 4.1 would be used to effect the dialogue between two workflow engines required to support the interoperability shown in figure 4.1.
Workflow Engine Operation A B Create Process Instance Response to Create Process Instance A B Set Process Instance Attributes Response to Set Process Instance Attributes B A Get Process Instance Attributes Response to Get Instance Attributes A B Start Process Enactment Response to Start Process Enactment A B Relinquish Process Instance Response to Relinquish Process Instancetable 4.1: operations required to start a chained sub-process.
Note that the dialogue between the two workflow engines is based on the notion of request/response message pairings, where the response returns a status indicating the success, failure or other outcome of the requested operation. Such responses are distinct from notifications made by Workflow Engine B of state changes or changes to the values of process instance attributes that may occur during the life of the enacted sub-process. Notifications are not sent where such change occurs in response to some received instruction for which a response message already conveys the necessary information.
Example
Let us assume that Workflow Engine A requires to initiate the enactment of a defined sub-process on Workflow Engine B.
Workflow Engine A would connect to Workflow Engine B and pass it an instruction to create a new process instance based on a known process definition using the Create Process Instance operation. Workflow Engine B responds by notifying Workflow Engine A of the PID of the created process instance.
Workflow Engine A may set values of workflow relevant data items in the definition using the Set Process Instance Attributes operation. Workflow Engine B responds by notifying Workflow Engine A that the operation has succeeded/failed.
Where necessary Workflow Engine B may ask Workflow Engine A to assign values to workflow relevant data items using the Get Workflow Instance Attributes operation. Workflow Engine A responds by providing Workflow Engine B with the requested values.
Workflow Engine A will request/instruct Workflow Engine B to start enactment of the process instance using the Start Process Enactment operation. Workflow Engine B will notify Workflow Engine A when this has occurred.
If response times are not adequate to support/sustain atomic transmission, Workflow Engine A may batch request messages for transmission to Workflow Engine B. Workflow Engine B will return a batch of response messages, one for each request message in the batch sent by Workflow Engine A.
Assuming batched transmission, requests and responses might be batched as follows:
Workflow Engine A Create Process Instance Workflow Engine B Response to Create Process Instance Workflow Engine A Set Process Instance Attributes Start Process Enactment Relinquish Process Instance Workflow Engine B Response to Set Process Instance Attributes Response to Start Process Enactment Response to Relinquish Process Instance
Note that should a request message fail in the middle of a batch of requests, workflow engine B will return a batch of responses in which:
· those operations which succeeded prior to the failure return a success status
· the operation that failed returns a failed status
· the operations requested following the operation which failed return a status of operation not performed.
Process chains may be constructed involving creation of many process instances, e.g.
Workflow Engine A
Workflow Engine B
Workflow Engine C
Figure 4.2. main process starts a chained sub-process on another workflow engine which in turn creates a chained sub-process on a third workflow engine
4.2.2
Starting a sub-process that completes a process
step
figure 4.3. a process instance starts a sub-process on another workflow engine and waits for completion
In this scenario, the parent process instance waits for the child to complete, possibly taking back process relevant or application data before performing the next step in the process. To support scenarios where the conclusion of the enacted sub-process alone is the requirement for the continued enactment of the parent process, it is necessary to provide a mechanism for notification of the end of enactment of a sub-process.
Workflow Engine Operation A B Create Process Instance Response to Create Process Instance A B Set Process Instance Attributes Response to Set Process Instance Attributes B A Get Process Instance Attributes Response to Get Process Instance Attributes A B Start Process Enactment Response to Start Process Enactment B A Notify Process Instance Attribute Changed Response to Notify Process Instance Changed A B Get Process Instance Attributes Response to Get Process Instance Attributes A B Relinquish Process Instance Response to Relinquish Process Instance
table 4.2: operations required for a sub-process that completes a process step
Example
Let us assume that Workflow Engine A requires to initiate the enactment of a defined sub-process on Workflow Engine B, needing the results of the enactment to be able to continue the enactment of its own process definition.
Workflow Engine A would connect to Workflow Engine B and pass it an instruction to create a new process instance based on a known process definition using the Create Process Instance operation. Workflow Engine B responds by notifying Workflow Engine A of the PID of the created process instance.
Workflow Engine A may set values of workflow relevant data items in the definition using the Set Process Instance Attributes operation. Workflow Engine B responds by notifying Workflow Engine A that the operation has succeeded/failed.
Where necessary Workflow Engine B may ask Workflow Engine A to assign values to workflow relevant data items using the Get Workflow Instance Attributes operation. Workflow Engine A responds by providing Workflow Engine B with the requested values.
Workflow Engine A will request/instruct Workflow Engine B to start enactment of the process instance using the Start Process Enactment operation. Once enactment has started, Workflow Engine B will notify Workflow Engine A that this has occurred.
When the enactment of the sub-process is finished, Workflow Engine B is required to communicate the product of the sub-process to Workflow Engine A (or at least notify it that it is now available). This can be achieved by Workflow Engine B using the Notify Process Instance Completed operation to tell Workflow Engine A that the sub-process enacted on Workflow Engine B has completed. Workflow Engine A may then ask Workflow Engine B for values for these workflow relevant data items using the Get Workflow Instance Attributes operation. Workflow Engine B responds by providing Workflow Engine A with the requested values.
Once it has retrieved all of the values it requires, Workflow Engine A might then tell Workflow Engine B that it is safe to release all pertinent memory structures relating to the enactment of the process instance. This could be achieved using the Relinquish Process Instance operation.
Assuming batched transmission, requests and responses might be batched as follows:
Workflow Engine A Create Process Instance Workflow Engine B Response to Create Process Instance Workflow Engine A Set Process Instance Attributes Start Process Enactment Workflow Engine B Response to Set Process Instance Attributes Response to Start Process Enactment Workflow Engine B Notify Process Instance Attribute Changed Workflow Engine A Response to Notify Process Instance Attribute Changed Workflow Engine A Get Process Instance Attributes Workflow Engine B Response to Get Process Instance Attributes Workflow Engine A Relinquish Process Instance Workflow Engine B Response to Relinquish Process Instance
This scenario implies an ongoing "interest" in the progress of the enacted
sub-process on the part of the invoking process. Thus, an additional operation
to check the current state of a process instance can be envisaged, returning
status information regarding the enacted sub-process to the invoking workflow
engine. Such an operation would be necessary in order to effect queries across
multiple workflow engines to ascertain the current state of a "whole process"
being enacted as separate process instances [ICL95].
figure 4.4: use of a process management tool in a multiple workflow engine environment
In the example shown in figure 4.4, the arrows connecting Workflow Engine A with the Process Management Tool are effected using the facilities of WAPI interface 2 [WfMC1009] and/or WAPI interface 3 [WfMC0013]. The arrows connecting Workflow Engine A to Workflow Engine B are effected using the facilities of WAPI interface 4.
Workflow Engine Operation A List Process Instances A Get Process Instance State
table 4.3: additional operations required to support use of a process management
tool in a multiple workflow engine environment
None of the above scenarios require support for rendezvous (required for parallel synchronized models of interoperability - see [WfMC006]), which is outside the current scope of this work.
4.3
Defined Terms and
Abbreviations
The terms used in this document are defined in the Workflow Management
Coalition Glossary [WfMC000].
4.4
Conformance
and
Correspondence
This document is an abstract specification, and as such it is not possible for
vendors of workflow products to claim conformance to it. The specification
contained in this document is realized through specific binding specifications
which have been adopted by the Workflow Management Coalition as demonstrating
correspondence to the abstract specification. Vendors of workflow
products and other interested parties are directed to these binding
specifications for guidance in development of implementations and for
associated conformance requirements.
4.5
Naming
Conventions
The operations are specified using the Object Management Group's Interface
Definition Language (IDL) as given in [OMG93]. The data types used in this
document are abstract data types which when the time comes to reify down to
concrete interfaces could be mapped onto those defined in [WfMC1013] to produce
C language bindings. Other language bindings must provide their own type
definitions. States and return values used in this document are derived from
[WfMC015].
5.
Specification of Operators for Effecting
Interoperation
>
In the following text, the IDL specifications are intended as an abstract representation of the operations required to effect interoperability between two (or more) workflow engines. The message specifications are intended as abstract representations of the information that needs to be passed between two workflow engines in order to effect the operations described. It is possible that for workflow engines interoperating synchronously (say via an Object Request Broker) the IDL specifications will provide a basis from which implementation could be attempted. It is expected that the specifications of message formats will apply to implementations that work either synchronously or asynchronously.
Three distinct classes of message are described below -
· request messages
· response messages
· notification messages
A request message is used when one workflow engine needs another workflow engine to perform some action on its behalf. Every request message is answered by a response message which tells the requesting engine the result of its request, i.e. the action(s) requested have been carried out or it was not possible to perform the actions requested because ...
During a protracted interoperation (the time line for such workflow interoperations can be a matter of hours, days or even weeks) there may be defined event points in the enactment of a sub-process when it is required that the parent process is made aware that a given milestone has been achieved. Alternatively it may be material to the ability of the parent process to progress to its conclusion if the enacted sub-process is prematurely terminated or fails in some way. To provide the capability for interacting workflow engines to handle these circumstances, notification messages are provided so that Workflow Engine B, enacting a sub-process on behalf of Workflow Engine A, may inform Workflow Engine A of significant events that occur during the enactment of the sub-process. Every notification message is answered by a response message which tells the notifying workflow engine that it has been received and understood.
In the specification of messages given below, the field "Message Routing Information" is provided for completeness. The requirement for its usage is dependent on the particular transport binding that you are implemented and it may not be needed at all for some bindings.
Connection operations are assumed to be binding specific and outside the scope of the abstract specification.
5.2.
Process Control
Interactions
5.2.1
Create Process
Instance
Specificatio WMAReturnCode WMRequestCreateProcessInstance ( n in engine_identifier WMAEngineID, in process_definition_id WMAObjectID, in return_flag WMABool, in parent_pid WMAObjectID, in activity_id WMA_Activity_id, out sub_process_id WMA_Process_instance_id, out user_id WMAResourceID, out role_id WMAResourceID );
Description This operation identifies a process definition which the receiving workflow engine will be required to enact.
Parameters engine_identifier identifies the target workflow engine and domain
process_definition_id[3] the id of the process definition that is to be enacted
return_flag indicates whether the target workflow engine is required to
communicate any return values (nested sub-process)
parent_pid the initial process instance unique id (the id of the process instance operating on the invoking (parent) workflow engine[4]
activity_id the id of the activity in the parent process instance which is causing this request to create a sub-process
sub_process_id the process instance unique id of the process instance that has been created by the selection of the given process definition
user_id the id of the primary user of the process instance to be created (may be null)
role_id the id of the role assumed by the primary user (may be null)
Return Values Success | Failure | Operation not performed
Rationale As explained in 4.2 above, it is necessary that a workflow engine be able to communicate the identity of a process definition to another workflow engine in order for the latter to enact it.
It is also necessary that the workflow engine creating a new process instance should know whether or not to communicate status information to the workflow engine that initiated the request to do so. If the return flag is set to TRUE, then the initiating workflow engine will be notified of all status change information (started, suspended, resumed, completed...) until such time as the process instance reaches termination of one form or another or the initiating workflow engine issues an instruction that it wishes to relinquish its interest in the new process instance. If the return flag is set to FALSE, then the enacting workflow engine will not notify the initiating workflow engine of any state changes.
Request Message Format
Note that message routing information is deemed to be implementation/binding specific and outside the scope of the abstract specification.
Field Value CreateProcessInstance ProcessDefinitionID Identifier of the process definition that the target workflow engine is required to use to create the process instance ReturnFlag True => nested sub-process False => chained ParentPID Identifier of initial (root) process on requesting workflow engine that requires the new process instance to be created ProcessID Identifier of process on requesting workflow engine that requires the new process instance to be created ActivityID Identifier of activity on requesting workflow engine that requires the new process instance to be created Timestamp Timestamp for when request was sent by requesting workflow engine DomainID ID of domain within which the workflow engines are interoperating SourceNodeID Identifier for requesting workflow engine SourceUserID User ID responsible for request (may be null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null)5 TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) SourceBusinessDefinitionProcessName Business Definition Process Name for requesting process instance (may be null) MessageRoutingInformation Key values used to route the message to its correct destination
Response Message Format
Field Value Response to CreateProcessInstance Return code Success | Failure | No_operation Timestamp Timestamp for when requested process instance was created ProcessID ID of newly created process instance [6]UserID User ID of primary user (may be null) RoleID Role assumed by primary user (may be null) TargetProcessBusinessDefinitionName may be null TargetState State of new process instance DomainID Identifier for workflow domain in which the workflow engines are interoperating TargetNodeID Node of target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data:
Request
Requesting Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentRequestStartProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestStartProcessInstance
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMCreatedProcessInstance
Target Workflow Engine: Create/Start Process/Subprocess Instance
Event Code: WMCreatedProcessInstance
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentStartedProcessInstance
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedStartedProcessInstance
5.2.2
Get Process Instance
State
Specificatio WMAReturnCode WMRequestGetProcessInstanceState ( n in engine_identifier WMAEngineID, in process WMAObjectID, out state WMAObjectState );
Description Get the current status of a given process instance which is being enacted by another workflow engine.
Parameters engine_identifier identifies the target workflow engine
process the id of the process instance that is being enacted
state the returned state[7] - a string prefixed by one of:
open.not-running[8]
open.running[9]
closed.completed
closed.terminated
closed.aborted
Return Values Success | Failure | Operation_not_performed | Operation_not_implemented
Rationale For long term sub-processes with a life beyond that of the session during which they were created, it is important that the invoking workflow engine be able to check as necessary that the invoked sub-process is alive and well or has completed.
Request Message Format
Field Value GetProcessInstanceState ProcessID Identifier of process on target workflow engine for which the state is being requested DomainID Identifier for workflow domain within which the workflow engines are interoperating SourceNodeID Identifier for source workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Response Message Format
Field Value ResponsetoGetProcessInstanceState ReturnCode Success | Failure | Operation_not_performed | Operation_not_implemented ProcessID Identifier of process on target workflow engine for which the state is being requested State State of process instance DomainID Identifier for workflow domain within which the workflow engines are interoperating TargetNodeID Identifier for target workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Audit Data: Not Specified
5.2.3
Set Process Instance
Attributes
>
Specificatio WMAReturnCode WMRequestSetProcessInstance Attributes ( n in engine_identifier WMAEngineID, in root_pid WMAObjectID, in activity_id WMAObjectID, in process_id WMAObjectID, out attributes WMAAttributeList );
Description Sets the value(s) of process instance attributes (process relevant data) in a selected process definition. The attribute list sent to target workflow engine will contain value specifications for one or more process instance attributes to be set. The target workflow engine will attempt to set attribute values in the order in which they occur in the list. It returns a response message containing a list of those attributes for which the set operation was successful. In the event that, part way through actioning a list of attribute values some error occurs, then the attribute for which it was unable to set a value will not be contained in the response message and the return code value will indicate that a failure occurred. The target workflow engine will not action a list of attribute values beyond the point at which a failure occurs.
Parameters engine_identifier identifies the target workflow engine
root_pid the initial process instance unique ID (the ID of the process instance operating on the invoking (parent) workflow engine
activity_id the ID of the activity in the parent process instance which is causing this request to set process instance attributes
process_id the id of the process instance that owns the process relevant data being requested
attributes a list of attribute specifications giving for each attribute to be set:
the name of the attribute
the type of the attribute
the length of the attribute
the value to which the attribute is to be set
and returning:
the name of each attribute set
Return Values Success | Failure | Operation_not_performed | Operation_not_implemented
Rationale Process definitions are only partial and must be fully (or sufficiently) instantiated before enactment may commence.
Request Message Format
Field Value SetProcessInstanceAttributes RootPID PID of root workflow process instance ProcessID The PID of the process instance on the target workflow engine for which changes to attribute values are being requested. ActivityID Activity ID identifying the process step within the process instance that is requesting the setting of the specified attributes Number The number of Attributes for which value changes are required. Name10 attribute identifier Type attribute type Length new attribute length Value new attribute value ... ... DomainID Identifier for the workflow domain within which the workflow engines are interoperating SourceNodeID Identifier for source workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Field Value ResponsetoSetProcessInstanceAttributes Message identifier assigned by target workflow engine or by the transport mechanism ReturnCode Success | Failure | Operation_not_performed | Operation_not_implemented ProcessID The PID of the process instance on the target workflow engine for which changes to attribute values were requested. Number The number of Attributes for which value changes have succeeded (should be equal to the number of attributes for which changes were requested). Name11 The name of an attribute that has had its value changed Timestamp Time when this attribute value was changed ... ... DomainID Identifier for the workflow domain within which the workflow engines are interoperating TargetNodeID Identifier for target workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Audit Data:
The following audit data records would be created as a result of the target workflow engine successfully changing each attribute value at the behest of the requesting workflow engine.
Request
Requesting Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentRequestChangeProcessInstanceAttribute
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestChangeProcessInstanceAttribute
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMAssignedProcessInstanceAttribute
Target Workflow Engine: Change Process Instance Attributes
Event Code: WMAssignedProcessInstanceAttribute
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentChangedProcessInstanceAttribute
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedChangedProcessInstanceAttribute
Specificatio WMAReturnCode WMRequestGetProcessInstanceAttributes ( n in engine_identifier WMAEngineID, in process_id WMAObjectID, in root_pid WMAObjectID, in activity_id WMAObjectID, out attributes WMAAttributeList );
Description Returns the value(s)[12] of the requested process instance attributes (process relevant data).
Parameters engine_identifier identifies the target workflow engine
process_id the id of the process instance that owns the workflow relevant data being requested
root_pid the initial process instance unique ID (the ID of the process instance operating on the invoking (parent) workflow engine
activity_id the ID of the activity in the parent process instance which is causing this request to retrieve process instance attributes
attributes a list of attribute specifications giving for each attribute to be set:
the name of the attribute
the type of the attribute
the length of the attribute
the value to which the attribute is to be set
Return Values Success | Failure | Operation not performed
Rationale Checking values of process relevant data is one way in which a workflow engine can check on the progress of a workflow being enacted on another workflow engine.
Request Message Format
Field Value GetProcessInstanceAttributes RootPID Identifier of initial (root) process on source workflow engine ProcessID The PID of the process instance on the target workflow engine from which attribute values are being requested. ActivityID Identifier of activity on source workflow engine Timestamp Timestamp for when request was sent by source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) SourceBusinessDefinitionProcessName Business Definition Process Name for source process instance (may be null) Number The number of Attributes for which values are being requested. Name13 ... attribute identifier ... DomainID ID of domain within which the workflow engines are interoperating SourceNodeID Identifier for source workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Field Value Response toGetProcessInstanceAttributes Return Code Success | Failure | No_operation ProcessID The PID of the process instance on the source workflow engine for which attribute values were requested. Number The number of Attributes for which values have been supplied Name14 attribute identifier Type attribute type Length new attribute length Value new attribute value ... ... DomainID Identifier for the workflow domain within which the two workflow engines are interoperating TargetNodeID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data:
The following audit data records would be created as a result of the target workflow engine successfully providing each requested attribute value at the behest of the requesting workflow engine.
Request
Requesting Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentRequestGetProcessInstanceAttribute
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestGetProcessInstanceAttribute
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentRetrievedProcessInstanceAttribute
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRetrievedProcessInstanceAttribute
Specificatio WMAReturnCode WMRequestStartProcessInstance ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Start the enactment of the identified workflow process instance on another workflow engine. Both workflow engines create appropriate audit records as specified in [WfMC015] to record that enactment of the process instance has started.
Parameters engine_identifier identifies the target workflow engine
process_id the id of the process instance for which enactment is to be started
Return Values Success | Failure | Operation_not_performed | Operation_not_implemented
Rationale It is an operational requirement of users of interoperating workflow systems that it be possible to initiate the enactment of sub-process workflows.
Request Message Format
Field Value StartProcessInstance ProcessID The PID of the Process Instance that the target workflow engine is being requested to enact DomainID Domain ID for set of workflow engines interoperating within the current context SourceNodeID Identifier for source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) MessageRoutingInformation Key values used to route the message to its correct destination
The following audit data records would be created as a result of the target workflow engine successfully commencing enactment of the designated process instance at the behest of the requesting workflow engine.
Request
Requesting Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentRequestStartProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestStartProcessInstance
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMStartedProcessInstance
Target Workflow Engine: Create/Start Process/Subprocess Instance
Event Code: WMStartedProcessInstance
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentStartedProcessInstance
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedStartedProcessInstance
5.2.6
Process Instance
Started
Specificatio WMAReturnCode WMNotifyProcessInstanceStarted ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Notifies the invoking workflow engine that the enactment of the given process instance has started on the target workflow engine. This operation is necessary for situations where the process instance has been created on the host at the behest of another workflow engine, but not started. It may be that enactment of such a process instance would be started once certain pre-conditions have been satisfied. In such a circumstance, it would be appropriate for the host workflow engine to notify the other workflow engine when enactment of the process instance had started.
Parameters engine_identifier identifies the invoking workflow engine
process_id the id of the process instance that has started
Return Values Success | Failure
Rationale In certain circumstances the invoking workflow engine may need to know when enactment of the given sub-process has begun on the target workflow engine.
Notification Message Format
Field Value ProcessInstanceStarted ProcessID The PID of the Process Instance on the source workflow engine that has started RemotePID The PID of the parent process instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance has started. SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Timestamp Time enactment of the process instance began DomainID ID of domain within which the workflow engines are interoperating SourceNodeID Identifier for source workflow engine Message Routing Information Key values used to route the message to its correct destination
The following audit data records would be created as a result of the notifying workflow engine starting enactment of a sub-process on behalf of the target workflow engine.
Actual Event
Notifying Workflow Engine: Create/Start Process/Subprocess Instance
Event Code: WMStartedProcessInstance
Notification
Notifying Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentStartedProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedStartedProcessInstance
Specificatio WMAReturnCode WMRequestAbortProcessInstance ( n in engine_identifier WMAEngineID, in process_id WMAObjectID, );
Description Abort the enactment of the identified workflow process instance on another workflow engine. Both workflow engines create appropriate audit records as specified in [WfMC015] to record that the process instance was aborted.
Parameters engine_identifier identifies the target workflow engine
process_id the id of the process instance that is to be aborted
Return Values Success | Failure | Operation not performed
Rationale It is an operational requirement of users of interoperating workflow systems that it be possible to abort the enactment of sub-process workflows when this becomes necessary.
Field Value AbortProcessInstance ProcessID The PID of the Process Instance that the target workflow engine is being requested to abort SourcePID The ID of the process instance that has caused the request to abort the sub-process instance (may be null) SourceAID The ID of the activity in the current process instance that has caused the request to abort the sub-process instance (may be null) DomainID Domain ID for set of workflow engines interoperating within the current context SourceNodeID Identifier for source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to AbortProcessInstance ReturnCode Success | Failure | No_operation TargetUserID User ID of primary user (may be null) TargetRoleID Role assumed by primary user (may be null) ProcessID The PID of the Process Instance that the target workflow engine was requested to abort ActivityID The ID of the current activity in the enacted process instance that has been aborted (may be null) Timestamp The time that enactment was aborted. DomainID Domain ID for set of workflow engines interoperating within the current context TargetNodeID Identifier for target workflow engine MessageRoutingInformation Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the target workflow engine successfully aborting enactment of the designated process instance at the behest of the requesting workflow engine[15].
Request
Requesting Workflow Engine: Link to Remote Process Audit Data
Event Code: WMSentRequestAbortProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestAbortProcessInstance
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMAbortedProcessInstance
Target Workflow Engine: Create/Start Process/Subprocess Instance
Event Code: WMAbortedProcessInstance
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentAbortedProcessInstance
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedAbortedProcessInstance
5.2.8
Process Instance
Aborted
Specificatio WMAReturnCode WMNotifyProcessInstanceAborted ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Notifies the invoking workflow engine that the enactment of the given process instance has been aborted locally.
Parameters engine identifier identifies the invoking workflow engine
process_id the id of the process instance
Return Values Success | Failure
Rationale In certain circumstances the invoking workflow engine may need to know if the enactment of a sub-process has been aborted on the target workflow engine.
Notification Message Format
Field Value ProcessInstanceAborted ProcessID The PID of the Process Instance on the source workflow engine that has aborted ActivityID The AID of the current activity instance in the process instance at the time it aborted RemotePID The PID of the parent process instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance has aborted. Timestamp Time enactment of the process instance was aborted DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to ProcessInstanceAborted DomainID Domain ID for set of workflow engines interoperating within the current context TargetNodeID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the notifying workflow engine aborting enactment of a sub-process created at the behest of the target workflow engine.
Actual Event
Notifying Workflow Engine: Change Process/Subprocess Instance State Audit Data
Event Code: WMAbortedProcessInstance
Notification
Notifying Workflow Engine: Link to Remote Process Operations Audit Data
Event Code: WMSentAbortedProcessInstance
Target Workflow Engine: Link from Remote Process Operations Audit Data
Event Code: WMReceivedAbortedProcessInstance
5.2.9
Terminate Process
Instance
Specificatio WMAReturnCode WMRequestTerminateProcessInstance ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Terminate the enactment of a workflow process instance on another workflow engine. Both workflow engines create appropriate audit records as specified in [WfMC015] to record that enactment of the process instance has been terminated.
Parameters engine identifier identifies the target workflow engine
process_id the id of the process instance that is to be terminated
Return Values Success | Failure | Operation not performed
Rationale It is an operational requirement of users of interoperating workflow systems that it be possible to gracefully terminate the enactment of sub-process workflows prior to their natural completion when this becomes necessary.
Request Message Format
Field Value TerminateProcessInstance ProcessID The PID of the Process Instance that the target workflow engine is being requested to terminate SourceAID The ID of the activity in the current process instance that has caused the request to terminate the sub-process instance (may be null) DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to TerminateProcessInstance TargetUserID User ID of primary user (may be null) TargetRoleID Role assumed by primary user (may be null) ProcessID The PID of the Process Instance that the target workflow engine was requested to terminate ActivityID The ID of the current activity in the enacted process instance that has been terminated (may be null) Timestamp The time that enactment was terminated. DomainID Domain ID for set of workflow engines interoperating within the current context Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the target workflow engine successfully terminating enactment of the designated process instance at the behest of the requesting workflow engine.
Request
Requesting Workflow Engine: Link to Remote Process Audit Data
Event Code: WMSentRequestTerminateProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestTerminateProcessInstance
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMTerminatedProcessInstance
Target Workflow Engine: Create/Start Process/Subprocess Instance
Event Code: WMTerminatedProcessInstance
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentTerminatedProcessInstance
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedTerminatedProcessInstance
5.2.10
Process Instance
Terminated
Specificatio WMAReturnCode WMNotifyProcessInstanceTerminated ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Notifies the invoking workflow engine that the enactment of the given process instance has been prematurely terminated locally.[16]
Parameters engine_identifier identifies the invoking workflow engine
process_id the id of the process instance
Return Values Success | Failure
Rationale In certain circumstances the invoking workflow engine may need to know if the enactment of the sub-process has been terminated prematurely.
Notification Message Format
Field Value Process Instance Terminated ProcessID The PID of the Process Instance on the source workflow engine that has terminated ActivityID The AID of the current activity instance in the process instance at the time it was terminated Remote Process Instance ID The PID of the parent process instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance has been terminated. Timestamp Time enactment of the process instance was terminated DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to ProcessInstanceTerminated DomainID Domain ID for set of workflow engines interoperating within the current context TargetNodeID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the termination of a process instance being enacted on the notifying workflow engine on behalf of the target workflow engine.
Actual Event
Notifying Workflow Engine: Change Process/Subprocess Instance State Audit Data
Event Code: WMTerminatedProcessInstance
Notification
Notifying Workflow Engine: Link to Remote Process Operations Audit Data
Event Code: WMSentTerminatedProcessInstance
Target Workflow Engine: Link from Remote Process Operations Audit Data
Event Code: WMReceivedTerminatedProcessInstance
5.2.11
Change Process Instance
State
Specificatio WMAReturnCode WMRequestChangeProcessInstanceState ( n in engine_identifier WMAEngineID, in process_id WMAObjectID, in state WMAObjectState );
Description Change the state of a designated process instance which is enacted on another workflow engine from for example, suspended to resumed or vice versa. Both workflow engines create appropriate audit records as specified in [WfMC015] to record that enactment of the suspended process instance was suspended or resumed.
Parameters engine_identifier identifies the target workflow engine
process_id the id of the process instance that is to be suspended or resumed
state the new state to which the process instance is to be switched
Return Values Success | Failure | Operation not performed
Rationale It is an operational requirement of users of interoperating workflow systems that it be possible to suspend enactment of sub-process workflows and resume enactment of suspended sub-process workflows when this becomes necessary.
Request Message Format
Field Value Change Process Instance State ProcessID The PID of the Process Instance on the target workflow engine for which the state change is being requested NewState The state to which the designated process instance is to be changed SourcePID The ID of the process instance that has caused the request to change the state of the sub-process instance (may be null) SourceAID The ID of the activity in the current process instance that has caused the request to change the state of the sub-process instance (may be null) SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to Change Process Instance State TargetUserID User ID of primary user (may be null) TargetRoleID Role assumed by primary user (may be null) ProcessID The PID of the Process Instance that the target workflow engine for which the state change was requested ActivityID The ID of the current activity in the enacted process instance at the time the state change occurred (may be null) Timestamp The time that the state of the process instance was changed. DomainID Domain ID for set of workflow engines interoperating within the current context Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of changing the state of a process instance being enacted on the target workflow engine on behalf of the requesting workflow engine.
Request
Requesting Workflow Engine: Link to Remote Process Audit Data
Event Code: WMSentRequestChangeProcessInstanceState
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedRequestChangeProcessInstanceState
Operation
Requesting Workflow Engine: Remote Process Operations Audit Data
Event Code: WMChangedProcessInstanceState
Target Workflow Engine: Change Process/Subprocess Instance State
Event Code: WMChangedProcessInstanceState
Response
Target Workflow Engine: Link to Remote Subprocess Audit Data
Event Code: WMSentChangedProcessInstanceState
Requesting Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedChangedProcessInstanceState
5.2.12
Process Instance
Completed
Specificatio WMAReturnCode WMNotifyProcessInstanceCompleted ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Notify the invoking workflow engine that the enactment of the given process instance has completed normally.
Parameters engine_identifier identifies the invoking workflow engine
process_id the id of the process instance that has completed
Return Values Success | Failure
Rationale In circumstances where the invoking process instance hangs, waiting for the enacted sub-process to complete, the workflow engine enacting the sub-process must have a means of communicating the completion to the invoking engine.
Notification Message Format
Field Value ProcessInstanceCompleted ProcessID The PID of the Process Instance on the source workflow engine that has completed ActivityID The AID of the current activity instance in the process instance at the time it completed RemotePID The PID of the parent process instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance completed. Timestamp Time enactment of the process instance completed DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to Process Instance Completed DomainID Domain ID for set of workflow engines interoperating within the current context Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the completion of a process instance being enacted on the notifying workflow engine on behalf of the target workflow engine.
Actual Event
Notifying Workflow Engine: Change Process/Subprocess Instance State Audit Data
Event Code: WMCompletedProcessInstance
Notification
Notifying Workflow Engine: Link to Remote Process Operations Audit Data
Event Code: WMSentCompletedProcessInstance
Target Workflow Engine: Link from Remote Subprocess Audit Data
Event Code: WMReceivedCompletedProcessInstance
Specificatio WMAObjectIDList WMRequestListProcessInstances ( n in engine_identifier WMAEngineID, in filter WMAFilter );
Description Return a list of the PIDs of process instances selected by the criteria given in the filter parameter.
Parameters engine_identifier identifies the invoking workflow engine
filter arbitrary criteria for the selection of process instances (e.g. PID, user, definition id, ...)
Return Values A list (which may be an empty list) of Process instance IDs
Rationale This operation is necessary to support the use of process management tools which operate in a multiple workflow engine environment. Such queries will be passed from one workflow engine to another until either the query can be answered or the closure of the set of known or possible workflow engines is completed. The rules for defining the set of possible workflow engines are not defined.
Request Message Format
Field Value List Process Instances Filter Filter identifying process instances to be reported onResponse Message Format
Field Value Message Number Message identifier assigned by the target workflow engine or by the transport mechanism Response to Get Process Instances Number of instances The number of process instances being reported on Process instance ID17 ID of a process instance satisfying filter criteria
Specificatio WMAReturnCode WMNotifyProcessInstanceStateChange ( n in engine_identifier WMAEngineID, in process_id WMAObjectID, in new_state WMAObjectState );
Description Notify another workflow engine of a state change in a (sub) process in which it has a registered interest.
Parameters engine identifier identifies the invoking workflow engine
process_id PID of the process instance that has undergone a state change
new State State the process instance has changed to
Return Values Success | Failure
Rationale In circumstances where the invoking process instance needs to be made aware of protracted inactivity of a sub-process instance enacted by another workflow engine, the workflow engine enacting the sub-process must have a means of communicating state changes (e.g. suspend or resume) to the invoking engine.
Notification Message Format
Field Value ProcessInstanceStateChange ProcessID The PID of the Process Instance on the source workflow engine ActivityID The AID of the current activity instance in the process instance at the time the state change occurred RemotePID The PID of the parent Process Instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance state has changed. Timestamp Time process instance underwent a state change State New state of process instance DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine SourceUserID User ID responsible for request (maybe null) SourceRoleID Role ID responsible for request (may be null) TargetUserID User ID responsible for process instance on target workflow engine (may be null) TargetRoleID Role ID responsible for process instance on target workflow engine (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to ProcessInstanceStateChanged DomainID Domain ID for set of workflow engines interoperating within the current context Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the completion of a process instance being enacted on the notifying workflow engine on behalf of the target workflow engine.
Actual Event
Notifying Workflow Engine: Change Process/Subprocess Instance State Audit Data
Event Code: WMChangedProcessInstanceState
Notification
Notifying Workflow Engine: Link to Remote Process Operations Audit Data
Event Code: WMSentChangedProcessInstanceState
Target Workflow Engine: Link from Remote Process Operations Audit Data
Event Code: WMReceivedChangedProcessInstanceState
Specificatio WMAReturnCode WMNotifyProcessAttributesChanged ( n in engine_identifier WMAEngineID, in process_id WMAObjectID, in attributes WMAAttributeList );
Description Sets the value(s) of process instance attributes (process relevant data) in a selected process definition.
Parameters engine_identifier identifies the target workflow engine
process_id the id of the process instance that owns the process relevant data being requested
attributes a list of attribute data structures giving for each attribute:
the name of the attribute
the type of the attribute
the length of the attribute
the value to which the attribute has been set
Return Values Success | Failure
Rationale This operation is provided so that a workflow engine enacting a sub-process can notify the workflow engine enacting the parent process instance that the values of particular elements of workflow relevant data has been changed. This facility allows for tracking of milestones in the management of workflows enacted in a multi-engined domain.
Notification Message Format
Field Value ProcessInstanceAttributesChanged ProcessID The PID of the process instance on the source workflow engine for which the attribute value has changed ActivityID The AID of the current activity instance in the process instance at the time the attribute value changed RemotePID The PID of the parent Process Instance on the target workflow engine RemoteAID The ID of the activity instance within the process instance on the remote workflow engine that is to be notified that the sub-process instance completed. Timestamp The time when the attribute value changed DomainID Domain ID for set of workflow engines interoperating within the current context Source Node ID Identifier for source workflow engine Name18 attribute identifier Type attribute type Length new attribute length Value new attribute value ... ... SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to ProcessInstanceAttributesChanged DomainID Domain ID for set of workflow engines interoperating within the current context Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data
The following audit data records would be created as a result of the notifying workflow engine having changed the value of a notifiable attribute.
Actual Event
Notifying Workflow Engine: Change Process Instance Attributes Audit Data
Event Code: WMAssignedProcessInstanceAttribute
Notification
Notifying Workflow Engine: Link to Remote Process Operations Audit Data
Event Code: WMSentChangedProcessInstanceAttribute
Target Workflow Engine: Link from Remote Process Operations Audit Data
Event Code: WMReceivedChangedProcessInstanceAttribute
Specificatio WMAReturnCode WMRelinquishProcessInstance ( n in engine_identifier WMAEngineID, in process_id WMAObjectID );
Description Notify another workflow engine that as far as this workflow engine is concerned, it may now release all memory containing data structures pertaining to the given process instance and/or not to send notification messages concerning the enactment of that process instance.
Parameters engine identifier identifies the target workflow engine
process_id PID of the sub-process instance in which this workflow engine
is no longer interested
Return Values Success | Failure
Rationale For certain dialogue structures it will be necessary that one workflow engine tells another that it is now safe to release all data structures it holds in memory relating to a given process instance and/or that it is no longer interested in receiving notification messages for that process instance.
There are two circumstances in which a WMRelinquishProcessInstance message is intended to be used. Workflow Engine B enacting a sub-process at the behest of Workflow Engine A will:
· send notification messages to the other workflow engine at appropriate points, e.g. on completion of the enactment of the enacted sub-process
· maintain the value of process instance attributes until it is told it may safely release them
The WMRelinquishProcessInstance operation is provided so that in the case of a chained model of interoperability in which Workflow Engine A initiates the enactment of a sub-process on Workflow Engine B but then takes no further interest in it, Workflow Engine B can be told not to send notification messages to Workflow Engine A and will then assume on completion of the enactment that it may safely release all associated data structures in memory.
The alternative use of the WMRelinquishProcessInstance operation is for nested sub-process models of interoperability in which Workflow Engine A initiates the enactment of a sub-process on Workflow Engine B and then waits for its completion in order to retrieve the value(s) of some process instance attribute(s). On receipt of notification that either the value of the designated process instance attribute(s) has changed or that the sub-process has reached completion, Workflow Engine A will
1. retrieve the value(s) of the attribute(s) from Workflow Engine A using WMRequestGetProcessInstanceAttributes
2. use WMRelinquishProcessInstance to tell Workflow Engine B it has no further interest in the sub-process.
Notification Message Format
Field Value Relinquish Process Instance ProcessID The PID of the Process Instance on the target workflow engine DomainID Identifier for the workflow domain within which the two workflow engines are interoperating SourceNodeID Identifier for source workflow engine SourceUserID User ID responsible for the process instance that caused the notification request (may be null) SourceRoleID Role ID responsible for the process instance that caused the notification request (may be null) TargetUserID User ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) TargetRoleID Role ID responsible for the process instance on the target workflow engine which caused the newly started process instance to be created (may be null) Message Routing Information Key values used to route the message to its correct destination
Response Message Format
Field Value Response to RelinquishProcessInstance Return Code Success | Failure DomainID Identifier for the workflow domain within which the two workflow engines are interoperating Target Node ID Identifier for target workflow engine Message Routing Information Key values used to route the message to its correct destination
Audit Data: Not specified.
6.
Implementation
Issues
>
6.1
Session Management and Message
Handling
For certain transport mechanisms e.g. MAPI, session and message handling is
dealt with by the transport layer. For other transport mechanisms, e.g. basic
Unix mail, it will be necessary to have some scheme which guarantees the
integrity of the dialogue between two co-operating workflow engines. The
following text is a proposal for such a mechanism.
It is assumed that in some way messages carrying requests for operations to be performed and responses to those requests are passed between two or more interoperating workflow engines. The base assumption is that for every message there is a response. Messages are passed between interoperating workflow engines during a session. There are two styles of interoperability that it is possible to effect. The first of these uses atomic transmission, where a dialogue between two workflow engines is achieved by swapping messages one for one i.e.
A makes a request of B
B replies telling A whether the request was successful or not
A makes a request of B
B replies telling A whether the request was successful or not
B makes a request of A
A replies telling B whether the request was successful or not
....
This style of dialogue is characteristic of interoperability between two workflow engines communicating synchronously. It may, where appropriate, also be employed between two workflow engines communicating asynchronously. The main constraint here is the requirement for an adequate response time.
An alternative approach that may be employed for conducting dialogues between workflow engines is best characterized as batched transmission. Workflow engines that communicate asynchronously (e.g. via electronic mail) may batch up groups of request messages and send them as a session[19] to the target workflow engine for processing. The target workflow engine would process each message in turn and return either a series of response messages, one for each message sent, or return a batch of response messages - again one for each message sent.
It is important to be clear about what happens if the receiving workflow engine fails to successfully carry out a requested operation. Because we cannot assume use of transactions and the ability to roll back a batch, the best that can be achieved is:
* processing of the batch of requests stops
* a message reporting the failed request is constructed and appended to the list of response messages for successful operation requests
* a message indicating operation not performed is constructed and added to the list of response messages for each request not yet performed
* a stop session message is appended to the list of response messages which is then returned to the initiating workflow engine.
It is desirable that the workflow designer manages the number of operation requests in a batch so that in such circumstances, the complexity of the task of repairing the state of the enacted workflow is not unduly complicated. This aside, the situation is not substantially different to when an operation request fails in an interoperability dialogue that uses atomic transmission.
Each session has a two part session identifier. The initiating workflow engine assigns a "source session id" and the target workflow engine (the one that the initiating workflow engine wishes to start a session with) assigns a "target session id". If the source engine alone sets the session id, then there is the possibility (albeit remote) that a target workflow engine working to multiple source engines could receive the same session id from more than one source. Similarly, if the target engine alone sets the session id, then a source workflow engine, working to multiple targets, could receive back the same session id from more than one engine. To overcome this problem, a truly unique session id can be achieved by having both engines provide a session id component that is to each, unique. The combined source/target pairing of session ids is then guaranteed to be unique for both engines. Session ids would be handled in some concrete data structure represented in the specifications given in Section 5 above by the abstract data type WMAEngineID.
Messages within a session are uniquely numbered. One way of doing this is to treat the enactment of a sub-process as the sole subject of a session and to increment message numbers through the life of the sub-process instance. The rationale behind this is that it is necessary to protect against messages being lost or delivered out of sequence. The receiving workflow engine must be able to identify:
* messages it has received and acted on
* messages received but because they are out of sequence, they are not yet eligible for processing
* messages that have not been received (e.g. if only messages 1, 2 and 5 have been received it is
possible to deduce that messages 3 and 4 are missing).
The semantic of the message number is either "Message n I have sent to engine X during session S" or "Message n I have received from engine X during session S". To allow each engine to distinguish messages it has sent and messages it has received, both engines will number messages they send to the other engine in increments of 2, starting from zero. Responses to request/notification messages are numbered by adding 1 to the request/notification message number.
To avoid the possibility that within a session two request/notification messages could have the same number[20], each engine is required to establish a session with the other (one for incoming requests and one for outgoing requests).
Using the above concepts it is possible to guarantee:
1. that in an environment where there may be many workflow engines conducting interoperability sessions with each other, every session is uniquely identifiable
2. that within such an environment every message is uniquely identifiable.
6.2
Security
Considerations
>
It is assumed that the implementation of security policies for the
administration of interoperating workflow engines is outside the scope of this
standard. Rather, this is seen as a matter for the workflow designer and the
organization(s) which owns/operates the workflow domains.
6.3
Bindings
Vendors will need to implement bindings to their workflow engines that
correspond to this specification. Specifications of concrete bindings will be
published separately from this standard and corresponding implementations must
conform to these bindings..
7.
Evaluation
Criteria
7.1
Conformance
Statements
In order that a user of workflow products may evaluate which workflow products
are capable of interoperation with which other workflow products (workflow
engine to workflow engine) and that they may have a basis for assessing the
level of interoperability achievable between two particular workflow products,
the following scheme is presented.
To enable a purchaser to match compatible workflow products from different vendors, each vendor should publish the interoperability capabilities of their product giving clear indication of:
1. the transport mechanism(s) it uses to effect interoperability with other workflow engines
2. the style(s) of interoperability dialogue it can support (batched, atomic or both)
3. the mode(s) of interoperability dialogue it employs (half-duplex or full duplex)
7.2.
Capabilities
The main factor affecting the ability of two workflow engines to interoperate
will be the capability enshrined in each of them to respond to messages they
receive and to initiate requests and pass data as part of an interoperability
dialogue. The objective is to be able to distinguish between workflow engines
that:
· are entirely passive partners in an interoperability, only capable of receiving instructions to create and initiate the enactment of new process instances and acting on them
· are capable of passing/receiving workflow relevant data as well as receiving instructions to create and initiate the enactment of new process instances and acting on them
· are capable of asking for workflow relevant data as well as receiving instructions to create and initiate the enactment of new process instances and acting on them
The vendor of a workflow product should produce a capability matrix that, for each operation defined in section 5 of this document, shows whether their workflow engine can initiate the message associated with that operation and whether it can respond to it. e.g.
Operation Initiate Respond WMRequestCreateProcessInstance Yes Yes WMRequestGetProcessInstanceState Yes Yes WMRequestSetProcessInstanceAttributes Yes Yes WMRequestGetProcessInstanceAttributes No No WMRequestStartProcessInstance Yes Yes WMRequestAbortProcessInstance Yes Yes WMRequestTerminateProcessInstance Yes No WMRequestChangeProcessInstanceState21 Yes Yes WMRequestListProcessInstances No No WMNotifyProcessInstanceStarted Yes No WMNotifyProcessInstanceAborted Yes No WMNotifyProcessInstanceCompleted Yes No WMNotifyProcessInstanceTerminated No No WMNotifyProcessInstanceAttributeValueCh No No anged WMNotifyProcessInstanceStateChange No No WMRelinquishProcessInstance No No
A number of dialogue structures, based on the style of capability matrix defined above will be defined by the Workflow Management Coalition for evaluating the conformance of individual workflow engines to particular bindings. These capability profiles can be used to determine how two workflow engines that use the same transport can be used together.
To assess whether two workflow engines are capable of interoperating users should compare their capability matrices. To be capable of effecting the interoperability dialogue given in table 4.1 above, the two workflow engines would need to have capability matrices that include:
Workflow Engine A Workflow Engine B Operation Initiate Respond Initiate Respond WMRequestCreateProcessInsta Yes Yes nce WMRequestSetProcessInstance Yes Yes Attributes WMRequestGetProcessInstance Yes Yes Attributes WMRequestStartProcessInstan Yes Yes ce WMRelinquishProcessInstance Yes Yes
and to effect the interoperability dialogue given in 4.2 above, the two workflow engines would need to have capability matrices that include:
Workflow Engine Workflow Engine A B Operation Initiate Respond Initiate Respond WMRequestCreateProcessInstance Yes Yes WMRequestSetProcessInstanceAttri Yes Yes butes WMRequestGetProcessInstanceAttri Yes Yes Yes Yes butes WMRequestStartProcessInstance Yes Yes WMNotifyProcessInstanceAttribute Yes Yes ValueChanged WMRelinquishProcessInstance Yes Yes
These tables are examples of the proposed capability profiles that are the
subject of ongoing work by the Workflow Management Coalition and will be
published in due course.
8.
References
>
[ICL95] ICL/LOGICON/DL-003 Workflow Standards Interoperability Approaches (2.0)
[OMG93] OMG 93.12.43 The Common Object Request Broker: Architecture and Specification (1.2)
[WfMC000] Workflow Management Coalition Glossary
[WfMC1003] WFMC TC00 - 1003 The Workflow Reference Model
[WfMC006] WFMC TC01 - 1006 Interoperability White Paper
[WfMC0020] WFMC TC-0020 Workflow Management Coalition
Interface 1: Process Definition Interchange
[WfMC1009] WFMC-TC-1009 Workflow Management Coalition Interface 2 Application
Programming Interface (WAPI) Specification
[WfMC1013] WFMC-TC-1013 Workflow Application Programmer's (WAPI) Interface 2
Naming Conventions
[WfMC0013] WFMC-TC10-0013 Workflow Management Application Programming Interface (WAPI) Interface 3
[WfMC015] WFMC TC-1015 Workflow Management Coalition
Interface 5 Audit Data Specification
[Tucker 95] Tucker M., Baldwin C., Chase H. and MacDougall L.,
WfMC Compliance Paper, National Life of Vermont,
May 1995.