工作流管理应用编程接口(接口2&3)规范
4Broad 译
1.目的
本文详细说明了标准工作流管理应用编程接口(API),该接口可被WFM产品支持。这些API为不同产品的WFM引擘提供了一致的访问WFM功能的方法。该API集合被命名为工作流应用编程接口(WAPI)。
本文定义了工作流管理联盟的API规范,用于构建支持工作流的应用程序(见工作流参考模型中的接口1、2、3)。
本文与下列文档直接相关:
工作流管理联盟术语表
工作流管理联盟接口2 WAPI命名约定
这三篇文档构成了完整的规范。
2.读者
本文的读者包括工作流行业的所有参与者,如有任何建议请发给工作流管理联盟。
3.概述
在WFM产品中,支持这些接口,有利于实现需要访问WFM工作流引擘功能(工作流服务)的前端应用程序。此类应用程序的实现,可由WFM开发人员或ISVs(独立软件开发商)完成。实现这些API调用,还有利于工作流应用程序,使用该通用的API接口,操作不同的工作流引擘。
这些API调用,允许WFM开发人员使用一个单一的、最终的用户接口和功能集合,而不用考虑已有的各种工作流产品。WAPI调用可用各种语言实现。最初的工作流管理联盟规范将适用于C语言。该API采用调用(CALL)的形式进行操作。在特定的WFM产品中,对调用的底层实现不做任何假设。WAPI调用用于运行时,换句话说,是当进程正在执行或将要执行时。它们通常被用于工作流应用程序(如工作表处理器和协同操作的应用程序等),在API函数的上下文内,当某一WFM引擘需要与其它WFM产品的工作流引擘交互时,它们也可用于WFM引擘。
通过其函数集合,WAPI提供了一组由工作流发布服务(Workflow Enactment Service)提供的工作流服务。WAPI不假设任何特定的用户接口,更确切地说,它特别地假定了支持工作流的应用程序的用户接口。该应用程序使用这些服务,提供其自已的用户接口。仅只是该应用程序本身,依赖于实现它的应用程序开发环境工具。
WFM引擘的功能大致分为以下几类:
WAPI 连接功能
WAPI 工作流定义功能
WAPI 过程控制功能
WAPI 活动控制功能
WAPI 过程状态功能
WAPI 活动状态功能
WAPI 工作表功能
WAPI 管理功能
3.1应用程序接口定义
引入工作流管理系统总是意味着,至少必须集成已有的IT环境,或者更进一步地“支持工作流”。此外,对于已安装的软件系统,该接口提供某种程度保护。
对于调用应用程序的WfMC接口,没有定义直接控制应用程序的机制。现今,客户和供应商必须面对几种不同的操作系统和应用程序通讯机制。因此,工作流管理系统需要一个接口,用于特定的应用程序驱动器。伴随这些用于调用和控制应用程序的驱动器的定义,工作流管理联盟提供了一个接口,在工作流产品和任何其它软件系统之间,提供了一个标准化的协议。
当前,各种工作流管理工具支持特定的机制,集成应用程序并交换信息。然而,所有这些机制大多被独立地实现,并用于特定客户的需求。系统集成公司和第三方供应商必须重复实现这些机制,如果他们打算在同一地点使用其它的工作流管理工具的话。因此,他们支持生成此类接口的兴趣的确很高,因为这将确实改善他们的日常工作。“支持工作流”的通用应用程序看起来可能非常简单,但是,工作流环境典型地包括一系列各不相同的专门化的应用程序,它们运行于异构环境中。
市场需要工作流管理系统和集成平台,并且需要一般化的、标准化的应用程序接口。
3.1.1目的&背景
“调用应用程序接口”定义了工作流管理系统与任何其它的应用程序的接口机制,不过,它有别于其它工作流管理联盟的接口定义。调用应用程序虽然不是工作流特有的功能,但是,如果没有这项功能的话,工作流系统将是没有意义的。
因此,该接口是针对工作流系统供应商以及任何第三方软件供应商的。基于不同的通讯技术,所谓的“工具代理”能够控制应用程序和信息交换。这些工具代理至少代表一种特定的调用技术。举例来说,某一工具代理支持DDE命令,而其它的工具代理可能基于象OLE或CORBA之类的协议进行通讯,或采用任何其它的概念。
工具代理和相应的应用程序的交互技术,取决于底层的体系结构,并依赖于应用程序特有的接口,该接口必须在工具代理本身的控制下进行管理。建议的接口定义了工作流应用程序,如工作表处理器或工作流引擘等,使用工具代理的方式。最后,工具代理的目的可与标准化软件组件的目的进行比较。
3.2设计理念
存在许多设计假设和约束条件,为本规范的定义,提供了框架或理念。
3.3设计假设
渐增的功能集合. 假定随着WFM技术的发展,同样,在本文中定义的规范也会发展,并将增加到本文档的后续版本中。
字符串缓冲区大小按字节进行分配。假定字符串以零结尾。
工作流引擘可能存在安全性约束,对于某些API调用,这可能导致返回错误给用户。
所有的供应商必须支持特定的更改状态的调用。一般状态更改被保留,用于供应商特定的状态。在将来,期望演化成公共的状态集合。
在某一管理域内,每个过程定义必须有唯一的ID。
在某一管理域内,每个过程实例必须有唯一的ID。
在某一过程实例内,每个活动实例必须有唯一的ID。
在某一过程实例内,每个工作项必须有唯一的ID。
对于工作流引擘而言,过程实例ID是独一无二的,并且可从工作流引擘获得。由工作流引擘确保,过程实例ID在该工作流引擘内的唯一性。
3.4设计目标
易于实现. 对于广大供应商而言,API规范必须容易实现。这还意味着,该规范能被许多供应商在较短的时间内实现。
3.5已定义的术语和缩略语
在本文中所使用的术语被定义在“WFM联盟术语表”中。
3.6参考文档
如下文档与本文档有关,可作为参考:
WFM联盟参考模型
WFM联盟术语表
WFM联盟WAPI命名约定
3.7一致性
供应商不能声明其产品与本规范或WfMC的其它规范一致,除非WfMC已明确地进行授权。WfMC 依照其定义的一致性要求和可适用的测试规程,并基于对已发布规范的特定供应商的实现的验证,批准该许可证。
3.8 WAPI命名约定
工作组已提出一套标准,用于处理工作流API的不同实现的命名约定。这些命名约定的标准在文档“工作流管理联盟接口2 WAPI命名约定”(文档编号WFMC-TC-1013)进行了描述。
4. WAPI 数据类型
本节描述了WAPI数据类型。在WAPI调用中,这些数据类型被用作输入和输出参数。
4.1基本WAPI数据类型
本节包含基本的工作流管理类型的定义,这些类型与具体的操作系统或平台无关。
typedef char WMTInt8;
typedef short WMTInt16;
typedef long WMTInt32;
typedef unsigned char WMTUInt8;
typedef unsigned short WMTUInt16;
typedef unsigned long WMTUInt32;
typedef WMTInt8 WMTText;
typedef WMTText *WMTPText;
typedef WMTInt8 *WMTPInt8;
typedef WMTInt16 *WMTPInt16;
typedef WMTInt32 *WMTPInt32;
typedef WMTInt8 WMTBoolean;
typedef WMTUInt8 *WMTPointer;
typedef WMTText *WMTPPrivate;
#define WMNULL ((WMTPointer)0)
#define WMFalse 0
#define WMTrue (!WMFalse)
4.2其它WAPI数据类型
本节包含的工作流管理类型的定义是本规范中定义的结构和对象所特有的。
在本规范中,假定字符串以零结尾。用于名字、关键字和标识符的字符串的最大长度为63个字符,在主机中表示为64字节的文本数组。由下面的宏定义指定:
#define NAME_STRING_SIZE 64
在本规范中,所有的字符串被定义为文本数组,例如:
WMTText user_identification[NAME_STRING_SIZE];
在上面的例子中,字符串实际上最多只能包含63个字符。
在其它例子中,通过如下的宏定义,还定义了的固定大小的结构,用于数据引用和唯一性标识符(ID):
#define UNIQUE_ID_SIZE 64
所有WAPI函数调用都有统一的错误返回数据类型:
typedef struct
{
WMTInt16 main_code;
WMTInt16 sub_code;
} WMTErrRetType;
所有的API调用都共享该数据类型。所有其它的数据类型在描述每一个调用的时侯再进行说明。
该错误返回数据类型是一个Int32字,包含两个Int16元素用于错误返回。main_code元素包含主错误返回码,而sub_code元素包含更进一步指示错误特征的返回码。例如,main_code错误码WM_INVALID_PROCESS_INSTANCE(见下面的错误返回码),在它的sub_code编码集合中,包含为什么过程实例非法的更加详细的的原因。
本规范假定,工作流管理联盟将指定main_code编码子集,为提供错误码的可扩展性和特殊化,保留的main_code编码和sub_code编码集合留给特定的供应商实现。
typedef struct
{
WMTText user_identification[NAME_STRING_SIZE];
// 工作流参与者的标识符,工作流应用程序将代表他的利益进行操作。所指定的值可能代表人和设备等。该标识符通常用于安全检查和计账等。
WMTText password[NAME_STRING_SIZE];
WMTText engine_name[NAME_STRING_SIZE];
// 工作流引擘的标识符,后续的调用将被定位到该工作流引擘。在正常情况下,对于某些工作流产品,该信息不是必须的,然而对于那些与多个工作流引擘交互的工作流应用程序,却是必须的。这是一个符号名,可通过查找工具进行解析。
WMTText scope[NAME_STRING_SIZE];
//应用程序作用域的标识符。如果作用域无关紧要,那么这个域为空,或被怱略。
}WMTConnectInfo;
typedef WMTConnectInfo *WMTPConnectInfo;
typedef struct
{
WMTUInt32 session_id; // 用于会话的本地唯一ID
WMTPPrivate pprivate; // 指向私有结构的指针,该结构包含供应商特有的信息。
}WMTSessionHandle;
typedef WMTSessionHandle *WMTPSessionHandle;
typedef struct
{
WMTInt32 filter_type; // 包括基本类型和SQL字符串
WMTInt32 filter_length; // 值的长度(按字节计)
WMTText attribute_name [NAME_STRING_SIZE]
WMTUInt32 comparison; // 为 <, >, =, !=, <=, <=之一
WMTPText filter_string;
}WMTFilter;
typedef WMTFilter *WMTPFilter;
// 前255个过滤器类型将被保留。这些类型将被用于对过程控制数据和过程相关数据进行过滤。为这些编码指定的值包含在“WFM联盟接口2 WAPI命名约定”规范中。
// 在本规范中,有两类过程滤。一类用于与属性值或在属性值之间进行比较。在这种情况下filter_string包含属性值,属性将与该值进行比较;另一类为一种更加通用的机制,在这里,filter_string代表一个完整的判据(典型地,为一完整的SQL判据)。如果filter_type为SQL字符串,filter_string将指向SQL子句,和SQL92标准语言规范中WHERE子句的句法一致。
typedef struct
{
WMTUInt32 query_handle;
}WMTQueryHandle;
typedef WMTQueryHandle *WMTPQueryHandle;
typedef struct
{
WMTText wf_participant[NAME_STRING_SIZE];
}WMTWflParticipant;
typedef WMTWflParticipant *WMTPWflParticipant;
typedef struct
{
WMTText proc_def_id[UNIQUE_ID_SIZE];
}WMTProcDefID;
typedef WMTProcDefID *WMTPProcDefID;
typedef struct
{
WMTText activity_id[NAME_STRING_SIZE];
}WMTActivityID;
typedef WMTActivityID *WMTPActivityID;
typedef struct
{
WMTText proc_def_state[NAME_STRING_SIZE];
} WMTProcDefState;
typedef WMTProcDefState *WMTPProcDefState; // 指向63字节字符串的指针
typedef struct
{
// 目前,这是最小的元素列表,将来的版本将为这一结构提供可扩展性。
WMTText process_name[NAME_STRING_SIZE];
WMTProcDefID proc_def_id;
WMTProcDefState state;
} WMTProcDef;
typedef WMTProcDef *WMTPProcDef;
typedef struct
{
WMTText proc_inst_id[UNIQUE_ID_SIZE];
}WMTProcInstID;
typedef WMTProcInstID *WMTPProcInstID;
typedef struct
{
WMTText proc_inst_state[NAME_STRING_SIZE];
} WMTProcInstState;
typedef WMTProcInstState *WMTPProcInstState; // 指向63字节字符串的指针
typedef struct
{
// 目前,这是最小的元素列表,将来的版本将为这一结构提供可扩展性。
WMTText process_name[NAME_STRING_SIZE];
WMTProcInstID proc_inst_id;
WMTProcDefID proc_def_id;
WMTProcInstState state;
WMTInt32 priority;
WMTWflParticipant proc_participants[20];
//最大为20个长度为63字符的参与者标识符
} WMTProcInst;
typedef WMTProcInst *WMTPProcInst;
typedef struct
{
WMTText activity_inst_id[UNIQUE_ID_SIZE];
}WMTActivityInstID;
typedef WMTActivityInstID *WMTPActivityInstID;
typedef struct
{
WMTText activity_inst_state[NAME_STRING_SIZE];
} WMTActivityInstState;
typedef WMTActivityInstState *WMTPActivityInstState;
typedef struct
{
// 目前,这是最小的元素列表,将来的版本将为这一结构提供可扩展性。
WMTText activity_name[NAME_STRING_SIZE];
WMTActivityInstID activity_inst_id;
WMTProcInstID proc_inst_id;
WMTActivityInstState state;
WMTInt32 priority;
WMTWflParticipant activity_participants[10];
//最大为10个长度为63字符的参与者标识符
} WMTActivityInst;
typedef WMTActivityInst *WMTPActivityInst;
typedef struct
{
WMTText work_item_id[UNIQUE_ID_SIZE];
}WMTWorkItemID;
typedef WMTWorkItemID *WMTPWorkItemID;
typedef struct
{
// 目前,这是最小的元素列表,将来的版本将为这一结构提供可扩展性。
WMTText workitem_name[NAME_STRING_SIZE];
WMTWorkItemID workitem_id;
WMTActivityInstID activity_inst_id;
WMTProcInstID proc_inst_id;
WMTInt32 priority;
WMTWflParticipant participant;
} WMTWorkItem;
typedef WMTWorkItem *WMTPWorkItem;
typedef struct
{
WMTText attribute_name[NAME_STRING_SIZE];
WMTInt32 attribute_type; // 属性的类型
WMTInt32 attribute_length; // 属性值的长度
WMTPText pattribute_value; // 指向属性值的指针
} WMTAttribute;
typedef WMTAttribute *WMTPAttribute;
typedef struct
{
WMTInt32 attribute_number;
WMTPAttribute pattribute;
WMTNextAttr *WMTAttributeList
} WMTAttributeList;
typedef WMTAttributeList *WMTPAttributeList;
4.3属性
对于工作流应用程序如何绑定所检索到的属性和值,本规范不做任何假定。如何绑定取决于特定的应用程序。API使用4个元素对属性进行管理:
WMTText attribute_name[NAME_STRING_SIZE];
WMTInt32 attribute_type; // 属性类型
WMTInt32 attribute_length; // 属性值的长度
WMTPText pattribute_value; // 指向属性值的指针
本规范中,所有涉及属性的API调用,将以上每个元素都作为单独的调用参数。
如下类型定义被用于属性名:
typedef WMTText WMTAttrName[NAME_STRING_SIZE];
typedef WMTAttrName *WMTPAttrName;
这些属性可视为是过程控制和过程相关数据的一种。过程实例、活动实例和工作项的某些属性可能为:优先级(priority)、状态(state)、启动时间(start_time)、描述(description)、实例名(instance_name)、工作流参与者(workflow_participant)等等。
5. WAPI错误返回码
本节描述了WAPI错误返回码的最小集合。这些错误码与上面所定义的WMTErrRetType数据类型的main_code元素相对应。这些编码的码值包含在“WFM联盟WAPI命名约定”中。
main_code错误返回码的最小集合为:
WM_SUCCESS
指示API调用成功完成。
WM_CONNECT_FAILED
指示WMConnect调用失败。
WM_INVALID_PROCESS_DEFINITION
指示作为参数传递给API调用的过程定义ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_ACTIVITY_NAME
指示作为参数传递给API调用的活动名称非法,或提供服务的工作流引擘无法识别。
WM_INVALID_PROCESS_INSTANCE
指示作为参数传递给API调用的过程实例ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_ACTIVITY_INSTANCE
指示作为参数传递给API调用的活动实例ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_WORKITEM
指示作为参数传递给API调用的工作项ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_ATTRIBUTE
指示作为参数传递给API调用的属性非法,或提供服务的工作流引擘无法识别。
WM_ATTRIBUTE_ASSIGNMENT_FAILED
指示工作流引擘无法完成所请求的属性赋值。
WM_INVALID_STATE
指示状态非法或提供服务的工作流引擘无法识别。
WM_TRANSITION_NOT_ALLOWED
指示所请求的状态迁移非法或提供服务的工作流引擘无法识别。
WM_INVALID_SESSION_HANDLE
指示作为参数传递给API调用的会话ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_QUERY_HANDLE
指示作为参数传递给API调用的查询句柄ID非法,或提供服务的工作流引擘无法识别。
WM_INVALID_SOURCE_USER
指示作为参数传递给API调用的参与者“源用户”非法,或提供服务的工作流引擘无法识别。
WM_INVALID_TARGET_USER
指示作为参数传递给API调用的参与者“目标用户”非法,或提供服务的工作流引擘无法识别。
WM_INVALID_FILTER
指示作为参数传递给API调用的过滤器结构或值非法,或提供服务的工作流引擘无法识别。
WM_LOCKED
被保留,用于提供服务的工作流引擘实现工作流实体(如过程定义、过程实例、活动、工作项等)“锁定”的情形,指示在请求访问实体那一刻,实体已被锁定了。
WM_NOT_LOCKED
被保留,用于提供服务的工作流引擘实现工作流实体(如过程定义、过程实例、活动、工作项等)的“锁定”的情形,指示在请求访问实体那一刻,实体未被锁定。
WM_NO_MORE_DATA
指示fetch查询调用已到达先前被返回的有效实体列表的末端。这个错误返回码被用于实现工作流实体列表的查询。指示匹配选择标准的列表中的所有实体都已被返回。
WM_INSUFFICIENT_BUFFER_SIZE
指示被传递给API调用的缓冲区的尺寸,不足以缓存将要接收到的数据。
WM_APPLICATION_BUSY
指示相应的应用程序当前正忙,无法返回工作进展状况。
WM_INVALID_APPLICATION
指示调用接口请求了无效的应用程序。
WM_INVALID_WORK_ITEM
指示调用接口引用了无效的工作项。
WM_APPLICATION_NOT_STARTED
指示被请求的应用程序启动未成功。
WM_APPLICATION_NOT_DEFINED
指示没有安装或没有配置应用程序。
WM_APPLICATION_NOT STOPPED
指示相应的应用程序未有序地终止。
6.WAPI描述
本节描述了WAPI调用。它们被分为以下几组:
WAPI连接函数
WAPI过程控制函数
WAPI活动控制函数
WAPI过程状态函数
WAPI活动状态函数
WAPI工作表函数
WAPI管理函数
WAPI应用程序调用函数
下面的WAPI调用规范包含了参数的规范,并具有数据传递方向的指示:
in 数据由执行调用的应用程序传递给API
out 数据由API传递给执行调用的应用程序。
请注意,在“C”语言接口中,被指定为out的参数要求将一个指针从执行调用的应用程序传递给API。尔后,API将在由指针所指向的空间中返回适当的数据。之所以提供这些in和out参数规范,是为了澄清这些参数在调用中的特殊用途。
6.1WAPI连接函数
有连接/无连接概述
工作流管理联盟的WMConnect/WMDisconnect API命令,将一组相关的工作按照使用这组命令的应用程序关联在一起。当发出调用时,WMConnect返回一句柄,其值将被用于其它工作流管理联盟的API调用。句柄的值是唯一的,用于将WMConnect/WMDisconnect调用对之间的API调用关联起来。WMConnect命令允许信息只需被提供一次,并且一直有效,直到WMDisconnect出现为止。
在WMConnect期间提供的信息包含标识符信息,该标识符信息与谁/什么正在从WFM引擘请求服务相关联,并被用于鉴权服务。会话句柄的构造,由WMConnect调用返回,是指向一个结构的指针,该结构包含会话ID和其它包含供应商特定信息的结构的指针。(见WMConnect调用中会话句柄的结构。)
对于那些建立连接的工作流服务器,工作流引擘将返回会话ID和指向供应商特定信息指针。对于那些未建立连接的工作流服务器,会话ID将被设置为0,且指向由用户传入的连接信息的指针将被存储在私有结构中,该私有结构包含在会话句柄结构中。
API和工作流引擘之间的操作
工作流管理联盟API调用的构造,试图对WFM产品如何支持这些API调用的操作结构造成较小的影响。为应付跨越API边界的情况,API调用被设计成协议中立的,可采用不同的机制将请求传递给WFM引擘。对于特定的工作流产品,API调用和WFM引擘功能的交互方法可能为RPC、对话、消息传递(无连接)或其它。
如果WFM产品采用消息传递机制,收到WMConnect命令时,可能需要确定何种消息队列将被用于API实现与WFM引擘功能之间的交互,并建立控制信息,将该队列与使用特定句柄的后续API调用链接起来。如果WFM引擘不在本地(远程的),还可以发送预先设置的消息类型给工作流引擘。
如果WFM产品采用会话机制,且WFM引擘是远程的,收到WMConnect命令时,可能导致在支持API调用的代码和WFM引擘之间建立通讯会话。
如果使用数据库,WMConnect命令的结果之一,可能是与适当数据存储设备建立连接。
特定的WFM产品可能会选择接受WMConnect命令,返回一个句柄,但怱略该句柄的存在。
上面的例子给出了不同WFM产品在支持WMConnect命令时可能执行的操作。很显然,实际情形可能不止这些。
在某些情况下,可能要求工作流产品将一个工作站连接到多个WFM引擘。也可能存在这样的情形,多个WMConnect命令并发激活,且后续的命令需要被定向到正确的WFM引擘。WMConnect命令可被用于指定特定的引擘。从WMConnect命令返回的句柄可被用于后续的API调用,用于把与某一引擘相关的API调用关联起来。
WMDisconnect命令的结果可能多种多样,同WMConnect一样,取决于特定的WFM产品实现。其目的是指示发起前述API调用的应用程序将不再使用先前的上下文访问WFM引擘。在某些工作流产品中,在收到WMDisconnect命令时,通讯和其它的资源类型将被释放。
当使用API调用时应用程序的操作
应用程序的操作结构,如同它与工作流管理联盟API调用的使用相关联一样,受到API调用构造方式的影响。目前,工作流管理联盟API调用的构造,将导致发起API调用的应用程序代码片断运行于阻塞模式。更确切地说,应用程序发出API命令,并将“等待”接受该命令的WFM引擘的响应。当发起API调用时,应用程序代码片断将控制权移交给API,直到API命令被满足时,才重新获得控制权。
在大多数情况下,API命令由工作流参与者通过应用程序的终端用户接口(EUI)发出。目前,大部分API命令都不是这样的命令,即,工作流参与者有兴趣使用它发起请求,做一些其它事情,然后,在稍后的某个时间里(通过过程/队列/其它任何可用的工具)观察该请求的实际响应结果。伴随API集合所支持的请求类型,通常存在这样一种情形,工作流参与者期望能够尽快地看到针对其请求的响应。
也可能以这样一种方式构建API调用,允许应用程序代码以无阻塞的模式发起API调用。更确切地说,使API调用“立即返回”,而不是等待请求行动的实际响应。如果这样做,工作流管理联盟需要定义附加的功能,支持操作的无连接模式(当异步响应消息到达时,以某种方式取得异步响应消息,并发送给工作流参与者)。
WMConnect/WMDisconnect API命令自身不必做任何事情,如同它们现在所定义的一样,具备使应用程序运用有连接或无连接的能力。
同步与异步调用
在WAPI调用集合中,大部分API调用是同步调用。特别地,所有与查询相关的API调用是同步的。其它调用可能有一些异步的行为,在这种情况下,调用自身将同步返回给调用者程序,允许应用程序继续执行,但调用所指定的工作由工作流引擘在稍后的时间里执行。此类API调用集合不包含任何对异步调用进行同步的“调用后”机制。
6.1.1WMConnect
名字
WMConnect-连接到WFM引擘,以便完成一系列的交互。
描述
WMConnect通知WFM引擘,其它命令将从这一点开始。
WMTErrRetType WMConnect (
in WMTPConnectInfo pconnect_info,
out WMTPSessionHandle psession_handle)
参数 描述
pconnect_info 指向结构的指针,该结构包含创建连接所必须信息。
psession_handle 指向结构的指针,该结构包含在所有后续API调用中可以被传递给WFM引擘的信息,它将标识在WMConnect/WMDisconnect界限内的交互,它还定义了工作流参与者与工作流引擘的会话交互。这些句柄是不透明的,以便在无连接的环境中,句柄可以包含工作流参与者标识符和口令,而不是会话标识符。句柄使用一个特殊的值,指示功能故障。
错误返回值
WM_SUCCESS
WM_CONNECT_FAILED
6.1.2 WMDisconnect
名字
WMDisconnect-在一系列交互后,断开与WFM引擘的连接。
描述
WMDisconnect命令通知WFM引擘,从当前调用点开始,将不再使用该命名句柄发起API调用。WFM引擘将丢弃所持有的状态数据或执行其它的关闭动作。
WMTErrRetType WMDisconnect (
in WMTPSessionHandle psession_handle)
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
6.2 WAPI过程控制函数
过程控制函数被定义为那些更改一个或多个过程实例的操作状态的函数。这些API调用由WFM最终的用户应用程序使用。不过,有些API调用,或有些API调用内的参数,可能影响多个用户,通常这些调用被限制为只能由过程管理者使用。
6.2.1 WMOpenProcessDefinitionsList
名称
WMOpenProcessDefinitionsList-指定并打开查询,生成符合过滤器选择标准的所有过程定义的列表。
描述
同样,该命令由经理或过程管理人员使用,用于获取过程定义的列表,以便他们浏览哪些过程可由特定的人员启动。该命令指示WFM引擘打开查询,提供特定工作流参与者可以访问的过程定义的列表,其中的一些可由工作流参与者启动。假定在一个组织内,不是所有的过程都可以被所有的工作流参与者启动。该API的用法之一是允许工作流参与者浏览他/她能够启动哪些过程,并设想工作流参与者采取的下一步行动是选取一个过程定义,并且启动它。
该命令将返回查询句柄,代表匹配指定属性值的过程定义的列表。可选地,命令还将返回可获得的过程定义的总数。如果要求进行计数,但实现不支持该功能的话,则命令返回时,pcount的值为-1。如果pproc_def_filter为空,那么该函数,结合相应的提取调用,将返回所有过程定义的列表。
(注意:根据上述过程控制函数的定义,该API并没有改变过程或活动实例的状态。之所以将该命令包含在这一节中,是因为该命令通常会导致其它引起操作状态更改的API调用的执行。)
WMTErrRetType WMOpenProcessDefinitionsList (
in WMTPSessionHandle psession_handle,
in WMTPFilter pproc_def_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名 描述
psession_handle 指向结构的指针,该结构包含与本次行动有关的上下文信息。
pproc_def_filter 与过程定义有关的过滤器。
count_flag 布尔值标记,指示是否返回过程定义的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 符合过滤器条件的过程定义的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_FILTER
必要条件
关于过程模型的类型,不做任何要求。
关于在WFM引擘内是如何确定工作流参与者的,不做任何要求。
API基本原理
该命令和相应的提取(fetch)调用允许工作流参与者检索过程定义标识符,工作流参与者已被授权启动该过程。结合WMCreateProcessInstance和WMStartProcess API调用,它们可被用于启动一个特别指定的过程。
6.2.2 WMFetchProcessDefinition
名称
WMFetchProcessDefinition-从过程定义集合中,返回下一个过程定义,该过程定义集合符合在WMOpenProcessDefinitionsList调用中所描述的选择标准。
描述
该命令指示WFM引擘,从过程定义列表中提取一个过程定义,该过程定义列表对于特定的工作流参与者是可访问的。该列表中的某些过程定义可由该工作流参与者启动。假定在一个组织内,不是所有的过程都可以被所有的工作流参与者启动。该API的用法之一是允许工作流参与者浏览他/她能够启动哪些过程,并设想工作流参与者采取的下一步行动是选取一个过程定义,并且启动它。在每次调用后,该提取(fetch)函数,以及本API中的其它提取函数,将返回后续项,一次一个。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。过程定义项被返回的顺序与服务于该调用的工作流引擘有关,不应对过程定义项的返回顺序做任何假设。
WMTErrRetType WMFetchProcessDefinition (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPProcDef pproc_def_buf_ptr)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessDefinitionsList查询命令返回。
pproc_def_buf_ptr 指向缓冲区的指针,该缓冲区由客户应用程序提供,过程定义结构将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.2.3WMCloseProcessDefinitionsList
名称
WMCloseProcessDefinitionsList-关闭过程定义查询。
描述
WMTErrRetType WMCloseProcessDefinitionsList(
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessDefinitionsList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.2.4 WMOpenProcessDefinitionStatesList
名称
WMOpenProcessDefinitionStatesList-指定并打开查询,生成符合过滤器选择标准的过程定义状态的列表。
描述
该命令将返回查询句柄,代表过程定义状态的列表。可选地,命令还将返回可获得的状态的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。
为了将过程定义状态的列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以得到符合过滤器标准的过程定义的状态。例如,过程定义的状态可以是disabled(这样,暂时不允许新的过程定义的创建),或为enabled(这样,可再次允许基于指定的过程定义创建新的过程定义)。如果pproc_def_state_filter为NULL,那么该函数,结合相应的提取(fetch)调用,可返回过程定义的所有可获得状态的列表。
WMTErrRetType WMOpenProcessDefinitionStatesList (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPFilter pproc_def_state_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTUInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含唯一的过程定义ID。
pproc_def_state_filter 与过程定义状态相关的过滤器。
count_flag 布尔值标记,指示是否应返回过程定义状态的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 用于该过程定义的状态总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
6.2.5 WMFetchProcessDefinitionState
名称
WMFetchProcessDefinitionState-从符合过滤器标准的过程定义状态列表中,返回下一个过程定义状态。
描述
该命令返回过程定义状态。每次调用后,该提取函数将返回后续的过程定义状态。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchProcessDefinitionState (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPProcDefState pproc_def_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessDefinitionStatesList
查询命令返回。
pproc_def_state 指向缓冲区的指针,该缓冲区由客户应用程序提供,状态名将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.2.6 WMCloseProcessDefinitionStatesList
名称
WMCloseProcessDefinitionStatesList-关闭过程定义状态的查询。
描述
WMTErrRetType WMCloseProcessDefinitionStatesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessDefinitionStatesList
查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.2.7 WMChangeProcessDefinitionState
名称
WMChangeProcessDefinitionState-改变所指定的过程定义的状态。
描述
定义该命令,允许过程定义暂时被更改为特定的状态,例如,disabled(这样,暂时不允许新的过程定义的创建),或enabled(这样,可再次允许基于指定的过程定义创建新的过程定义)。
WMTErrRetType WMChangeProcessDefinitionState (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPProcDefState pproc_def_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含唯一的过程定义ID。
pproc_def_state 指向结构的指针,该结构包含状态名,将被用于更改过程定义的状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在某一管理域内,每个过程定义必须有唯一的ID。
API基本原理
该API允许过程管理者对一个正在运行的过程进行干预。这样做目的可能是,更改过程定义,且所有随后创建的过程定义将体现新的定义。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程定义状态
事件编码 WMChangedProcessDefinitionState
6.2.8 WMCreateProcessInstance
名称
WMCreateProcessInstance- 创建先前所定义的过程的一个实例。
描述
作为该命令的结果,工作流引擘创建一个指定过程定义的可操作的实例。尔后,对WMStartProcess的调用,将启动该过程。
为过程实例指配属性,需要多次调用WMAssignProcessInstanceAttribute。
直到调用WMStartProcess,该调用返回的过程实例ID才是有效的和可靠的。这时它可能被重新赋值为一个新值。
WMTErrRetType WMCreateProcessInstance (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPText pproc_inst_name,
out WMTPProcInstID pproc_inst_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含唯一的过程定义ID。
pproc_inst_name 指向名字的指针,该名字将被用于本次调用所创建的过程实例。
pproc_inst_id 指向结构的指针,包含本次调用所创建的过程实例的ID。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
必要条件
关于过程模型的类型,没做要求。
API基本原理
该API允许工作流参与者创建一个过程实例。预期供应商的实现可能至少有2种类型,第一种实现,过程实例的创建和启动是一个单一的功能,而另外一种实现,该功能是分开的。这样,为适应两种类型的实现,在本API定义中,该调用是分开的。提供单一功能的供应商,可通过使用WMCreateProcessInstance创建临时的(可能是本地的)proc_inst_id,为其指配属性,然后调用WMStartProcess来实现过程的创建和启动。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该信息。
审计数据类型 创建/启动过程实例
事件编码 WMCreatedProcessInstance
6.2.9 WMStartProcess
名称
WMStartProcess-启动指定的过程。
描述
WMStartProcess命令指示WFM引擘开始执行指定的过程,该过程的实例已经被创建。当通过WMStartProcess命令启动过程时,该过程的第一个活动将被启动。该调用所返回的过程实例的ID,将在过程实例的整个生命周期中有效。
注意:为了确定在后续的调用中需要连接到哪一个会话,程序员需要维护新的过程实例ID和会话的关联。
WMTErrRetType WMStartProcess (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
out WMTPProcInstID pnew_proc_inst_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含由WMCreateProcessInstance调用所返回的过程实例ID。
pnew_proc_inst_id 指向结构的指针,该结构包含由本次调用所创建的过程实例ID。该ID将在过程实例的生命周期内有效。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ATTRIBUTE
必要条件
在某一管理域内,被启动的过程实例有唯一的ID。
关于过程模型的类型,没做要求。
API基本原理
该API允许工作流参与者启动一个已创建的过程实例。预期供应商的实现可能至少有2种类型,第一种实现,过程实例的创建和启动是一个单一的功能,而另外一种实现,该功能是分开的。这样,为适应两种类型的实现,在本API定义中,该调用是分开的。提供单一功能的供应商,可通过使用WMCreateProcessInstance创建临时的(可能是本地的)proc_inst_id,为其指配属性,然后调用WMStartProcess来实现过程的创建和启动。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该信息。
审计数据类型 创建/启动过程实例
事件编码 WMStartedProcessInstance
6.2.10 WMTerminateProcessInstance
名称
WMTerminateProcessInstance-终止过程实例。
描述
该命令提供了体面地终止过程的能力,而不必异常中止(abort)该过程实例。从WMTerminateProcessInstance调用返回,并不意味着过程实例已终止,例如,只有在当前正在执行的活动完成时,过程实例才能停止。当前正在执行的活动的更精确的行为,与具体的系统实现有关。
WMTErrRetType WMTerminateProcessInstance (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构指示希望被终止的过程实例。
错误返回值
该函数的错误返回值包含下面一个或多个错误码(见错误返回码一节):
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
必要条件
无。
API基本原理
允许过程实例被终止。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作产品,将按照审计配置文件的要求,记录该信息。
审计数据类型 更改过程实例状态
事件编码 WMTerminatedProcessInstance
6.2.11 WMOpenProcessInstanceStatesList
名称
WMOpenProcessInstanceStatesList-指定并打开查询,生成所有符合过滤器选择标准的过程实例的状态列表。
描述
该命令将返回查询句柄,代表过程实例的状态列表。可选地,命令还将返回可获得状态的总数。如果要求进行计数,而实现不支持该功能话,则命令返回时,pcount的值为-1。状态的含义取决于特定WFM引擘的实现。例如,过程实例可以有诸如suspended或in-progress之类的状态。
为了将过程实例的状态列表,提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取符合过滤器标准的过程实例的状态。如果pproc_inst_state_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回过程实例的所有可获得状态的列表。
WMTErrRetType WMOpenProcessInstanceStatesList (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPFilter pproc_inst_state_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pproc_inst_state_filter 与过程实例状态相关的过滤器。
count_flag 布尔值标记,指示是否返回过程实例状态的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 该过程实例状态的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
6.2.12 WMFetchProcessInstanceState
名称
WMFetchProcessInstanceState-从符合过滤器标准的过程实例的状态列表中,返回下一个过程实例状态。
描述
该命令返回过程实例状态。每次调用后,该提取函数将返回后续的过程实例状态。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchProcessInstanceState (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPProcInstState pproc_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstanceStatesList查询命令返回。
pproc_inst_state 指向缓冲区的指针,该缓冲区由客户应用程序提供,状态名将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.2.13 WMCloseProcessInstanceStatesList
名称
WMCloseProcessInstanceStatesList-关闭过程实例状态的查询。
描述
WMTErrRetType WMCloseProcessInstanceStatesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstanceStatesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.2.14 WMChangeProcessInstanceState
名称
WMChangeProcessInstanceState-改变所指定的过程实例的状态。
描述
定义该命令,允许过程实例暂时被更改为诸如suspended之类的特定状态。
该命令的执行将导致所指定的单个过程实例迁移到新的状态。在这种情形下,所有状态的含义取决于特定WFM引擘的实现。该命令将过程实例的状态属性设置为诸如suspended或running之类的状态。
WMTErrRetType WMChangeProcessInstanceState (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPProcInstState pproc_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pproc_inst_state 指向结构的指针,该结构包含状态名,将被用于更改过程实例的状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在某一管理域内,每个过程实例必须有唯一的ID。
API基本原理
该API允许工作流参与者对一个正在运行的过程进行干预。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程实例状态
事件编码 WMChangedProcessInstanceState
6.2.15 WMOpenProcessInstanceAttributesList
名称
WMOpenProcessInstanceAttributesList-指定并打开查询,生成所有符合过滤器选择标准的过程实例的属性的列表。
描述
该命令将返回一查询句柄,代表过程实例的属性的列表。可选地,命令还将返回可获得属性的总数。如果要求进行计数,而实现不支持该功能话,则命令返回时,pcount的值为-1。状态的含义取决于特定WFM引擘的实现。例如,过程实例可以有诸如suspended或in-progress之类的状态。
为了将过程实例的属性列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取可以对其进行赋值的过程实例的属性。要想获取属性值,最好在提取调用中提供足够大小的缓冲区。还可以使用WMGetProcessInstanceAttributeValue调用检索单个属性的值。如果pproc_inst_attr_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回过程实例的所有可获得属性的列表。
WMTErrRetType WMOpenProcessInstanceAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPFilter pproc_inst_attr_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pproc_inst_attr_filter 与过程实例属性相关的过滤器。
count_flag 布尔值标记,指示是否返回过程实例属性的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 该过程实例属性的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
6.2.16 WMFetchProcessInstanceAttribute
名称
WMFetchProcessInstanceAttribute-从符合过滤器标准的过程实例的属性列表中,返回下一个过程实例属性。
描述
该命令返回过程实例属性。每次调用后,提取函数将返回后续的过程实例属性。提取函数将在由调用所指定的缓冲区中返回属性值。如果buffer_size为空,那么将不返回属性值。如果buffer_size太小,无法保存属性值,那么函数将依据缓冲区的大小,尽可能地返回属性值。属性值的正确长度可从attribute_length域中获取。应用程序可通过比较attribute_length和buffer_size来判断是否已返回完整的属性值。
WMTErrRetType WMFetchProcessInstanceAttribute (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstanceAttributesList
查询命令返回。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.2.17 WMCloseProcessInstanceAttributesList
名称
WMCloseProcessInstanceAttributesList-关闭过程实例属性的查询。
描述
WMTErrRetType WMCloseProcessInstanceAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstanceAttributesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.2.18 WMGetProcessInstanceAttributeValue
名称
WMGetProcessInstanceAttributeValue-返回过程实例属性的值、类型和长度,过程实例的属性由proc_inst_id和attribute_name参数指定。
描述
该命令将在由调用指定的缓冲区中返回过程实例属性的值。
WMTErrRetType WMGetProcessInstanceAttributeValue (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_ATTRIBUTE
WM_INSUFFICIENT_BUFFER_SIZE
6.2.19 WMAssignProcessInstanceAttribute
名称
WMAssignProcessInstanceAttribute-为过程实例属性赋值。
描述
该命令指示WFM引擘赋值属性,更改属性或更改过程实例属性的值。
该命令更改过程实例的属性的值。过程实例属性可归类为过程控制和过程相关数据。这些属性由四元组名字、类型、长度和值指定。
WMTErrRetType WMAssignProcessInstanceAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向包含过程实例ID的结构的指针,该过程实例ID指示属性将要被赋值的过程实例。
pattribute_name 指向属性名字的指针。
attribute_type 属性的类型。
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ATTRIBUTE
WM_ATTRIBUTE_ASSIGNMENT_FAILED
必要条件
无。
API基本原理
因为各种商业原因,相对于其它部分的工作,某些部分的工作需要基于特定的属性(如优先级)进行处理。该命令允许针对这部分的工作设置属性。在某些情况下,在过程执行期间,这些属性由WFM产品基于已有的数据值确定。通过使用该API设置这些属性,是为了满足应用程序基于客户请求设置这些属性的场合。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该信息。
审计数据类型 更改过程实例属性
事件编码 WMAssignProcessInstanceAttributes
6.3 WAPI活动控制函数
活动控制函数被定义为那些更改了一个或多个活动实例的操作状态的函数。这些API调用由WFM最终的用户使用。不过,有些API调用,或有些API调用内的参数,可能影响多个用户,并且通常这些调用被限制为只由过程管理者使用。
6.3.1 WMOpenActivityInstanceStatesList
名称
WMOpenActivityInstanceStatesList-指定并打开查询,生成所有符合过滤器选择标准的活动实例的状态列表。
描述
该命令将返回查询句柄,代表活动实例的状态列表。可选地,命令还将返回可获得状态的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。状态的含义取决于特定的WFM引擘的实现。例如,活动实例可以拥有诸如suspended或in-progress之类的状态。
为了将活动实例的状态列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取符合过滤器标准的活动实例的状态。如果pact_inst_state_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回活动实例的所有可获得状态的列表。
WMTErrRetType WMOpenActivityInstanceStatesList (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
in WMTPFilter pact_inst_state_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pactivity_inst_id 指向结构的指针,该结构包含唯一的活动实例ID。
pact_inst_state_filter 与活动实例状态相关的过滤器。
count_flag 布尔值标记,指示是否返回活动实例的状态的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 活动实例状态的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ACTIVITY_INSTANCE
6.3.2 WMFetchActivityInstanceState
名称
WMFetchActivityInstanceState-从符合过滤器标准的活动实例的状态列表中,返回下一个活动实例状态。
描述
该命令返回活动实例的状态。每次调用后,该提取函数将返回后续的活动实例状态。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchActivityInstanceState (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPActivityInstState pactivity_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstanceStatesList
查询命令返回。
pactivity_inst_state 指向缓冲区的指针,该缓冲区由客户应用程序提供,状态名将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.3.3 WMCloseActivityInstanceStatesList
名称
WMCloseActivityInstanceStatesList-关闭活动实例状态的查询。
描述
WMTErrRetType WMCloseActivityInstanceStatesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstanceStatesList
查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.3.4 WMChangeActivityInstanceState
名称
WMChangeActivityInstanceState-改变所指定的活动实例的状态。
描述
该命令指示工作流引擘,更改位于过程实例内的单个活动实例的状态。这允许更改一个活动实例的状态,而不影响过程实例内的其它活动实例。
例如,使用该命令将活动实例的状态更改为suspended。然后,还可以使用该命令将过程实例的状态重新更改为running。对于特定的实现,实现文档将提供该实现所支持的活动状态的名字和语义。
WMTErrRetType WMChangeActivityInstanceState (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
in WMTPActivityInstState pactivity_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pactivity_inst_id 指向结构的指针,该结构包含状态将被更改的活动的活动实例ID。
pactivity_inst_state 指向结构的指针,该结构包含状态名,将被用于更改活动实例的状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ACTIVITY_INSTANCE
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在管理域内,每个过程实例必须有唯一的ID。
在过程实例内,每个活动实例必须有唯一的ID。
API基本原理
工作流参与者可能希望更改与特定活动实例相关的状态属性。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改活动实例状态
事件编码 WMChangedActivityInstanceState
6.3.5 WMOpenActivityInstanceAttributesList
名称
WMOpenActivityInstanceAttributesList-指定并打开查询,生成所有符合过滤器选择标准的活动的属性列表。
描述
该命令将返回一查询句柄,代表活动实例的属性列表。可选地,命令还将返回可获得属性的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。
为了将活动实例属性的列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取可以对其进行赋值的活动实例的属性。要获取属性值,最好在提取调用中提供足够大小的缓冲区。还可以使用WMGetActivityInstanceAttributeValue调用检索单个属性的值。如果pact_inst_attr_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回活动实例的所有可获得的属性列表。
WMTErrRetType WMOpenActivityInstanceAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
in WMTPFilter pact_inst_attr_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pactivity_inst_id 指向结构的指针,该结构包含唯一的活动实例ID。
pact_inst_attr_filter 与活动实例属性相关的过滤器。
count_flag 布尔值标记,指示将被返回的活动实例的属性的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 该活动实例属性的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ACTIVITY_INSTANCE
6.3.6 WMFetchActivityInstanceAttribute
名称
WMFetchActivityInstanceAttribute-从符合过滤器标准的活动实例的属性列表中,返回下一个活动实例属性。
描述
该命令返回活动实例属性。在每次调用后,该提取函数将返回后续的活动实例属性。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。该提取函数将在调用中指定的缓冲区中返回属性值。如果buffer_size为空,那么将不返回属性值。如果buffer_size太小,无法保存属性值,那么函数将依据缓冲区的大小尽可能地返回属性值。属性值的正确长度可从attribute_length域中获取。应用程序可通过比较attribute_length和buffer_size来判断是否已返回完整的属性值。
WMTErrRetType WMFetchActivityInstanceAttribute (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstanceAttributesList查询命令返回。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.3.7 WMCloseActivityInstanceAttributesList
名称
WMCloseActivityInstanceAttributesList-关闭活动实例属性的查询。
描述
WMTErrRetType WMCloseActivityInstanceAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstanceAttributesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.3.8 WMGetActivityInstanceAttributeValue
名称
WMGetActivityInstanceAttributeValue-返回活动实例属性的值、类型和长度,活动实例的属性由proc_inst_id、pactivity_inst_id和attribute_name参数指定。
描述
该命令将在由调用指定的缓冲区中返回活动实例属性的值。
WMTErrRetType WMGetActivityInstanceAttributeValue (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
in WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pactivity_inst_id 指向结构的指针,该结构包含唯一的活动实例ID。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_ATTRIBUTE
WM_INSUFFICIENT_BUFFER_SIZE
6.3.9 WMAssignActivityInstanceAttribute
名称
WMAssignActivityInstanceAttribute-为活动实例的属性赋值。
描述
该命令指示WFM引擘赋值属性,更改属性或更改指定过程实例内活动实例的属性的值。
该命令更改活动实例的属性的值。活动实例属性可归类为过程控制和过程相关数据。这些属性由四元组名字、类型、长度和值指定。
WMTErrRetType WMAssignActivityInstanceAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向 结构的指针,该结构包含唯一的过程实例ID。
pactivity_inst_id 指向包含活动实例标识的结构的指针,该活动实例的属性将要被赋值。
pattribute_name 指向属性名字的指针。
attribute_type 属性的类型。
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ACTIVITY_INSTANCE
WM_INVALID_ATTRIBUTE
WM_ATTRIBUTE_ASSIGNMENT_FAILED
必要条件
无。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 赋值活动实例属性
事件编码 WMAssignedActivityInstanceAttributes
6.4 WAPI过程状态函数
过程状态函数用于提供已完成的工作、将要完成的工作、与工作流参与者或工作流参与者群组相关的工作等的视图。状态查询可由普通的工作流参与者发起,或由希望浏览他/她职责范围内工作进展的经理或过程管理者发起。
状态API调用被组织成这样一种形式,它们提供从全局工作到位于单个过程实例内的工作的视图。这些视图如下:
1 与一个过程定义相关的所有过程实例。 WM(Open+Fetch+Close)ProcessInstancesList
2 单个过程实例的视图 WMGetProcessInstance
此外,各种过滤器(参数)被提供给调用,以便对返回的信息进行剪裁。
与这些API调用有关的API函数将在本节描述。
6.4.1 WMOpenProcessInstancesList
名称
WMOpenProcessInstancesList-指定并打开查询,生成所有符合过滤器选择标准的过程实例的列表。
描述
该命令将返回查询句柄,代表匹配指定属性值的过程实例的列表。可选地,命令还将返回可获得的过程实例的总数。如果要求进行计数,但实现不支持该功能的话,则命令返回时,pcount的值为-1。
该命令被用于建立大量各种各样的过程实例的查询。例如,该命令将被用于建立已完成的(completed)或挂起的(suspended)过程实例的列表。如果pproc_inst_filter为空,那么该函数,结合相应的提取调用,将返回所有可访问过程实例的列表。
WMTErrRetType WMOpenProcessInstancesList (
in WMTPSessionHandle psession_handle,
in WMTPFilter pproc_inst_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名 描述
psession_handle 指向结构的指针,该结构包含与本次行动有关的上下文信息。
pproc_inst_filter 与过程实例有关的过滤器。
count_flag 布尔值标记,指示是否返回过程实例的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 符合过滤器条件的过程实例的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_FILTER
必要条件
无。
API基本原理
信息的请求者需要知道哪些特定类型的工作正在处理,或需要知道哪些工作已完成。
6.4.2 WMFetchProcessInstance
名称
WMFetchProcessInstance-从过程实例表中,返回下一个过程实例,该过程实例表符合WMOpenProcessInstancesList调用中所规定的选择标准。
描述
该命令返回一个过程实例。每次调用后,提取函数将返回后续的过程实例。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchProcessInstance (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPProcInst pproc_inst_buf_ptr)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstancesList查询命令返回。
pproc_inst_buf_ptr 指向缓冲区的指针,该缓冲区由客户应用程序提供,过程实例将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
必要条件
无。
6.4.3 WMCloseProcessInstancesList
名称
WMCloseProcessInstancesList-关闭过程实例查询。
描述
该令将关闭符合指定查询属性的过程实例的查询,查询属性在WMOpenProcessInstancesList命令中指定。查询句柄将不能再被使用。
WMTErrRetType WMCloseProcessInstancesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenProcessInstancesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.4.4 WMGetProcessInstance
名称
WMGetProcessInstance-返回指定的过程实例记录。
描述
WMGetProcessInstance提供了关于过程实例内哪些工作已经完成,哪些是当前正在进行的工作的信息。
WMTErrRetType WMGetProcessInstance (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
out WMTPProcInst pproc_inst)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向过程实例标识符的指针。
pproc_inst 指向结构的指针,该结构包含被请求的过程实例的信息,包括过程实例的状态和其它属性。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
必要条件
无。
6.5 WAPI活动状态函数
过程状态函数用于提供已完成的工作、将要完成的工作、与工作流参与者或工作流参与者群组相关的工作等的视图。状态查询可由普通的工作流参与者发起,或由希望浏览他/她职责范围内的工作进展的经理或过程管理者发起。
状态API调用被组织成这样一种形式,它们提供从全局工作到位于单个活动实例内工作的视图。这些视图如下:
1 与一个过程定义或实例相关的所有过程实例。 WM(Open+Fetch+Close)ActivityInstancesList
2 过程实例内单个活动的视图 WMGetActivityInstance
此外,各种过滤器(参数)被提供给调用,以便对返回的信息进行剪裁。
在本节描述与这些API调用相关的API函数。
6.5.1 WMOpenActivityInstancesList
名称
WMOpenActivityInstancesList-指定并打开查询,生成所有符合过滤器选择标准的活动实例的列表。
描述
该命令将返回查询句柄,代表符合过滤器标准的活动实例的列表。可选地,命令还将返回可获得的活动实例的总数。如果要求进行计数,但实现不支持该功能的话,则命令返回时,pcount的值为-1。
该命令将被用于建立大量各种各样的活动实例的查询。例如,该命令将被用于建立已完成的(completed)或挂起的(suspended)活动实例的列表。如果pactivity_inst_filter为空,那么该函数,结合相应提取调用,将返回所有可访问活动实例的列表。
WMTErrRetType WMOpenActivityInstancesList (
in WMTPSessionHandle psession_handle,
in WMTPFilter pactivity_inst_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名 描述
psession_handle 指向结构的指针,该结构包含与本次行动有关的上下文信息。
pactivity_inst_filter 与过程实例有关的过滤器。
count_flag 布尔值标记,指示是否返回活动实例的总数。
pquery_handle 指向结构的指针,该结构包含由该函数返回的唯一的查询信息。
pcount 符合过滤器条件的活动实例的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_FILTER
必要条件
无。
API基本原理
信息的请求者需要知道哪些特定类型的工作正在处理,或需要知道哪些工作已完成。
6.5.2 WMFetchActivityInstance
名称
WMFetchActivityInstance-从活动实例表中,返回下一个活动实例,该活动实例表符合WMOpenActivityInstancesList调用中所规定的选择标准。
描述
该命令返回活动实例。每次调用后,该提取函数将返回后续的活动实例。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchActivityInstance (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPActivityInst pactivity_inst)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstancesList查询命令返回。
pproc_inst_buf_ptr 指向缓冲区的指针,该缓冲区由客户应用程序提供,活动实例将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
必要条件
无。
6.5.3 WMCloseActivityInstancesList
名称
WMCloseActivityInstancesList-关闭活动实例查询。
描述
该令将关闭符合指定查询属性的活动实例的查询,查询属性在WMOpenActivityInstancesList命令中指定。查询句柄将不能再被使用。
WMTErrRetType WMCloseActivityInstancesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenActivityInstancesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
必要条件
无。
6.5.4 WMGetActivityInstance
名称
WMGetActivityInstance-返回指定的活动实例的记录。
描述
WMGetActivityInstance提供了关于过程实例内活动的状态。
WMTErrRetType WMGetActivityInstance (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPActivityInstID pactivity_inst_id,
out WMTPActivityInst pactivity_inst )
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向包含过程实例标识符的结构的指针。
pactivity_inst_id 指向包含活动实例标识符的结构的指针。
pactivity_inst 指向包含活动实例信息的结构的指针。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_ACTIVITY_INSTANCE
必要条件
无。
6.6 WAPI工作表函数
WAPI工作表API调用为工作流参与者提供了访问已被指配给他们的工作的信息。正如WFM联盟参考模型描述的那样,过程由一组相互连接的活动组成,并以这样的一种方式控制应用程序调用的顺序。一个活动与一个或多个将被调用的应用程序相关联,且在运行期间,还将与被指派完成这项工作的人相关联。在任一时刻,一个工作参与者可以被指派给一个或更多的工作片断,这取决于WFM产品的实现。被指派给工作流参与者的每一部分工作被称为“工作项(work item)”,且被指派给一个工作流参与者的所有工作项的集合,被称为工作流参与者的“工作表(worklist)”。
(注意:为澄清“活动”与“工作项”的不同,故包含了下面的讨论。当一个过程被定义时(构建时(build time)),活动是被用于定义将要完成的工作片断的构造。为了更进一步描述将要完成的工作,它起着锚点的作用(即,将被调用的应用程序的名字,可能是为完成某项工作所需技能的引用,指示网络地址的符号名,应用程序将在该地址上被执行等)。在运行期间(run time),当活动准备被执行且一个或多个侯选者被指派完成该工作时,一个工作项被创建,且被置于侯选者的工作表中。因此,即使活动和工作项都代表一个工作片断,但是他们在不同的时间点上出现,对于一个活动而言,可能存在多于一个的工作项,且某些操作特性可能不同。)
于是,工作表被定义为:由具体实现定义的针对工作项空间的查询的结果。它是工作项的列表,且工作项是工作表中的一项元素。
本节所列的API调用,用于工作项和工作表的操作。
6.6.1 WMOpenWorkList
名称
WMOpenWorkList-指定并打开查询,生成符合过滤器标准的工作表。
描述
该命令提供了返回工作项列表的能力,这些工作项已被指派给特定的工作流参与者或工作组。请求者可能代表他自已发出请求,或代表管理者发出请求,该管理者希望知道有哪些工作已被指派给特定的人或工作组。
一个查询句柄将被返回,代表匹配指定属性值的工作项的列表。可选地,命令还将返回可获得的工作项的总数。如果要求进行计数,但实现不支持该功能的话,则命令返回时,pcount的值为-1。如果pworklist_filter为空,那么该函数,结合相应提取调用,将返回所有可访问工作项的列表。
WMTErrRetType WMOpenWorkList (
in WMTPSessionHandle psession_handle,
in WMTPFilter pworklist_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名 描述
psession_handle 指向结构的指针,该结构包含与本次行动有关的上下文信息。
pworklist_filter 指向结构的指针,该结构包含本次请求所需的过滤器信息。
count_flag 布尔值标记,指示是否应返回工作项的总数。
pquery_handle 指向结构的指针,该结构包含由该函数返回的唯一的查询信息。
pcount 符合过滤器条件的工作项的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_FILTER
必要条件
无。
API基本原理
工作流的参与者必须有能力确定他已被指派了哪些工作。经理必须有能力确定本部门内谁承担了工作,还有哪些工作需要完成。
6.6.2 WMFetchWorkItem
名称
WMFetchWorkItem-从工作表中,返回下一个工作项,该工作表符合相应WMOpenWorkList调用中的选择标准。
描述
该命令返回工作项。每次调用后,该提取函数将返回后续的工作项。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchWorkItem (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPWorkItem pwork_item)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkList查询命令返回。
pwork_item 指向缓冲区的指针,该缓冲区由客户应用程序提供,工作项将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.6.3 WMCloseWorkList
名称
WMCloseWorkList-关闭工作项的查询。
描述
该令将关闭符合指定查询过滤器的工作项的查询,查询过滤器在WMOpenWorkList命令中指定。查询句柄将不能再被使用。
WMTErrRetType WMCloseWorkList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.6.4 WMGetWorkItem
名称
WMGetWorkItem-返回指定的工作项的记录。
描述
该命令允许工作流参与者指明他希望完成哪一部分工作。阅读器(viewer)可从工作项表中选取一工作项,该工作项表可通过WMOpenWorkList命令获取。
该命令基于单个的工作项进行操作。命令的执行并不意味着工作项已被预订或锁定。
WMTErrRetType WMGetWorkItem (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id,
out WMTPWorkItem pwork_item )
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向包含唯一的过程实例ID的结构的指针。
pwork_item_id 指向结构的指针,该结构包含用于本次请求工作项的标识符。
pwork_item 指向结构的指针,该结构包含由该函数返回的工作项。
错误返回值
该函数的错误返回值包含下面一个或多个错误码(见错误返回码一节):
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
必要条件
为选择期望的工作项,发出命令的应用程序必须有足够的标识符信息。
API基本原理
工作流参与者必须有能力通知WFM引擘,将选择哪一部分工作。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改工作项的状态
事件编码 WMSelectedWorkItem
在这种特殊的情形下,当WMGetWorkItem操作被调用时,将由工作流产品的实现执行工作项状态的改变。
6.6.5 WMCompleteWorkItem
名称
WMCompleteWorkItem-通知WFM引擘,该工作项已被完成。
描述
该命令允许工作流参与者通知WFM引擘,工作项已被完成。
为改变工作项的属性,可多次调用WMAssignWorkItemAttribute。
WMTErrRetType WMCompleteWorkItem (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向包含唯一的过程实例ID的结构的指针。
pwork_item_id 指向结构的指针,该结构包含用于本次请求工作项的标识符。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
必要条件
无。
API基本原理
WFM产品实现了各种各样的方式,用于判断活动什么时候完成。该API的使用涉及从仅仅成功/不成功的指示到将值置为完成状态,这可能导致WFM引擘从众多导航路径中选择下一条导航路径。
典型地,一个工作项与一个活动实例相对应。然而,API应允许一个活动有多个对应的工作项存在,每次执行一个。因此,一个工作项的完成并不一定意味着该活动实例的所有工作都已完成。一工作项的完成可能触发与该活动实例相关的下一工作项的启动。工作流引擘将基于过程定义确定下一工作项。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改工作项的状态
事件编码 WMCompleteWorkItem
6.6.6 WMOpenWorkitemStatesList
名称
WMOpenWorkitemStatesList-指定并打开查询,生成符合过滤器标准的工作项的状态列表。
描述
该命令将返回查询句柄,代表工作项的状态列表。可选地,命令还将返回可获得状态的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。
为了将工作项的状态列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取符合过滤器标准的工作项的状态。例如,工作项可以进入诸如disabled(这样,暂时不允许新的过程定义的创建)或enabled(这样,再次允许基于指定的过程定义创建新的过程定义)之类的状态。如果pworkitem_state_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回工作项的所有可获得状态的列表。
WMTErrRetType WMOpenWorkitemStatesList (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pworkitem_id,
in WMTPFilter pworkitem_state_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTUInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pworkitem_id 指向结构的指针,该结构包含唯一的工作项ID。
pworkitem_state_filter 与工作项状态相关的过滤器。
count_flag 布尔值标记,指示是否应返回工作项状态的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 该工作项状态的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
6.6.7 WMFetchWorkitemState
名称
WMFetchWorkitemState-从符合过滤器标准的工作项的状态列表中,返回下一个工作项状态。
描述
该命令返回工作项的状态。每次调用后,该提取函数将返回后续的工作项状态。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。
WMTErrRetType WMFetchWorkitemState (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPProcDefState pworkitem_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkitemStatesList查询命令返回。
pworkitem_state 指向缓冲区的指针,该缓冲区由客户应用程序提供,状态名将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.6.8 WMCloseWorkitemStatesList
名称
WMCloseWorkitemStatesList-关闭工作项的状态的查询。
描述
WMTErrRetType WMCloseWorkitemStatesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkitemStatesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.6.9 WMChangeWorkitemState
名称
WMChangeWorkitemState-改变所指定的工作项的状态。
描述
定义该命令,允许工作项暂时被更改为特定的状态,诸如notRunning或running。关于状态的讨论见附录G。
WMTErrRetType WMChangeWorkitemState (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pworkitem_id,
in WMTPProcDefState pworkitem_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pworkitem_id 指向结构的指针,该结构包含唯一的工作项ID。
pworkitem_state 指向结构的指针,该结构包含状态名,用于更改工作项的状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在管理域内,每一个工作项必须有唯一的ID。
API基本原理
无。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改工作项状态
事件编码 WMChangeWorkitemState
6.6.10 WMReassignWorkItem
名称
WMReassignWorkItem
描述
该命令允许将工作项从一个工作流参与者的工作表中重新指派到另一个工作参与者的工作表中。
(注意: API规范的下一次发布可能会提供对整个工作表的重新指派。)
WMTErrRetType WMReassignWorkItem (
in WMTPSessionHandle psession_handle,
in WMTPWflParticipant psource_user,
in WMTPWflParticipant ptarget_user,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
psource_user 工作流参与者的标识符,其工作将要被重新指派。
ptarget_user 将要被指派工作的工作流参与者的标识符。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pwork_item_id 指向结构的指针,该结构包含正在被重新分配的工作项的标识符。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
WM_INVALID_SOURCE_USER
WM_INVALID_TARGET_USER
必要条件
发起重新指派请求的工作流参与者必须有权力这样做。
API基本原理
由于各种原因,已被指派了工作的工作流参与者可能离岗,且工作必须交由其它的工作流参与者完成。WFM引擘可能将所有的工作项定向到一个单独的工作表中(例如,部门的工作表)。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 指派/重新指派工作项
事件编码 WMReassignWorkItem
6.6.11 WMOpenWorkItemAttributesList
名称
WMOpenWorkItemAttributesList-指定并打开查询,生成符合过滤器标准的工作项属性的列表。
描述
该命令将返回一个查询句柄,代表工作项属性的列表。可选地,命令还将返回可获得属性的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。
为了将工作项属性的列表提供给应用程序用户,该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以获取可以对其进行赋值的工作项的属性。要获取属性值,最好在提取调用中提供足够大小的缓冲区。还可以使用WMGetWorkItemAttributeValue调用检索单个属性的值。如果pwork_item_attr_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回工作项的所有可获得的属性列表。
WMTErrRetType WMOpenWorkItemAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id,
in WMTPFilter pwork_item_attr_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pwork_item_id 指向结构的指针,该结构包含唯一的工作项ID。
pwork_item_attr_filter 与工作项属性相关的过滤器。
count_flag 布尔值标记,指示是否应返回的工作项属性的总数。
pquery_handle 指向结构的指针,该结构包含唯一查询信息。
pcount 该工作项属性的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
6.6.12 WMFetchWorkItemAttribute
名称
WMFetchWorkItemAttribute-从符合过滤器标准的工作项属性的列表中,返回下一个工作项属性。
描述
该命令将返回工作项属性。每一次调用后,该提取函数将返回后续的工作项属性。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。提取函数将在由调用所指定的缓冲区中返回属性值。如果buffer_size为空,则不返回属性值。如果buffer_size太小,无法保存属性值,那么函数将依据缓冲区的大小尽可能地返回属性值。属性值的实际长度可从attribute_length域中获取。应用程序可通过比较attribute_length和buffer_size来判断是否已返回完整的属性值。
WMTErrRetType WMFetchWorkItemAttribute (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkItemAttributesList查询命令返回。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
6.6.13 WMCloseWorkItemAttributesList
名称
WMCloseActivityInstanceAttributesList-关闭工作项属性的查询。
描述
WMTErrRetType WMCloseWorkItemAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenWorkItemAttributesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
6.6.14 WMGetWorkItemAttributeValue
名称
WMGetWorkItemAttributeValue-返回工作项属性的值、类型和长度,工作项属性由pwork_item_id参数指定。
描述
该命令将在由调用指定的缓冲区中返回工作项属性的值。
WMTErrRetType WMGetWorkItemAttributeValue (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id,
in WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
out WMTPText pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含唯一的过程实例ID。
pwork_item_id 指向结构的指针,该结构包含唯一的工作项ID。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_ATTRIBUTE
WM_INSUFFICIENT_BUFFER_SIZE
6.6.15 WMAssignWorkItemAttribute
名称
WMAssignWorkItemAttribute-为工作项属性赋值。
描述
该命令指示WFM引擘赋值,更改工作项属性或更改工作项属性的值。
WMTErrRetType WMAssignWorkItemAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向 结构的指针,该结构包含唯一的过程实例ID。
pwork_item_id 指向包含工作项标识的结构的指针,该工作项的属性将要被增加或更改。
pattribute_name 指向属性名字的指针。
attribute_type 属性的类型。
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
WM_INVALID_ATTRIBUTE
WM_ATTRIBUTE_ASSIGNMENT_FAILED
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 赋值工作项属性
事件编码 WMAssignWorkItemAttribute
6.7 WAPI管理函数
管理函数集合提供了管理和维护工作流系统所必须的功能。这个集合包括预期用于本客户端应用程序接口的最小服务。该集合包括的功能有:更改一组过程或活动实例的状态,终止或异常中止过程实例,为一组过程或活动实例赋值属性。
6.7.1 WMChangeProcessInstancesState
名称
WMChangeProcessInstancesState-改变所指定的过程定义的实例的状态,该过程实例符合指定的过滤器标准。
描述
定义这个命令,允许指定的过程定义的一组过程实例转移到一个特定的新状态。
这个命令的执行将导致指定的过程定义的一组过程实例更改它们的状态。如果过滤器指针pproc_inst_filter为空,那么该命令将应用到所有的过程实例。特定的状态名和语义取决于特定的WFM引擘实现。
当一个过程的一组实例必须有一个诸如suspended、disabled或enabled之类的新状态时,这个调用将被执行。特定的状态名和语义必须被包含在实现文档中。
由于这个命令对指定的过程定义的一组过程实例进行操作,假定发起该操作的人员有权这样去做。该操作的作用域可能不同,取决于供应商的实现。
WMTErrRetType WMChangeProcessInstancesState (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPFilter pproc_inst_filter,
in WMTPProcInstState pproc_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含唯一的过程定义ID。
pproc_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
pproc_inst_state 为一ID,指示更改之后所期望的过程状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_FILTER
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在管理域内,每个过程实例必须有唯一的ID。
在管理域内,每个过程定义必须有唯一的ID。
API基本原理
本API允许过程管理者对正在执行的过程进行干预。这可能基于这样一个目的,更改过程定义,且所有随后创建的过程实例将反映新的过程定义。当对角色、活动等实施更改时,它提供了暂停正在执行的过程实例的能力。在处理一个出现故障的过程时,它允许停止该过程实例的执行。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程/子过程实例状态
事件编码 WMChangeProcessInstancesState
6.7.2 WMChangeActivityInstancesState
名称
WMChangeActivityInstancesState-改变活动实例的状态,该活动实例与过程定义的特定活动定义相关,且符合特定的过滤器标准。
描述
这个命令指示WFM引擘更改指定活动的状态,可对一组活动实例起作用。该命令假定工作流参与者能够更改对应于某一过程定义的一组活动实例的状态,且有权这样做。如果具体的实现支持诸如挂起(suspended)和恢复(resumed或in-progress)之类的状态,那么用于挂起和恢复的功能,被实现为状态更改调用。如果过滤器指针pact_inst_filter为NULL,那么该命令应用于给定活动定义的所有活动实例。
WMTErrRetType WMChangeActivityInstancesState (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPActivityID pactivity_def_id,
in WMTPFilter pact_inst_filter,
in WMTPActivityInstState pactivity_inst_state)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含唯一的过程定义ID。
pactivity_def_id 指向活动定义ID的指针。
pact_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
pactivity_inst_state 为一ID,指示更改之后活动所期望的活动实例状态。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_ACTIVITY_NAME
WM_INVALID_FILTER
WM_INVALID_STATE
WM_TRANSITION_NOT_ALLOWED
必要条件
在管理域内,每个过程定义必须有唯一的ID。
在过程定义内,每个活动必须有唯一的ID。
API基本原理
工作流参与者可能希望更改特定活动的活动实例的状态。其它情形可能包括与一个活动相关联的应用程序故障。包含该活动的过程可能是经常被使用的过程,并且当它每次被调用时,都可能引起内存转储。在采取补救措施时,本API的使用将允许应用程序的调用被中止。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改活动实例状态
事件编码 WMChangeActivityInstancesState
6.7.3 WMTerminateProcessInstances
名称
WMTerminateProcessInstances-终止指定的过程定义的过程实例,这些过程实例符合特定的过滤器标准。
描述
这个命令提供了终止与一个过程定义相关的一组过程实例的能力。这个命令的执行将导致指定过程定义的一组过程实例被终止。如果过滤器指针pproc_inst_filter为NULL,那么该命令将应用到所有的过程实例。
WMTErrRetType WMTerminateProcessInstances (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPFilter pproc_inst_filter)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含的过程定义的所有指定的过程实例将被终止。
pproc_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_FILTER
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程/子过程实例状态
事件编码 WMTerminateProcessInstances
6.7.4 WMAssignProcessInstancesAttribute
名称
WMAssignProcessInstancesAttribute-为一组过程实例指定适当的属性,该组过程实例属于同一过程定义,且符合指定的过滤器标准。
描述
这个命令指示WFM引擘,为指定的过程定义的一组过程实例指定属性,更改属性或属性的值。
这个命令更改过程实例的属性的值。过程实例属性可归类为过程控制和过程相关数据。
WMTErrRetType WMAssignProcessInstancesAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPFilter pproc_inst_filter,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含的过程定义的所有指定的过程实例的属性将被更改。
pproc_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
pattribute_name 指向属性名字的指针。
attribute_type 属性的类型。
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_FILTER
WM_INVALID_ATTRIBUTE
必要条件
无。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程实例属性
事件编码 WMAssignProcessInstancesAttribute
6.7.5 WMAssignActivityInstancesAttribute
名称
WMAssignActivityInstancesAttribute-为一组活动实例指定适当的属性,该组活动实例属于同一过程定义,且符合指定的过滤器标准。
描述
这个命令指示WFM引擘,为指定过程定义内的一组活动实例指定属性,更改属性或属性的值。活动实例的这些属性可归类为过程控制或过程相关数据。如果pact_inst_filter为NULL,那么该函数应用于给定活动定义的所有可访问的活动实例。
WMTErrRetType WMAssignActivityInstancesAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPActivityID pactivity_def_id,
in WMTPFilter pact_inst_filter,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向包含过程定义ID的结构的指针。在这种情况下,对应于一过程定义的所有活动实例的属性都将被更改。否则该参数为NULL。
pactivity_def_id 指向结构的指针,该结构包含活动定义标识符,其属性将被赋值。
pact_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
pattribute_name 指向属性名字的指针。
attribute_type 属性的类型。
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区由客户应用程序提供,属性值将被存储在该缓冲区中。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_ACTIVITY_NAME
WM_INVALID_FILTER
WM_INVALID_ATTRIBUTE
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 赋值活动实例属性
事件编码 WMAssignActivityInstancesAttribute
6.7.6 WMAbortProcessInstances
名称
WMAbortProcessInstances-异常中止一组过程实例,而无需考虑其状态,该组过程实例对应于指定的过程定义,且符合指定的过滤器标准。
描述
这个命令允许某一过程定义的一组过程实例被异常中止。在可能的情况下,位于这些过程实例内的所有当前的活动都将被中止,这些过程实例也将被中止。如果pproc_inst_filter为NULL,那么该命令将应用到所有可访问的过程实例。
WMTErrRetType WMAbortProcessInstances (
in WMTPSessionHandle psession_handle,
in WMTPProcDefID pproc_def_id,
in WMTPFilter pproc_inst_filter)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_def_id 指向结构的指针,该结构包含的过程定义的所有指定的过程实例将被异常中止。
pproc_inst_filter 指向结构的指针,该结构包含本次请求的过滤器信息。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_DEFINITION
WM_INVALID_FILTER
必要条件
无。
API基本原理
这个命令用于灾难性的情况,在这种情况下,除了清除过程以外,已无法采取任何挽救措施了。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程实例状态
事件编码 WMAbortProcessInstances
6.7.7 WMAbortProcessInstance
名称
WMAbortProcessInstance-异常中止指定的过程实例,无需考虑其状态。
描述
这个命令允许过程实例被异常中止。在可能的情况下,位于该过程实例内的所有当前的活动都将被中止,该过程实例也将被中止。
WMTErrRetType WMAbortProcessInstance (
in WMTPSessionHandle psession_handle,
in WMTPProcInstID pproc_inst_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_inst_id 指向结构的指针,该结构包含将被异常中止的过程实例。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_PROCESS_INSTANCE
必要条件
无。
API基本原理
这个命令用于灾难性的情况,在这种情况下,除了清除过程以外,已无法采取任何挽救措施了。
审计信息
下面的审计信息直接与该函数相关,实现了本规范的工作流产品,将按照审计配置文件的要求,记录该审计信息。
审计数据类型 更改过程/子过程实例状态
事件编码 WMAbortProcessInstance
6.8 WAPI应用程序调用函数
这组应用程序接口函数为工具代理(Tool-Agents)提供了服务,用于调用并控制与特定工作项相关的应用程序。
被调用应用程序接口定义了API集合,强烈推荐工作流系统组件(引擘和客户应用程序)使用该组API去控制专门的应用程序驱动器,这些应用程序驱动器被称为工具代理(Tool-Agents)。最终,将由这些工具代理启动和终止应用程序,在工作流系统组件和应用程序之间,来回传递工作流和应用程序相关的信息,并控制应用程序运行级别的状态。因此,被调用应用程序接口WAPIs仅仅是针对工具代理的。然而,应用程序可以通过工具代理使用标准的WAPI函数请求额外的工作流信息。由于被调用应用程序接口应该处理双向的请求(去或来自应用程序的请求),它依赖于应用程序如何与工具代理交互的接口和体系结构。
这个接口提供了获取和更新应用程序数据的可能性,并提供了更多的运行时相关的功能。
工作流系统自身必须知道如何安装工具代理。工具代理基本的体系结构可与驱动程序接口如ODBC等进行对比。
在这个接口定义内,在工具代理和工作流系统之间不需要更进一步的通讯机制。
6.8.1 WMTAConnect() & WMTADisconnect()
描述
这些命令创建并终止与工作代理接口的连接。在“WAPI连接函数”一节中已经定义了该命令。应用程序可能会要求登录程序,因此用户认证应被传递给工具代理,以提供单一登录机制。
注意:在WMTConnectInfo中,engine_name的值代表在过程定义中定义的工具代理的实现的名字。
6.8.2 WMTAInvokeApplication()
名称
WMTAInvokeApplication-命令工具代理启动或激活特定的应用程序。
描述
工作流应用程序或引擘,通过调用工具代理API,来激活与某一工作项相关的特定的应用程序。应用程序可能已处于活动状态,或需要由工具代理进行调用。调用一个应用程序总是会包含类似应用程序参数和模式等附加选项的传递。
int WMTAInvokeApplication (
in int tool_agent_handle,
in string application_name,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id,
in WMTPAttributeList pattribute_list,
in int app_mode)
参数名称 描述
tool_agent_handle 该句柄代表与特定工具代理的一个连接。
application_name 该参数代表可执行文件或组件的名字。被传递的应用程序的名字,不包括路径名。(工具代理的实现和配置必须处理本地的配置。)
pproc_inst_id 过程实例,标识应用程序和过程实例之间的关系。该ID允许系统引用工具代理的特定应用程序的句柄。
pwork_item_id 与被调用的应用程序相关联的工作项。
pattribute_list 指向应用程序所要求的参数和属性列表的指针。这些参数要么是应用程序相关的,要么是动态的,要么是工作流相关的数据。(例如,文件名,记录标识符等。)
app_mode 代表可能的应用程序模式,如“创建(CREATE)”、“更新(UPDATE)”、“只读(READONLY)”、“打印(PRINT)”等等。
错误返回值
WM_SUCCESS
WM_APPLICATION_NOT_STARTED
WM_APPLICATION_NOT_DEFINED
WM_APPLICATION_BUSY
必要条件
无。
API基本原理
该命令调用与某一工作项相关的特定的应用程序。一个工具代理可能控制一个或多个应用程序,这些应用程序必须被启动或激活。一个应用程序还必须以一种特定的模式启动,如“打开(open)”或“更新(update)”等。
审计信息
无。
6.8.3 WMTARequestAppStatus()
名称
WMTARequestAppStatus-允许工作流系统检查打开的应用程序及其状态(运行,未决,等等)。
描述
WMTARequestAppStatus定义了工作流系统如何检查应用程序的状态,以及从应用程序检索工作流相关的数据。从被调用的应用程序检索工作流相关的数据,工作流应用程序或引擘必须从工具代理获取应用程序的状态和信息。由于一些被集成的应用程序的异步要求,工具代理可通过使用其它的WAPI接口获取额外的信息。
int WMTARequestAppStatus (
in WMTInt32 tool_agent_handle,
in WMTPProcInstID proc_inst_id,
in WMTPWorkItemID pwork_item_id,
out WMTInt32 app_status,
out WMTPAttributeList WFRelevantData)
参数名称 描述
tool_agent_handle 该句柄代表与特定工具代理的一个连接。
pproc_inst_id 工作流相关的数据属于该过程实例且在应用程序完成后应被更新。
pwork_item_id 与被调用的应用程序相关联的工作项。
app_status 与被调用应用程序有关的信息。(即“运行(RUNNING)”、“活动(ACTIVE)”、“等待(WAITING)”、“终止(TERMINATED)”、“完成(FINISHED)”,等等。)
WFRelevantData 工作流相关数据的列表或结构,可通过工具代理机制访问。
错误返回值
WM_SUCCESS
WM_APPLICATION_BUSY
WM_INVALID_TOOL_AGENT_HANDLE
WM_INVALID_WORKITEM
WM_INVALID_PROCESS_INSTANCE
必要条件
无。
API基本原理
通过检查活跃的工作项的状态,可使用该命令控制被调用的应用程序的状态。
审计信息
无。
6.8.4 WMTATerminateApp()
名称
WMTATerminateApp-命令工具代理终止应用程序。
描述
该API允许工作流系统终止应用程序,该应用程序与指定的过程实例相关联。一个应用程序还能被任何其它的事件所终止。因此,在应用程序控制API内,WMTerminateApp并不是必须要有的,但是它允许工具代理释放应用程序相关的信息。
int WMTATerminateApp (
in WMTInt32 tool_agent_handle,
in WMTPProcInstID pproc_inst_id,
in WMTPWorkItemID pwork_item_id)
参数名称 描述
tool_agent_handle 该句柄代表与特定工具代理的一个连接。
pproc_inst_id 工作流相关的数据属于该过程实例并且在应用程序完成后应被更新。
pwork_item_id 与被调用的应用程序相关联的工作项。
错误返回值
WM_SUCCESS
WM_APPLICATION_NOT STOPPED
WM_INVALID_PROCESS_INSTANCE
WM_INVALID_WORKITEM
WM_APPLICATION_BUSY
必要条件
无。
API基本原理
这个命令关闭与某一应用程序的连接,并终止该应用程序。它可被用于系统停机前,或终止被调用的应用程序,以便更好地控制被集成的应用程序所使用的系统资源。
审计信息
无。
7. 附录A:下一步工作
7.1其它的API领域
WFM联盟API的规范工作将致力于如下领域。是否应为这些领域创建API调用,或它们是否属于特定的WFM工作流产品实现所独有的域,需要作出判断。
7.1.1 WFM数据API调用
应用程序需要通过本API规范操纵的数据类型有:过程控制数据,过程相关数据和应用程序数据。当前的规范着重通过对过程,活动和工作项的属性的定义和操纵,来访问这些数据。毫无疑问,为使数据操纵更完善,一些新增加的API调用或参数将被补充到已有的API调用中。
7.1.2特殊的活动
在API规范的下一版本中,API工作组将考虑这样的功能,允许应用程序增加活动到过程实例中,尽管该活动不是过程定义的一部分。这些特殊的附加物将在过程实例的基础上完成。
7.1.3管理和维护
API工作组相信,这一领域的功能与接口5相对应,该服务应包含功能用于:
清除(Purging)
备份(Backup)
归档(Archiving)
下载和上载实例(用于远程用户)
7.1.4名字和角色
API工作组相信,工作流引擘还应该提供服务,用于角色和名字(标识符)的定义、分配、映射和维护。工作组还相信,这些服务最好还是通过接口5提供。
7.2其它的问题
在下一版本中,WFM联盟API规范工作将被扩展,以便照顾到如下问题。
7.2.1错误报告和控制
所有的WAPI函数调用都有统一的错误返回数据类型。该数据类型在所有的API调用之间共享。本规范假定,由工作流管理联盟指定主错误返回码的子集,余下的主错误返回码或子错误返回码集合留给供应商特定的实现,以便提供错误码的可扩展性和特殊化。(见“WAPI数据类型”和“WAPI错误返回码”等章节。)
7.2.2同步点处理
同步点处理用于处理可恢复性(recoverability)。WAPI工作组相信,这一领域对于WFM开发人员非常重要。然而,根据会员协议,工作组还相信它将是最困难的领域之一。这一领域的工作将被延期到API规范的第二版。
7.2.3安全性
除了在WMTConnectInfo结构中包含用户口令外,WFM API规范的当前版本未包含任何特殊的用于安全性机制的需求和准备。安全机制的实现留给特定的实现。
7.2.4加锁
WFM API规范的当前版本未包含任何特殊的用于加锁机制的需求和准备。加锁机制的实现留给特定的实现。
7.2.5过程完整性
WFM API规范的当前版本未包含任何特殊的、用于保证过程完整性机制的需求和准备。过程完整性机制的实现留给特定的实现。
8.附录B:对象绑定
本章描述对象绑定,适合于本文档中描述的WAPI函数。绑定被定义用于OLE,或依据OMG IDL进行定义。两种绑定都实现了公共对象模型,在下一节描述。余下的章节将描述绑定规范。
8.1抽象对象定义
下图显示了用于工作流应用程序客户端接口定义的主要对象。
工作流服务器(Workflow Server)提供了与工作流发布服务(Workflow Enactment Service)进行通讯的上下文(context)。它允许针对属于特定发布服务的对象进行可过滤的查询。一个可执行的工作流模型本身由过程定义(ProcessDefinition)代表;过程定义作为工厂(Factory),用于创建工作流模型的实例,并由工作流管理系统进行发布。为执行指定的过程,过程定义的过程实例(ProcessInstance)被创建。在过程实例执行期间,发布服务创建活动定义的活动实例(ActivityInstance),该活动定义包含在过程定义中。活动实例被指派给工作流参与者,形成工作项。
下一张图显示了被用于完成对象模型的辅助构造。
为每个对象定义了一组标准化的属性-特定的发布服务所特有的属性或用户定义的属性,在特定的工作流模型中,决定了工作流对象的特殊性。 对属于发布服务的、已经过过滤的对象列表的访问,由集合(Collection)类型的接口进行管理;过滤器(Filter)对象支持选择标准的定义,这些选择标准将用于生成对象列表。在OLE绑定中,工作流对象集合被实现为OLE集合;在OMG IDL绑定中,为每个基本的工作流对象接口,定义了迭代类型的接口。
8.1.1 将WAPI映射到OLE和IDL绑定
下表描述了上面所描述的公共对象模型的组成部分是如何映射到本规范中所定义的WAPI构造的。
WAPI元素 OLE对象 IDL接口
WMTSession Server ApplicationClientServer
WMTFilter Filter Filter
WMTQueryHandle OLE-Collection ProcessDefinitionsList
ProcessInstancesList
ActivityInstancesList
WorkList
AttributeList
WMTProcessDefinition ProcessDefinition ProcessDefinition
WMTProcessInstance ProcessInstance ProcessInstance
WMTActivityInstance ActivityInstance ActivityInstance
WMTWorkItem WorkItem WorkItem
WMTAttributeName
WMTAttributeType
WMTAttributeLength
WMTAttributeValue Attribute Attribute
WMTEntity of type Process Activity ActivityDefinition
WMTEntity of type Transition Information TransitionDefinition
WMTEntity of type Application Definition ApplicationDefinition
WMTEntity of type Participant Definition ParticipantDefinition
WMTEntity of type Process Relevant Data DataDefinition
8.2 OLE自动化绑定
本附录描述OLE自动化绑定,适合于工作流管理联盟接口2(WAPI2)。它基于:
本文档所指定的WAPI规范。
Microsoft Visual Basic 4.0, Professional Features, Creating OLE Servers, Chapter 3, Standards and Guidelines
该绑定有两个目标:
1. 准确映射WAPI2所指定的功能;
2. 遵照OLE自动化接口的标准和指南。
注意,绑定的这一版本仍然不包括“实体”函数。
8.2.1将WAPI2表示为OLE自动化接口
WAPI2是采用数据结构和函数的方式定义的。OLE自动化接口由对象类构成,每个对象类都有属性和方法。用于WAPI2的OLE自动化绑定使用如下规则导出:
1. 为每一个WAPI2数据结构定义一个OLE自动化对象类。可是,如果一个WAPI2数据结构由单个WMTText域构成,则使用OLE自动化String类;
2. 为每一个WAPI2数据结构内的每一个域,定义只读的OLE自动化属性,且object类与WAPI2数据结构相对应;
3. 在适当的object类上,为每一个WAPI2函数定义一个方法。所有的方法都删除会话句柄参数(除了服务器方法以外);
4. 对于函数的每个Open/Fetch/Close列表组合,和数据结构中包含多值的域(例如,participants),使用OLE自动化集合;
5. 通过异常报告错误。
8.2.1.1对象类
OLE自动化绑定为每个WAPI2数据结构定义了OLE自动化对象(class)。例如,WAPI2定义了如下的过程实例数据结构:
typedef struct
{
// 目前,这是最小的元素列表,将来的版本将为这一结构提供可扩展性。
WMTText process_name[NAME_STRING_SIZE];
WMTProcInstID proc_inst_id;
WMTProcDefID proc_def_id;
WMTProcInstState state;
WMTInt32 priority;
WMTText data_reference[DATA_REFERENCE_SIZE];
// 私有元素,包含供应商特有的信息
WMTWflParticipant proc_participants[20];
//最大为20个长度为63字符的参与者标识符
} WMTProcInst;
OLE自动化定义了一个ProcessInstance对象类,具有Name, ID,ProcessDefinitionID, State, Priority, DataReference和Participants等属性。该ProcessInstance对象类定义了启动和终止方法,对应于WMStartProcess和WMTerminateProcessInstance等WAPI2方法。
下表列出了WAPI2 OLE自动化绑定中的对象类和相应的WAPI2数据结构。注意,存在与上面所描述的规则例外的情况。没有ConnectionInfo对象类--作为单独的参数传递给服务器类的连接方法的信息。有一个Attribute对象类--在WAPI2属性函数中,它的属性是作为分离的参数进行传递的。
OLE自动化对象 WAPI2数据类型
Server WMTSessionHandle
WMTConnectInfo
Filter WMTFilter
Collection WMTQueryHandle
ProcessDefinition WMTProcDefID
ProcessInstance WMTProcInst
ActivityInstance WMTActivityInst
WorkItem WMTWorkItem
Attribute
String WMTWflParticipant
WMTProcDefState
WMTProcInstState
下表列出了工作流过程定义语言(WPDL)中的实体,以及相应的WAPI2 OLE自动化绑定对象。
OLE自动化对象 WPDL实体
ProcessDefinition Workflow Process Definition
ActivityDefinition Workflow Process Activity
TransitionDefinition Transition Information
ParticipantDefinition Workflow Participant Definition
ApplicationDefinition Workflow Application Definition
DataDefinition Workflow Process Relevant Data
8.2.1.2对象层次结构
在OLE自动接口中,对象类被组织成对象层次结构。这不是基于“是一种(is a)”关系的继承层次结构,更确切地说,它是一个可导航的层次结构,以一种使编程更容易的方式组织对象。在层次结构中,顶层对象是“外部可创建的”,这意味着程序能够直接获得此类对象。在OLE自动化接口中,所有其它对象只能通过顶层对象的属性和方法间接获得。这里是WAPI2 OLE自动化接口的对象层次结构。
Server
Process Definitions
States
ActivityDefinitions
TransitionDefinitions
ParticipantDefinitions
ApplicationDefinitions
ProcessDataDefinitions
Process Instances
Attributes
Participants
States
Activity Instances
Attributes
Participants
States
Work Items
Attributes
Participant
ParticipantDefinitions
ApplicationDefinitions
Filter
WAPI2要求程序首选获得一个会话句柄,然后再使用它取得过程、活动和工作项的句柄。在OLE自动化绑定中,Server和Filter是顶层对象。Server对象类存在方法,用于对过程定义、过程实例、活动实例和工作项进行列表。
8.2.1.3集合(Collections)与查询(Queries)
WAPI2支持几种可返回多个值的检索操作:
过程定义、过程实例、活动实例或工作项的列表;
过程定义、过程实例或活动实例的状态;
过程实例、活动实例或工作项的属性。
对于每一个这样的检索操作,WAPI定义了三种函数:
WMOpen...List
WMFetch...
WMClose...List
打开函数需要一个过滤器参数。可使用提取函数,对检索到的值进行迭代操作。
OLE自动化使用Collection对象类,在此类一对多关系的对象层次结构中导航。Server对象类存在列表方法,这些方法使用Filter对象作为参数,返回ProcessDefinition, ProcessInstance, ActivityInstance或WorkItem对象的集合(collection)。ProcessDefinition, ProcessInstance和ActivityInstance对象类有一个States属性,它的值是状态的集合。ProcessInstance,ActivityInstance和WorkItem有一个Attributes属性,它的值是属性的集合。这些属性有一个Filter参数。
Collection对象类有一个Count属性(集合中元素的数目),并提供方法对其中的元素进行迭代操作。例如,这里有一段VBA代码,用于将用户的工作项置于列表框中:
Dim mySession As Session
Dim myWorkList As Filter
Dim myWorkItem As WorkItem
Set mySession = CreateObject(“WAPI2.Session”)
mySession.Connect(...)
For Each myWorkItem In Session.ListWorkItems(myWorkList)
ListBox.AddItem myWorkItem.Name
Next myWorkItem
每一个ProcessDefinition, ProcessInstance, ActivityInstance和WorkItem类都有一个值为集合的属性,用于它们的状态,属性和参与者。状态和参与者集合的元素是字符串。属性集合的元素是Attribute对象,它有两个属性:名字和值。Value属性被表示成OLE自动化变量(Variant),它提供了方法用于判断其数据类型和长度。
8.2.1.4异常(Exceptions)
OLE自动化支持异常。OLE自动化服务器能够通过抛出异常而不是返回错误码来报告错误。这允许在一个表达式中对OLE自动化接口进行链状调用。例如,下面的表达式:
WorkItem.ProcessInstance.ProcessDefinition.Name
三次调用OLE自动化接口,为包含工作项的过程实例返回其过程定义的名字。这些表达式通常出现在调用OLE自动化接口的程序或宏中。这些调用的任何一个都可能遇到错误,这些错误将通过异常报告给调用程序。
用于WAPI2的OLE自动化绑定使用异常报告错误。异常对象携带了错误的文本描述。Server对象也有ErrorCode和ErrorSubCode属性。当一个程序调用WAPI2 OLE自动化接口且服务器遇到一个错误时,它在Server的WMTErrRetType类型的属性中设置错误码,并抛出异常。
8.2.2属性(Attributes)
大部分工作流对象都有一个属性集合,每一个属性都有名字、数据类型和值。WAPI C绑定提供了函数用于:
在对象的属性集合上进行迭代操作:WMOpen…AttributesList, WMFetch…Attribute,WMClose…AttributesList;
获取并设置属性值:WMGet…AttributeValue, WMAssign…AttributeValue。
在OLE绑定中,每一个对象都有一个Attributes属性,它的值是一个Attributes对象的集合。OLE集合对象提供了方法,用于对对象的属性进行迭代操作。Attribute对象有name, type和value属性,对应于传递给WMGet…AttributeValue函数的attribute_name,attribute_type,attribute_length和attribute_value等参数。该属性集合由属性名进行索引。获取属性对象的值如同调用WMGet…AttributeValue一样;设置属性对象的值则如同WMAssign…AtributeValue一样。例如,下面的表达式:
activity.Attributes(“Size”).Value
对一个活动对象(由活动变量引用)的“Size”属性进行求值,并且
activity.Attributes(“Size”).Value = 15
更新活动对象的属性值。Value属性的数据类型是OLE自动化变量(Variant)类型。这个数据类型提供了函数,用于判断其值的数据类型,并将其值转换为基本数据类型。
8.2.3服务器(Server)
Server对象类对应于WMTSessionHandle数据类型。Server对象是外部可创建的。程序在其能够访问其它对象之前,必须成功地调用Server对象的Connect方法。
8.2.3.1属性(Properties)
Server对象有如下属性:
名字 类型 描述
Engine String pconnect_info.engine_name
ErrorCode Integer WMTErrRetType.main_code
ErrorSubCode Integer WMTErrRetType.sub_code
Scope String pconnect_info.scope
这些属性是只读的。当OLE自动化接口抛出一个异常时,设置这些属性。
8.2.3.2方法(Methods)
Server对象有如下方法:
方法签名 描述
Connect
in String User
in String Password WMConnect
ProcessDefinition CreateProcessDefinition WMCreateProcessDefinition
DeleteProcessDefinition
in ProcessDefinition ProcDef WMDeleteProcessDefinition
Disconnect WMDisconnect
Collection ListProcessDefinitions
in Filter ProcDefFilter WMOpenProcessDefinitionsList
Collection ListProcessInstances
in Filter ProcInstFilter WMOpenProcessInstancesList
ProcessInstance GetProcessInstance
in String ProcInstID WMGetProcessInstance
Collection ListActivityInstances
in Filter ActivityInstFilter WMOpenActivityInstancesList
ActivityInstance GetActivityInstance
in String ProcInstID
in String ActivityInstID WMGetActivityInstance
Collection ListWorkItems
in Filter WorkItemFilter WMOpenWorkItemsList
WorkItem GetWorkItem
in String ProcInstID
in String WorkItemID WMGetWorkItem
ApplicationDefinition CreateApplicationDefinition
in String Name WMCreateEntity
DeleteApplicationDefinition WMDeleteEntity
ParticipantDefinition CreateParticipantDefinition
in Sting Name WMCreateEntity
DeleteParticipantDefinition WMDeleteEntity
8.2.3.3 Connect
该方法是对WMConnect函数的绑定。注意,在这里,WMConnect函数的engine_name和scope参数已被删除。这些信息被编码在OLE函数(CreateObject或GetObject)的调用参数中,该OLE函数返回Server对象。
Connect (
in String User,
in String Password)
参数 描述(WMConnect Argument)
User pconnect_info.user_identification
Password pconnect_info.password
8.2.3.4 CreateProcessDefinition
该方法是对WMCreateProcessDefinition函数的绑定。
ProcessDefinition CreateProcessDefinition ()
参数 描述(WMCreateProcessInstance Argument)
ProcessInstance pproc_def_id
8.2.3.5 DeleteProcessDefinition
该方法是对WMDeleteDefinition函数的绑定。
DeleteProcessDefinition (
in ProcessDefinition ProcDef)
参数 描述(WMDeleteProcessDefinition Argument)
ProcDef pproc_def_id
8.2.3.6 Disconnect
该方法是对WMDisconnect函数的绑定。
Disconnect ()
8.2.3.7 ListProcessDefinitions
该方法是对WMOpenProcessDefinitionsList函数的绑定。
Collection ListProcessDefinitions (
in Filter ProcDefFilter)
参数 描述(WMOpenProcessDefinitionsList Argument)
ProcDefFilter pproc_def_filter
Collection pquery_handle
8.2.3.8 ListProcessInstances
该方法是对WMOpenProcessInstancesList函数的绑定。
Collection ListProcessInstances (
in Filter ProcInstFilter)
参数 描述(WMOpenProcessInstancesList Argument)
ProcInstFilter pproc_inst_filter
Collection pquery_handle
8.2.3.9 GetProcessInstance
该方法是对WMGetProcessInstance函数的绑定。
ProcessInstance GetProcessInstance (
in String ProcInstID)
参数 描述(WMGetProcessInstance Argument)
ProcInstID pproc_inst_id
ProcessInstance pproc_inst
8.2.3.10 ListActivityInstances
该方法是对WMOpenActivityInstancesList函数的绑定。
Collection ListProcessInstances (
in Filter ActivityInstFilter)
参数 描述(WMActivityInstancesList Argument)
ActivityInstFilter pactivity_inst_filter
Collection pquery_handle
8.2.3.11 GetActivityInstance
该方法是对WMGetActivityInstance函数的绑定。
ActivityInstance GetActivityInstance (
in String ProcInstID,
in String ActivityInstID)
参数 描述(WMGetActivityInstance Argument)
ProcInstID pproc_inst_id
ActivityInstID pactivity_inst_id
ActivityInstance pactivity_inst
8.2.3.12 ListWorkItems
该方法是对WMOpenWorkList函数的绑定。
Collection ListWorkItems (
in Filter WorkListFilter)
参数 描述(WMOpenWorkList Argument)
WorkListFilter pworklist_filter
Collection pquery_handle
8.2.3.13 GetWorkItem
该方法是对WMGetWorkItem函数的绑定。
WorkItem GetWorkItem (
in String ProcInstID,
in String WorkItemID)
参数 描述(WMGetWorkItem Argument)
ProcInstID pproc_inst_id
WorkItemID pwork_item_id
WorkItem pwork_item
8.2.3.14 CreateApplicationDefinition
该方法是对WMCreateEntity函数的绑定,用于在任意过程定义之外创建工作流应用程序定义。
ApplicationDefinition CreateParticipantDefinition ()
参数 描述(WMCreateEntity Argument)
Name entity_name
ApplicationDefinition Entity
8.2.3.15 DeleteApplicationDefinition
该方法是对WMDeleteEntity函数的绑定,用于删除工作流应用程序定义,且该应用程序定义不是过程定义的一部分。
DeleteApplicationDefinition (
in ApplicationDefinition AppDef)
参数 描述(WMDeleteEntity Argument)
AppDef entity_id
8.2.3.16 CreateParticipantDefinition
该方法是对WMCreateEntity函数的绑定,用于在任意过程定义之外创建工作流参与者定义。
ParticipantDefinition CreateParticipantDefinition ()
参数 描述(WMCreateEntity Argument)
Name entity_name
ParticipantDefinition Entity
8.2.3.17 DeleteParticipantDefinition
该方法是对WMDeleteEntity函数的绑定,用于删除工作流应用程序定义,且该应用程序定义不是过程定义的一部分。
DeleteParticipantDefinition (
in ParticipantDefinition PartDef)
参数 描述(WMDeleteEntity Argument)
PartDef entity_id
8.2.4 Filter
过滤器对象对应于WMTFilter数据类型。过滤器对象是外部可创建的。
8.2.4.1属性(Properties)
过滤器对象有如下的属性:
名字 类型 描述
Type Integer WMTFilter.filter_type
Length Integer WMTFilter.filter_length
AttributeName String WMTFilter.attribute_name
Comparison Integer WMTFilter.comparison
FilterString String WMTFilter.filter_string
8.2.4.2方法(Methods)
过滤器对象没有方法。
8.2.5过程定义(Process Definition)
ProcessDefinition类对应于WMTProcDefID数据类型。过程定义对象不是外部可创建的。它们由Server对象的ListProcessDefinitions方法返回,或由ProcessInstance对象的ProcessDefinition属性返回。
8.2.5.1属性(Properites)
过程定义对象有如下只读属性:
名字 类型 描述
Activities Collection WPDL
Applications Collection WPDL
Data Collection WPDL
ID String WMTProcDefId.proc_def_id
Name String WPDL
Participants Collection WPDL
States Collection WMOpenProcessDefinitionStatesList
Transitions Collection WPDL
所有这些属性,除名字外,都是只读的。States属性接受Filter参数。
8.2.5.2方法(Methods)
ProcessDefinition对象有如下的方法:
方法签名 描述
ProcessInstance CreateInstance WMCreateProcessInstance
ChangeInstancesState
in Filter InstanceFilter
in String InstanceState WMChangeProcessInstancesState
ChangeActivityInstancesState
in String ActivityDefinitionID
in Filter InstanceFilter
in String InstanceState WMChangeActivityInstancesState
TerminateInstances
in Filter InstanceFilter WMTerminateProcessInstances
AssignInstancesAttribute
in Filter InstanceFilter
in String Name
in Variant Value WMAssignProcessInstancesAttribute
AssignActivityInstancesAttribute
in String ActivityInstanceID
in Filter InstanceFilter
in String Name
in String Value WMAssignActivityInstancesAttribute
AbortInstances
in Filter InstanceFilter WMAbortProcessInstances
ActivityDefinition AddActivity
in String Name WMAddEntity
ApplicationDefinition AddApplication
in String Name WMAddEntity
ParticipantDefinition AddParticipant
in String Name WMAddEntity
ProcessDataDefinition AddData
in String Name WMAddEntity
TransitionDefinition AddTransition
in String Name WMAddEntity
注意,对于这些方法,Server参数是隐含传递的。这些方法使用的服务器是可以从中获取该过程定义的服务器。
8.2.5.3 CreateInstance
该方法是对WMCreateProcessInstance函数的绑定。
ProcessInstance CreateInstance ()
参数 描述(WMCreateProcessInstance Argument)
ProcessInstance pproc_inst_id
8.2.5.4 ChangeInstancesState
该方法是对WMChangeProcessInstancesState函数的绑定。
ChangeInstancesState (
in Filter InstanceFilter,
in String InstanceState)
参数 描述(WMChangeProcessInstancesState Argument)
InstanceFilter pproc_inst_filter
InstanceState process_inst_state
8.2.5.5 ChangeActivityInstancesState
该方法是对WMChangeActivityInstancesState函数的绑定。
ChangeActivityInstancesState (
in String ActivityDefID,
in Filter InstanceFilter,
in String InstanceState)
参数 描述(WMChangeActivityInstancesState Argument)
ActivityDefID pactivity_def_id
InstanceFilter pact_inst_filter
InstanceState activity_inst_state
8.2.5.6 TerminateInstances
该方法是对WMTerminateProcessInstances函数的绑定。
TerminateInstances (
in Filter InstanceFilter)
参数 描述(WMTerminateProcessInstances Argument)
InstanceFilter pproc_inst_filter
8.2.5.7 AssignInstancesAttribute
该方法是对WMAssignProcessInstancesAttribute函数的绑定。
AssignInstancesAttribute (
in Filter InstanceFilter,
in String Name,
in Variant Value)
参数 描述(WMAssignProcessInstancesAttribute Argument)
InstanceFilter pact_inst_filter
Name attribute_name
Value pattribute_value
8.2.5.8 AssignActivityInstancesAttribute
该方法是对WMAssignActivityInstancesAttribute函数的绑定。
AssignActivityInstancesAttribute (
in String ActivityDefID,
in Filter InstanceFilter,
in String Name,
in Variant Value)
参数 描述(WMAssignActivityInstancesAttribute Argument)
ActivityDefID pactivity_def_id
InstanceFilter pact_inst_filter
Name attribute_name
Value pattribute_value
8.2.5.9 AbortInstances
该方法是对WMAbortProcessInstances函数的绑定。
AbortInstances (
in Filter InstanceFilter)
参数 描述(WMAbortProcessInstances Argument)
InstanceFilter pproc_inst_filter
8.2.5.10 AddActivity
该方法是对WMAddActivity函数的绑定,用于将活动定义增加到过程定义中。
ActivityDefinition AddActivity (
in String Name)
参数 描述(WMAddEntity Argument)
Name entity_name
ActivityDefinition entity
8.2.5.11 AddApplication
该方法是对WMAddEntity函数的绑定,用于将应用程序定义增加到过程定义中。
ApplicationDefinition AddApplication (
in String Name)
参数 描述(WMAddEntity Argument)
Name entity_name
ApplicationDefinition entity
8.2.5.12 AddData
该方法是对WMAddEntity函数的绑定,用于将过程相关数据增加到过程定义中。
ProcessDataDefinition AddData (
in String Name)
参数 描述(WMAddEntity Argument)
Name entity_name
ProcessDataDefinition entity
8.2.5.13 AddParticipant
该方法是对WMAddEntity函数的绑定,用于将工作流参与者增加到过程定义中。
ParticipantDefinition AddParticipant (
in String Name)
参数 描述(WMAddEntity Argument)
Name entity_name
ParticipantDefinition entity
8.2.5.14 AddTransition
该方法是对WMAddEntity函数的绑定,用于将迁移信息增加到过程定义中。
TransitionDefinition AddTransition (
in String Name)
参数 描述(WMAddEntity Argument)
Name entity_name
TransitionDefinition entity
8.2.6过程实例(Process Instance)
ProcessInstance对象类对应于WMTProcessInst数据类型。过程实例对象不是外部可创建的对象。它们由Server对象的ListProcessInstances方法返回,或由ActivityInstance或WorkItem对象的ProcessInstance属性返回。
8.2.6.1属性(Properties)
ProcessInstance对象有如下只读属性:
名字 类型 描述
Attributes Collection WMOpenProcessInstanceAttributesList
DataReference String WMTProcessInst.data_reference
ID String WMTProcessInst.proc_inst_id
Name String WMTProcessInst.process_name
Participants Collection WMTProcessInst.proc_participants
Priority Integer WMTProcessInst.priority
ProcessDefinition ProcessDefinition WMGetProcessDefinition
ProcessDefinitionID String WMTProcessInst.proc_def_id
State String WMTProcessInst.state
States Collection WMOpenProcessInstanceStatesList
除状态属性外,所有这些属性都是只读的。更新状态属性与调用ChangeState方法有同样的效果。Attributes和States属性接受过滤器参数。ProcessDefinition属性是一个便利设施。它调用会话上的GetProcessDefinition方法,并传递ProcessDefinitionID属性的值,并且过程实例也是从该会话获得的。
8.2.6.2方法(Methods)
ProcessInstance对象有如下方法:
方法签名 描述
ProcessInstance Start WMStartProcess
Terminate WMTerminateProcess
ChangeState
in String State WMChangeProcessInstanceState
AssignAttribute
in String Name
in Variant Value WMAssignProcessInstanceAttribute
Abort WMAbortProcessInstance
注意,对于这些方法,Server参数是隐含传递的。这些方法使用的服务器是可从中获取该过程实例的服务器。
8.2.6.3 Start
该方法是对WMStartProcess函数的绑定。
ProcessInstance Start ()
参数 描述(WMStartProcess Argument)
ProcessInstance pnew_proc_inst_id
8.2.6.4 Terminate
该方法是对WMTerminateProcessInstance函数的绑定。
Terminate ()
8.2.6.5 ChangeState
该方法是对WMChangeProcessInstanceState函数的绑定。
ChangeState (
in String State)
参数 描述(WMChangeProcessInstanceState Argument)
State pproc_inst_state
8.2.6.6 AssignAttribute
该方法是对WMAssignProcessInstanceAttribute函数的绑定。
AssignAttribute (
in String Name,
in Variant Value)
参数 描述(WMAssignProcessInstanceAttribute Argument)
Name attribute_name
Value pattribute_value
8.2.6.7 Abort
该方法是对WMAbortProcessInstance函数的绑定。
Abort ()
8.2.7活动定义(Activity Definition)
ActivityDefinition类对应于WPDL中的工作流过程活动实体。活动定义对象不是外部可创建的。它们由ProcessDefinition对象的Activities属性返回。
8.2.7.1属性(Properties)
ActivityDefinition对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenEntityAttributesList
ID String WPDL
Implementation ApplicationDefinintion
ProcessDefinition WPDL
Name String WPDL
8.2.8活动实例(Activity Instance)
ActivityInstance类对应于WMTActivityInst数据类型。活动实例对象为非外部可创建的对象。它们由Server对象的ListActivityInstances方法返回,或由WorkItem对象的ActivityInstance属性返回。
8.2.8.1属性(Properties)
ActivityInstance对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenActivityInstanceAttributesList
DataReference String WMTActivityInst.data_reference
ID String WMTActivityInst.activity_inst_id
Name String WMTActivityInst.activity_name
Participants Collection WMTActivityInst.proc_participants
Priority Integer WMTActivityInstance.priority
ProcessInstance ProcessInstance WMGetProcessInstance
ProcessInstanceID String WMTActivityInstance.proc_inst_id
State String WMTActivityInstance.state
States Collection WMOpenActivityInstanceStatesList
除状态属性外,所有这些属性都是只读的。更新状态属性与调用ChangeState方法有同样的效果。Attributes和States属性接受过滤器参数。ProcessInstance属性是一个便利设施。它调用服务器的GetProcessInstance方法,并传递ProcessInstanceID属性的值,并且活动实例也是从该服务器获得的。
8.2.8.2方法(Methods)
ActivityInstance对象有如下的方法:
方法签名 描述
ChangeState
in String State WMChangeActivityInstanceState
AssignAttribute
in String Name
in Variant Value WMAssignActivityInstanceAttribute
注意,对于这些方法,Server参数是隐含传递的。这些方法使用的服务器是可从中获取该活动实例的服务器。
8.2.8.3 ChangeState
该方法是对WMChangeActivityInstanceState函数的绑定。
ChangeState (
in String State)
参数 描述(WMChangeActivityInstanceState Argument)
State pactivity_inst_state
8.2.8.4 AssignAttribute
该方法是对WMAssignActivityInstanceAttribute函数的绑定。
AssignAttribute (
in String Name,
in Variant Value)
参数 描述(WMAssignActivityInstanceAttribute Argument)
Name attribute_name
Value pattribute_value
8.2.9工作项(WorkItem)
WorkItem类对应于WMTWorkItem数据类型。工作项对象为非外部可创建的对象。它们由Server对象的ListWorkItem方法返回。
8.2.9.1属性(Properties)
WorkItem对象有如下属性:
名字 类型 描述
ActivityInstance ActivityInstance WMGetActivityInstance
ActivityInstanceID String WMTWorkItem.activity_inst
Attributes Collection WMOpenWorkItemAttributesList
DataReference String WMTWorkItem.data_reference
ID String WMTWorkItem.workitem_id
Name String WMTWorkItem.workitem_name
Participant String WMTWorkItem.proc_participant
Priority Integer WMTWorkItemance.priority
ProcessInstance ProcessInstance WMGetProcessInstance
ProcessInstanceID String WMTWorkItemance.proc_inst_id
所有这些属性都是只读的。Attributes属性接受过滤器参数。ActivityInstance和ProcessInstance属性是一种便利设施。它们分别调用服务器的GetActivityInstance 和GetProcessInstance方法,并传递ActivityInstanceID和ProcessInstanceID属性的值,并且工作项也是从该服务器获得的。
8.2.9.2方法(Methods)
WorkItem对象有如下方法:
方法签名 描述
AssignAttribute
in String Name
in Variant Value WMAssignWorkItemAttribute
Complete WMCompleteWorkItem
Reassign
in String SourceUser
in String TargetUser WMReassignWorkItem
注意,对于这些方法,Server参数是隐含传递的。这些方法使用的服务器是可以从中获得该工作项的服务器。
8.2.9.3 AssignAttribute
该方法是对WMAssignWorkItemAttribute函数的绑定。
AssignAttribute (
in String Name,
in Variant Value)
参数 描述(WMAssignWorkItemAttribute Argument)
Name attribute_name
Value pattribute_value
8.2.9.4 Complete
该方法是对WMCompleteWorkItem函数的绑定。
Complete ()
8.2.9.5 Reassign
该方法是对WMRessignWorkItem函数的绑定。
Reassign (
in String SourceUser,
in String TargetUser)
参数 描述 (WMReassignWorkItem Argument)
SourceUser psource_user
TargetUser ptarget_user
8.2.10迁移定义(Transition Definition)
TransitionDefinition类对应于WPDL中的迁移信息实体。迁移定义对象为非外部可创建的对象。它们由ProcessDefinition对象的Transition属性返回。
8.2.10.1属性(Properties)
TransitionDefinition对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenEntityAttributesList
From ActivityDefinition WPDL
ID String WPDL
Name String WPDL
To ActivityDefinition WPDL
8.2.11参与者定义(Participant Definition)
ParticipantDefinition类对应于WPDL中的工作流参与者定义实体。参与者定义对象为非外部可创建的对象。它们由Server对象的ListParticipantDefinitions方法返回,或由ProcessDefinition对象的Participants属性返回。
8.2.11.1属性(Properties)
ParticipantDefinition对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenEntityAttributesList
ID String WPDL
Name String WPDL
Type Integer WPDL
8.2.12应用程序定义(Application Definition)
ApplicationDefinition类对应于WPDL中的工作流应用程序定义实体。应用程序定义对象为非外部可创建的对象。它们由Server对象的ListApplicationDefinitions方法返回,或由ProcessDefinition对象的Applications属性返回。
8.2.12.1属性(Properties)
ApplicationDefinition对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenEntityAttributesList
ID String
Name String WPDL
8.2.13过程数据(Process Data Definition)
ProcessDataDefinition类对应于WPDL中的工作流过程相关数据实体。过程数据定义对象为非外部可创建的对象。它们由ProcessDefinition对象的Data属性返回。
8.2.13.1属性(Properties)
ProcessDataDefinition对象有如下属性:
名字 类型 描述
Attributes Collection WMOpenEntityAttributesList
ID String WPDL
Name String WPDL
Type Integer WPDL
8.2.14属性(Attribute)
Attribute对象类对应于工作流对象的单个属性。属性对象为非外部可创建的对象。它们由工作流对象的Attributes属性返回,Attributes为Attribute的集合,以名字作为索引。
8.2.14.1属性(Properties)
Attribute对象有如下属性:
名字 类型 WMFetch...Attribute Parameter
DataType Integer attribute_type
Name String attribute_name
Value Variant pattribute_value
Name和DataType属性是只读的。更新属性的值与调用拥有该属性的对象的方法WMAssign…AttributeValue的效果是一样的。
8.3OMG IDL绑定(OMG IDL Binding)
依据OMG IDL,本章提供了工作流设施客户端应用组件的详细描述。该规范被分成三个模块,第一个提供了一般的接口和操作,其它两个模块为应用程序客户端接口和过程定义接口定义了特定的接口和操作。
8.3.1工作流设施基础模块
工作流设施基础模块包含了在工作流参考模型中描述的、所有各不相同的接口的公共定义。
该模块定义的接口有:
Attribute接口,提供对各种类型工作流对象的属性的访问。
AttributeList接口,提供操作,用于处理经过过滤了的Attribute列表。
Filter接口,用于定义工作流对象的查询,这种查询是针对拥有这些工作流对象的工作流发布服务发起的。
WorkflowObject接口,定义了一般性的操作和属性,为许多工作流对象所共有。
下面经过简化的IDL概括了CfWFBase模块所包含的接口。
module CfWorkflowFacilityBase {
... // 数据类型和一般(exception)异常定义
interface Filter {
... // 查询过滤器对象定义
};
interface Attribute {
... // 工作流对象属性定义
};
interface AttributeList {
... // 工作流对象属性列表定义
};
interface WorkflowObject {
... // 工作流对象定义
};
};
下面的章节详细地描述了CfWFBase模块的内容。
8.3.1.1数据类型和一般异常
在CfWFBase模块中,定义了如下数据类型和异常,这些数据类型和异常被用于工作流设施的各种接口中。
// 类型定义
typedef string WMTName;
typedef WMTName WMTState;
typedef sequence WMTStates;
typedef string WMTId;
typedef integer WMTErrorCode
// 异常定义
exception InvalidFilter (WMTErrorCode badFilter);
exception NoMoreData ();
exception InvalidState();
exception TransitionNotAllowed();
exception AttributeAsignmentFailed();
exception InvalidAttribute();
每个工作流对象都有一个名字和一个状态。WMTName和WMTState定义了类型,用于指定相应的属性。此外,WMTName类型可被用于定义任意种类的、类似名字的属性,例如,指定位于工作流设施规范作用域之外的对象的引用。WMTStates处理状态列表。WMTId被用作持久引用的标识。WMTErrorCode类型,在某些异常中,被用于提供附加的信息,例如,InvalidFilter异常使用错误码指示与过滤器有关的特定的问题。InvalidFilter和NoMoreData异常与有过滤的查询和查询结果列表的处理有关。InvalidState和TransitionNotAllowed异常由工作流对象的状态变更操作抛出。
8.3.1.2 Filter接口
Filter接口指定了过滤器标准,被用于针对一组指定类型的对象的查询。
interface Filter {
attribute long filterType;
attribute long filterLength;
attribute WMTName attributeName;
attribute integer comparison;
attribute string filterString;
};
8.3.1.3 Attribute接口
Attribute接口被用于访问工作流对象的属性。属性数据通过值进行访问;attributeValue为any类型,并进一步由attributeType指定。
有三类基本的工作流对象的属性可通过该接口访问:
在本文档中描述的标准属性(例如,Name)
与特定的对象类型相关联的、供应商特有的属性(例如,ProcessDefinition的“ProcessClass”属性)
与特定的对象实例相关联的、用户定义的属性(例如,特定ProcessInstance的“CustomerNumber” 属性)
interface Attribute {
attribute WMTName attributeName;
attribute string attributeType;
attribute long attributeLength;
attribute any attributeValue;
};
typedef sequence Attributes;
AttributeList接口提供了迭代操作,用于属性表的处理。与该接口相对应的厂(factory)操作可在工作流对象接口中找到。fetchAttribute操作从表中提取下一属性,fetchAttributes操作提取表中随后的howMany个属性。如果表为空,抛出NoMoreData异常。
interface AttributeList {
Attribute fetchAttribute()
raises (NoMoreData);
Attributes fetchAttributes(long howMany)
raises (NoMoreData);
};
8.3.1.4 WorkflowObject接口
WorkflowObject接口定义了大部分工作流对象所共有的属性和操作。每个WorkflowObject都有一个名字,一个状态和一组属性与其相关联。
特定WorkflowObject的有效状态列表可使用listValidStates操作获得。当请求将状态变更到未知状态时,抛出InvalidState异常。getState获取工作流对象的当前状态,而setState则更改工作流对象的当前状态。当不允许从当前状态迁移到新状态时,抛出TransitionNotAllowed异常。
openAttributeList是用于AttributeList的厂操作,允许查询属性。getAttributeValue支持按名字访问属性。assignAttribute(s)操作为属性赋新值。当访问工作流对象未定义的属性时,抛出InvalidAttribute异常;当属性不能被修改时,例如只读,抛出AttributeAssignmentFailed异常。
interface WorkflowObject {
attribute WMTName name;
attribute WMTId id;
void listValidStates (
in Filter filter,
in boolean countFlag,
out WMTStates states,
out long count);
void changeState (in WMTState newState)
raises (TransitionNotAllowed, InvalidState);
void getState ( out WMTState currentState);
void openAttributeList (
in Filter filter,
in boolean countFlag,
out AttributeList attributes,
out long count)
raises (InvalidFilter);
void getAttributeValue (
in WMTName name
out Attribute attribute)
raises (InvalidAttribute);
void assignAttribute ( in Attribute attribute)
raises (InvalidAttribute, AttributeAssignmentFailed);
void assignAttributes ( in Attributes attributes)
raises (InvalidAttribute, AttributeAssignmentFailed);
};
8.3.2工作流应用客户端服务器接口
工作流ApplicationClientServer接口处理特定工作流用户与发布服务的连接,提供对通过该发布服务可访问的工作流对象的访问。连接操作初始化ApplicationClientServer;连接上下文由engineName和scope定义。当无法建立连接时,抛出ConnectFailed异常。Disconnect作为ApplicationClientServer的析构器。
通过为管理工作流对象列表的接口提供工厂方法,可提供对工作流对象的访问:Open...sList操作以filter作为它们的第一个参数(详细描述参见CfWFBase模块),countFlag参数指示是否返回查询结果中元素的数目。当没有建立连接时,抛出NotConnected异常。查询结果与连接关系紧密,当连接终止时,查询结果失效。
ApplicationClientServer接口提供了获取ProcessInstance, ActivityInstance或WorkItem等对象的操作,且这些对象是通过其标识符获取的。
interface ApplicationClientServer {
attribute CfWFBase :: WMTName engineName;
attribute CfWFBase :: WMTName scope;
void connect(
in CfWFBase :: WMTName userId,
in string password)
raises (ConnectFailed);
void disconnect()
raises (NotConnected);
ProcessDefinitionList openProcessDefinitionsList(
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
ProcessInstanceList openProcessInstancesList (
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
ActivityInstanceList openActivityInstancesList (
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
WorkList openWorkList (
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
ProcessInstance getProcessInstance(
in CfWFBase :: WMTId processInstanceId)
raises (InvalidId);
ActivityInstance getActivityInstance(
in CfWFBase :: WMTId processInstanceId,
in CfWFBase :: WMTId activityInstanceId)
raises (InvalidId);
Workitem getWorkitem(
in CfWFBase :: WMTId processInstanceId,
in CfWFBase :: WMTId workItemId)
raises (InvalidId);
};
8.3.2.1过程定义接口(Process Definition Interface)
ProcessDefinition接口提供了用于过程实例的厂操作,且支持与过程定义有关的工作流对象的管理操作:状态变更和为一组已经过过滤的过程实例或活动实例的所有成员更改指定属性的值。ProcessDefinition接口从WorkflowObject接口继承属性和操作。
interface ProcessDefinition : CfWFBase :: WorkflowObject {
ProcessInstance createProcessInstance (
in CfWFBase :: WMTName instanceName)
raises (NotConnected);
void changeProcessInstancesState (
in CfWFBase :: Filter filter,
in CfWFBase :: WMTState newState)
raises (NotConnected, TransitionNotAllowed,
InvalidState);
void abortProcessInstances (
in CfWFBase :: Filter filter)
raises (NotConnected, TransitionNotAllowed);
void terminateProcessInstances (
in CfWFBase :: Filter filter )
raises (NotConnected, TransitionNotAllowed);
void assignProcessInstancesAttribute (
in CfWFBase :: Filter filter,
in CfWFBase :: Attribute attribute)
raises (NotConnected, InvalidFilter, InvalidAttribute,
AttributeAssignmentFailed);
void changeActivityInstancesState (
in CfWFBase :: Filter filter,
in CfWFBase :: WMTState newState)
raises (NotConnected, InvalidFilter, TransitionNotAllowed,
InvalidState);
void assignActivityInstancesAttribute (
in CfWFBase :: Filter filter,
in CfWFBase :: Attribute attribute)
raises (NotConnected, InvalidFilter, InvalidAttribute,
AttributeAssignmentFailed);
};
8.3.2.2过程实例接口(Process Instance Interface)
ProcessInstance接口提供了操作,用于访问并修改过程实例对象的状态和属性。
使用启动、终止和异常中止操作,可导致状态变更。发布服务可支持额外的状态迁移(参见上面关于WorkflowObject :: changeState()的描述)。getParentProcessDefinition操作返回ProcessDefinition对象,该过程定义对象被用于创建特定的过程实例。listAssignedParticipants操作提供了与过程实例相关的工作流参与者的列表。ProcessInstance接口从WorkflowObject继承了属性和操作。所有的操作都需要与发布服务存在一个活跃的连接。
interface ProcessInstance : CfWFBase :: WorkflowObject{
attribute CfWFBase :: WMTDataRef dataReference;
attribute long priority;
ProcessDefinition getParentProcessDefinition ();
void start ()
raises (NotConnected, TransitionNotAllowed);
void terminate();
raises (NotConnected, TransitionNotAllowed);
void abort();
raises (NotConnected, TransitionNotAllowed);
CfWFBase :: WMTWflParticipants listAssignedParticipants ()
raises (NotConnected);
};
8.3.2.3活动实例接口(Activity Instance Interface)
ActivityInstance接口提供了操作,用于访问并修改ActivityInstance对象的状态和属性。
getParentProcessInstance操作返回拥有特定ActivityInstance的ProcessInstance对象。listAssignedParticipants操作提供与该活动实例相关联的工作流参与者的列表。ActivityInstance接口从WorkflowObject继承了属性和操作。所有的操作都需要与发布服务存在一个活跃的连接。
interface ActivityInstance : CfWFBase :: WorkflowObject {
attribute CfWFBase :: WMTDataRef dataReference;
attribute long priority;
ProcessInstance getParentProcessInstance ();
CfWFBase :: WMTWflParticipants listAssignedParticipants ()
raises (NotConnected);
};
8.3.2.4工作项接口(Work Item Interface)
WorkItem接口提供了操作,用于访问并修改WorkItem对象的状态和属性。
get和complete工作项操作变更工作项的状态。getAssignedParticipant返回当前被指派给该工作项的工作流参与者;reassign操作将工作项重新指派给其它的工作流参与者。
interface WorkItem : CfWFBase :: WorkflowObject {
attribute CfWFBase :: WMTDataRef dataReference;
attribute long priority;
ProcessInstance getParentProcessInstance ();
ActivityInstance getParentActivityInstance ();
void reassign (
in CfWFBase::WMTWflParticipant sourceUser,
in CfWFBase::WMTWflParticipant targetUser)
raises (NotConnected, InvalidSourceUser, InvalidTargetUser);
void get ()
raises (NotConnected, TransitionNotAllowed);
void complete()
raises (NotConnected, TransitionNotAllowed);
CfWFBase :: WMTWflParticipant getAssignedParticipant()
raises (NotConnected);
};
8.3.2.5已经过过滤的列表的处理(Filtered List Processing)
下面的接口提供了迭代器,用于那些从已经过过滤的列表请求中返回的结果。见属性一节中关于迭代器功能的描述。
typedef sequence ProcessInstances;
typedef sequence ActivityInstances;
typedef sequence WorkItems;
interface ProcessDefinitionList {
attribute long count;
ProcessDefinition fetchProcessDefinition()
raises (NoMoreData);
ProcessDefinitions fetchProcessDefinitions(
in unsigned long howMany)
raises (NoMoreData);
};
interface ProcessInstanceList {
attribute long count;
ProcessInstance fetchProcessInstance()
raises (NoMoreData);
ProcessInstances fetchProcessInstances(
in unsigned long howMany)
raises (NoMoreData);
};
interface ActivityInstanceList {
attribute long count;
ActivityInstance fetchActivityInstance()
raises (NoMoreData);
ActivityInstances fetchActivityInstances(
in unsigned long howMany);
raises (NoMoreData);
};
interface WorkList {
attribute long count;
WorkItem fetchWorkItem()
raises (NoMoreData);
WorkItem fetchWorkItems(
in unsigned long howMany);
raises (NoMoreData);
};
8.3.3过程定义模块(The Process Definition Module)
过程定义模块包含了用于创建和修改过程定义的接口,这些过程定义由发布服务执行。
该模块定义了如下的接口:
ProcessModelServer接口,处理工作流参与者与特定的发布服务的连接,并提供厂操作,用于访问该发布服务所拥有的、经过过滤的工作流定义对象的列表;
ProcessModel接口,代表工作流模型;该接口作为诸如ActivityDefinitions和TransitionDefinitions等过程模型组件的工厂(factory);
ActivityDefinition接口,代表过程模型中的一个节点;
TransitionDefinition接口,代表活动定义之间的连接;
DataDefinition接口,定义了过程相关的数据,由特定的过程模型所使用;
ApplicationDefinition接口,代表一个应用程序,在过程模型执行期间,该接口可被用于支持活动的处理;
ParticipantDefinition接口,代表一个资源,在过程模型执行期间,该资源可能收到工作项。
下面经过简化的IDL概括了CfWFProcessDefinition模块所包含的接口。
#include “CfWFBase.idl”
module CfWFProcessDefinition {
... // 数据类型和特定的异常定义
interface ProcessModel; // 前向声明
interface ApplicationDefinition; //前向声明
interface ParticipantDefinition; // 前向声明
interface ProcessModelList {
... // 迭代器,用于过程模型的查询结果
};
interface ApplicationDefinitionList {
... // 迭代器,用于应用程序定义的查询结果
};
interface ParticipantList {
... // 迭代器,用于工作流参与者定义的查询结果
};
interface ProcessDefinitionServer {
... // 过程定义服务器对象的定义
};
interface ProcessModel : CfWFBase::WorkflowObject{
... // 过程模型对象的定义
};
interface ApplicationDefinition : CfWFBase::WorkflowObject {
... // 应用程序定义对象的定义
};
interface ParticipantDefinition : CfWFBase::WorkflowObject {
... // 工作流参与者定义对象的定义
};
};
8.3.3.1数据类型和特定异常
下面的数据类型和异常是过程定义客户端模块所特有的:
// 类型定义
// 特定异常的定义
exception NotConnected();
exception ConnectFailed( CfWFBase::WMTErrorCode);
exception InvalidId();
这里所定义的异常用于处理与发布服务的连接管理有关的问题。
8.3.3.2过程定义服务器接口(Process Definition Server Interface)
过程定义服务器接口处理特定用户与某一发布服务的连接,并提供对通过该发布服务可访问的工作流定义对象的访问。
连接操作初始化工作流发布服务器;连接的上下文由engineName和scope定义。当无法建立连接时,抛出ConnectFailed异常。disConnect操作被用作ProcessDefinitionServer的析构器。
通过为管理工作流对象列表的接口提供工厂方法,可提供对工作流对象的访问:Open...sList操作以filter作为它们的第一个参数(详细描述参见CfWFBase模块),countFlag参数指示是否返回查询结果中元素的数目。当没有建立连接时,抛出NotConnected异常。查询结果与连接关系紧密,当连接终止时,查询结果失效。
interface ProcessDefinitionServer {
attribute CfWFBase :: WMTName engineName;
attribute CfWFBase :: WMTName scope;
void connect(
in CfWFBase :: WMTName userId,
in string password)
raises (ConnectFailed);
void disConnect()
raises (NotConnected);
ProcessModel createProcessModel(
in CfWFBase :: WMTName processName)
raises (NotConnected);
ProcessModelList openProcessModelsList(
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
ApplicationDefinitionList openApplicationDefinitionsList (
in CfWFBase :: Filter filter,
in boolean countFlag)
raises (InvalidFilter, NotConnected);
ParticipantDefinitionList openParticipantDefinitionsList (
in CfWFBase :: Filter filter,
in boolean countFlag,
out WMTActivityInstanceList activityInstances,
out long count)
raises (InvalidFilter, NotConnected);
ProcessModel getProcessModel(
in CfWFBase :: WMTId processModelId)
raises (InvalidId);
ApplicationDefinition getApplicationDefinition(
in CfWFBase :: WMTId applicationDefinitionId)
raises (InvalidId);
ParticipantDefinition getParticipantDefinition(
in CfWFBase :: WMTId participantDefinitionId)
raises (InvalidId);
};
8.3.3.3过程模型接口(Process Model Interface)
ProcessModel接口提供了工厂操作,用于过程模型中所包含的活动定义、迁移定义和数据定义。
ProcessModel接口继承了WorkflowObject的属性和方法。
interface ProcessModel : CfWFBase :: WorkflowObject {
ActivityDefinition addActivityDefinition(
in CfWFBase :: WMTName activityName)
raises (NotConnected);
void removeActivityDefinition(
in CfWFBase :: WMTId activityId)
raises (NotConnected);
DataDefinition addDataDefinition(
in CfWFBase :: WMTName dataName,
in CfWFBase :: WMTType dataType)
raises (NotConnected);
void removeDataDefinition(
in CfWFBase :: WMTId dataId)
raises (NotConnected);
TransitionDefinition addTransitionDefinition(
in CfWFBase :: WMTName transitionName,
in CfWFBase :: WMTId sourceActivityDefinitionId,
in CfWFBase :: WMTId targetActivityDefinitionId)
raises (NotConnected, InvalidId);
void removeTransitionDefinition(
in CfWFBase :: WMTId transitionId)
raises (NotConnected);
};
8.3.3.4应用程序定义接口(Application Definition Interface)
ApplicationDefinition接口提供了操作,用于访问和修改应用程序定义对象的属性。所有的操作都需要与发布服务存在一个活跃的连接。
interface ApplicationDefinition : CfWFBase :: WorkflowObject{
};
8.3.3.5参与者定义接口(Participant Definition Interface)
ParticipantDefinition接口提供了操作,用于访问和修改参与者定义对象的属性。所有的操作都需要与发布服务存在一个活跃的连接。
interface ParticipantDefinition : CfWFBase :: WorkflowObject{
attribute WMTParticipantType type;
};
8.3.3.6活动定义接口(Activity Definition Interface)
ActivityDefinition接口提供了操作,用于访问和修改活动定义对象的属性。
getParentProcessModel操作返回ProcessModel对象,该对象被用于创建指定的ActivityDefinition。所有的操作都需要与发布服务存在一个活跃的连接。
interface ActivityDefinition : CfWFBase :: WorkflowObject{
attribute WMTImpementationType implementationType;
attribute CfWFBase :: WMTId implementationId;
ProcessModel getParentProcessModel ();
};
8.3.3.7迁移定义接口(Transition Definition Interface)
TransitionDefinition接口提供了操作,用于访问和修改迁移定义对象的属性。
getParentProcessModel操作返回ProcessModel对象,该对象被用于创建指定的TransitionDefinition。所有的操作都需要与发布服务存在一个活跃的连接。
interface TransitionDefinition : CfWFBase :: WorkflowObject {
attribute CfWFBase :: WMTId sourceActivityId;
attribute CfWFBase :: WMTId targetActivityId;
ProcessModel getParentProcessModel ();
};
8.3.3.8经过过滤的列表的处理(Filtered List Processing)
下面的接口提供了迭代器,用于那些从经过过滤的列表请求中返回的结果。见属性一节中关于迭代器功能的描述。
typedef sequence ProcessModels;
typedef sequence ActivityDefinitions;
typedef sequence TransitionDefinitions;
typedef sequence ApplicationDefinitions;
typedef sequence ParticipantDefinitions;
interface ProcessModelsList {
attribute long count;
ProcessModel fetch();
raises (NoMoreData);
ProcessModels fetchN(
in unsigned long howMany);
raises (NoMoreData);
};
interface ActivityDefinitionsList {
attribute long count;
ActivityDefinition fetch ();
raises (NoMoreData);
ActivityDefinition fetchN(
in unsigned long howMany);
raises (NoMoreData);
};
interface TransitionDefinitionsList {
attribute long count;
TransitionDefinition fetch ();
raises (NoMoreData);
TransitionDefinitions fetchN(
in unsigned long howMany);
raises (NoMoreData);
};
interface ApplicatonDefinitionsList {
attribute long count;
ApplicationDefinition fetch ();
raises (NoMoreData);
ApplicationDefinitons fetchN(
in unsigned long howMany);
raises (NoMoreData);
};
interface ParticipantDefinitionsList {
attribute long count;
ParticipantDefinition fetch ();
raises (NoMoreData);
ParticipantDefinitions fetchN(
in unsigned long howMany);
raises (NoMoreData);
};
8.3.4与WfMC标准的关系
C语言描述已被转换成面向对象的规范。在将C函数转换成对象的操作时,只要有可能,都会保留C函数的语法。下面是这种改动的列表:
处理工作流对象的状态和属性的操作已被移到WorkflowObject类中。一般操作取代C-API中所定义的对象类型特有的操作;
经过过滤的表的处理与C语言规范中的处理方式相同,使用迭代器代替WMTPQueryHandle。迭代器一次可能返回一个或多个元素;
字符类型属性大小的限制已被取消。同样,与一个活动实例或过程实例相关联的参与者数目的限制也被取消;
各种工作流实体的唯一的ID属性由其对象ID替代(对象ID为隐含的属性);
返回代码已被异常取代。
9.附录D:审计数据
下面描述与本规范中定义的函数相关联的审计数据。WfMC审计数据规范标识了与工作流对象相关的事件(一般为状态或属性的改变),并描述报告这些事件的审计数据的格式。事件通常由一次外部的、与发布服务的交互触发,例如,通过本规范中定义的操作,通常会触发相应的事件。事件可以直接与操作相关联(例如,WMStartProcessInstance触发WMProcessInstancesStarted事件)或由诸如此类的交互间接地触发,并由发布服务进行协调 (例如,WMStartProcessInstance将引起过程起始活动的状态改变,结果导致WMActivityInstanceStateChanged事件)。对于相关文档中明确的所有事件,如果某一发布服务的实现支持所有的审计记录,则该实现遵守WfMC审计数据规范。为方便读者,我们包含了审计相关事件的引用,这些审计事件由本规范中所描述的函数触发;对于每一个操作,都描述了审计数据记录和与其直接相关联的事件。下面的描述提供了指示器,用于指向“WfMC审计数据规范“中的相应定义。具体细节,请参考该文档。
9.1审计过程定义
下表确定的审计数据,用于与改变过程定义状态有关的WAPI函数。操作(Operation)是指在本规范中定义的WAPI函数,事件集合是指“WfMC审计数据规范”中的章节,并且事件标识了在审计数据记录中所报告的事件。
操作 审计数据记录 事件
WMChangeProcessDefinitionState Change Process Definition State WMChangedProcessDefinitionState
9.2审计过程实例
下表确定的审计数据,用于与过程实例的状态改变和属性改变有关的WAPI函数。操作(Operation)是指在本规范中定义的WAPI函数,事件集合是指“WfMC审计数据规范”中的章节,并且事件标识了在审计数据记录中所报告的事件。
操作 审计数据记录 事件
WMCreateProcessInstance Create/Start Process/Subprocess Instance State WMCreatedProcessInstance
WMStartProcessInstance Create/Start Process/Subprocess Instance State WMStartedProcessInstance
WMChangeProcessInstancesState Change Process/Subprocess Instance State WMChangedProcessInstanceState
WMChangeProcessInstanceState Change Process/Subprocess Instance State WMChangedProcessInstanceState
WMTerminateProcessInstances Change Process/Subprocess Instance State WMTerminatedProcessInstance
WMTerminateProcessInstance Change Process/Subprocess Instance State WMTerminatedProcessInstance
WMAbortProcessInstances Change Process/Subprocess Instance State
WMAbortedProcessInstance
WMAbortProcessInstance Change Process/Subprocess Instance State
WMAbortedProcessInstance
WMAssignProcessInstancesAttribute Assign Process Instance Attributes WMAssignedProcessInstanceAttributes
WMAssignProcessInstanceAttribute Assign Process Instance Attributes WMAssignedProcessInstanceAttributes
9.3审计活动实例
下表确定的审计数据,用于与活动实例的状态改变和属性改变有关的WAPI函数。操作(Operation)是指在本规范中定义的WAPI函数,事件集合是指“WfMC审计数据规范”中的章节,并且事件标识了在审计数据记录中所报告的事件。
操作 审计数据记录 事件
WMChangeActivityInstancesState Change Activity Instance State WMChangedActivityInstanceState
WMChangeActivityInstanceState Change Activity Instance State WMChangedActivityInstanceState
WMAssignActivityInstancesAttribute Assign Activity Instance Attributes WMAssignedActivityInstanceAttributes
WMAssignActivityInstanceAttribute Assign Activity Instance Attributes WMAssignedActivityInstanceAttributes
9.4审计工作项
下表确定的审计数据,用于与工作项有关的WAPI函数。操作(Operation)是指在本规范中定义的WAPI函数,事件集合是指“WfMC审计数据规范”中的章节,并且事件标识了在审计数据记录中所报告的事件。
操作 审计数据记录 事件
WMAssignWorkitemAttribute Assign Workitem Attributes WMAssignedWorkitemAttributes
WMChangeWorkitemState Change Workitem State WMChangedWorkitemState
WMGetWorkitem Change Workitem State WMSelectedWorkitem (optional)
WMCompleteWorkitem Change Workitem State WMCompletedWorkitem
WMReassignWorkitem Assign/Reassign Workitem WMReassignedWorkitem
10.附录E:一致性配置
本章涉及特定的工作流发布服务实现所必须遵守的WAPI规范的标准的定义。我们定义了各种级别的一致性,而不是要求一个实现为遵守WfMC标准而支持上面所列的所有功能。本章定义了一组配置文件,每个配置文件都明确了一组操作,用于特定的使用场景。一个发布服务的实现可以选择遵守其中一些配置文件,而不必是所有的配置文件。
10.1基本原理和方法
下面的一致性配置文件是来自WAPI2规范的、非互斥的一组功能。供应商希望能够简化一致性处理,客户希望有一个简单的和可以理解的一致性声明,这些配置文件是这两种希望的拆衷。通过在可选的配置文件内所必须的WAPI功能的使用,一致性配置文件可达成这种折衷――依据定义,任意一个配置文件是可选的,但它的功能不是。在这种配置文件组织之后的基本原理如下:
它们的基础结构容易理解。对于可能不是非常熟悉规范及其演化历史的客户和供应商,框架结构是可以理解的。
它们通过避开“全部或全不”一致性框架结构,为供应商提供了灵活性。配置文件反映了当今工作流产品的一般性功能。供应商可以选择支持任意数量的配置文件,却不必支持全部的配置文件――我们将在每一个配置文件的基础上衡量一致性。例如,供应商可以选择仅提供工作表处理器支持,那么他只能获得相应的配置文件的一致性证书。
每个配置文件定义了一组功能,将业务价值以一种可以预测的、有意义的方式提供给客户。客户可以使用这些配置文件评估产品。每个配置文件,在供应商的产品和客户的使用该配置文件的客户端应用程序之间,提供了有意义的服务。客户希望该接口不同实现的行为是一致的;一致性是这些配置文件的简单本质的结果。
10.2实践和方针
供应商不能声明与本规范或任何其它WfMC规范一致,除非由WfMC特别授权。WfMC依照由WfMC定义的、可适用的测试规程,且仅仅依据对已发布规范的特定供应商实现的验证,授予该许可证。
当供应商选择支持某个一致性配置文件时,在供应商的实现中,该配置文件中的所有WAPI函数必须切实“做一些事情”。对于WAPI函数,如果它是配置文件的一部分,那么该函数返回“WM_Unsupported”错误消息是不可接受的。
每个供应商必须给出说明属性映射的文档;即,通过使用在每一个所支持的配置文件中的任何一个属性WAPI函数,其产品的任意一个属性都是可访问的。
供应商可能选择支持额外的WAPI函数,以及未在规范中定义的、供应商特有的API函数。对于这种情况,WfMC鼓励供应商记录这些函数调用(及与它们相关的函数映射),并作为其文档的附录。
对于所有不支持的WAPI函数,每个实现都必须包含程序桩。对任何不支持函数的调用必须返回“WM_Unsupported”错误消息。
10.3WAPI一致性配置文件和函数
对于每一个配置文件,定义了一个函数,允许应用程序检查实现是否支持特定的配置文件。每个实现必须包含所有的IsProfileSupported()函数。这些函数的格式如下:
WMIsProfileSupported()-这里是特定的一致性配置文件的名字-API命令试图允许应用程序查询,供应商的WM功能的实现是否支持某种一致性配置文件。
10.3.1 WMIsWorkListHandlerProfileSupported
名称
WMIsWorkListHandlerProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsWorkListHandlerProfileSupported通知用户应用程序,该WFMC实现完全支持所有的工作表处理器函数,这些函数构成工作表处理器一致性配置文件。
用途
该一致性配置文件的实现,为客户端应用程序,提供了外部的工作表处理器功能。
WMTErrRetType WMIsWorkListHandlerProfileSupported()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
工作表处理器一致性配置函数
下面的函数构成了工作表处理器一致性配置文件:
WMConnect
WMDisconnect
WMOpenWorkList
WMFetchWorkItem
WMCloseWorkList
WMGetWorkItem
WMCompleteWorkItem
WMReassignWorkItem
WMOpenWorkItemAttributesList
WMFetchWorkItemAttribute
WMCloseWorkItemAttributesList
WMGetWorkItemAttributeValue
WMAssignWorkItemAttribute
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与工作项的状态和属性的改变有关的审计事件,由审计数据类型“改变工作项状态”和“赋值工作项属性”描述。
10.3.2 WMIsProcessControlStatusProfileSupported
名称
WMIsProcessControlStatusProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsProcessControlStatusProfileSupported通知用户应用程序,该WFMC实现完全支持所有的过程控制状态函数,这些函数构成过程控制状态一致性配置文件。
用途
该一致性配置文件的实现,允许客户端应用程序选择并管理过程实例。
WMTErrRetType WMIsProcessControlStatusProfileSupported()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
过程控制状态一致性配置函数
下面的函数构成了过程控制状态一致性配置文件:
WMConnect
WMDisconnect
WMOpenProcessDefinitionsList
WMFetchProcessDefinition
WMCloseProcessDefinitionsList
WMCreateProcessInstance
WMStartProcess
WMTerminateProcessInstance
WMOpenProcessInstanceStatesList
WMFetchProcessInstanceState
WMCloseProcessInstanceStatesList
WMChangeProcessInstanceState
WMOpenProcessInstancesList
WMFetchProcessInstance
WMCloseProcessInstancesList
WMGetProcessInstance
WMOpenProcessInstanceAttributesList
WMFetchProcessInstanceAttribute
WMCloseProcessInstanceAttributesList
WMGetProcessInstanceAttributeValue
WMAssignProcessInstanceAttribute
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与过程实例的状态和属性的改变有关的审计事件,由审计数据类型“改变过程/子过程实例状态”和“赋值过程/子过程属性”描述。
10.3.3 WMIsProcessDefinitionProfileSupported
名称
WMIsProcessDefinitionProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsProcessDefinitionProfileSupported通知用户应用程序,该WFMC实现完全支持所有的过程定义函数,这些函数构成过程定义一致性配置文件。
用途
该一致性配置文件的实现,使客户端应用程序能够显示可利用的过程定义的列表,以及它们各自的状态。
WMTErrRetType WMIsProcessDefintionProfileSupported()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
过程定义一致性配置函数
下面的函数构成了过程定义一致性配置文件:
WMConnect
WMDisconnect
WMOpenProcessDefinitionStatesList
WMFetchProcessDefinitionState
WMCloseProcessDefinitionStatesList
WMChangeProcessDefinitionState
WMOpenProcessDefinitionsList
WMFetchProcessDefinition
WMCloseProcessDefinitionsList
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与过程定义的状态的改变有关的审计事件,由审计数据类型“改变过程定义状态”描述。
10.3.4 WMIsProcessAdminProfileSupported
名称
WMIsProcessAdminProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsProcessAdminProfileSupported通知用户应用程序,该WFMC实现完全支持所有的过程管理函数,这些函数构成过程管理一致性配置文件。
用途
该一致性配置文件的实现,允许客户端应用程序支持管理者对过程实例的全局操控。将该组函数与过程控制状态函数对比,后者仅作用于单个的过程实例。
WMTErrRetType WMIsProcessAdminProfileSupported()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
过程管理一致性配置函数
下面的函数构成了过程管理一致性配置文件:
WMConnect
WMDisconnect
WMChangeProcessInstancesState
WMTerminateProcessInstances
WMAbortProcessInstances
WMAbortProcessInstance
WMAssignProcessInstancesAttribute
WMOpenProcessInstanceStatesList
WMFetchProcessInstanceState
WMCloseProcessInstanceStatesList
WMOpenProcessDefinitionsList
WMFetchProcessDefinition
WMCloseProcessDefinitionsList
WMOpenProcessInstancesList
WMFetchProcessInstance
WMCloseProcessInstancesList
WMOpenProcessInstanceAttributesList
WMFetchProcessInstanceAttribute
WMCloseProcessInstanceAttributesList
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与过程实例的状态的改变有关的审计事件,由审计数据类型“改变过程/子过程实例状态”描述。
10.3.5 WMIsActivityControlStatusProfileSupported
名称
WMIsActivityControlStatusProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsActivityControlStatusProfileSupported通知用户应用程序,该WFMC实现完全支持所有的活动控制状态函数,这些函数构成活动控制状态一致性配置文件。
用途
该一致性配置文件的实现,允许客户端应用程序选择并管理活动实例。
WMTErrRetType WMIsActivityControlStatusProfileSupported()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
活动控制状态一致性配置函数
下面的函数构成了活动控制状态一致性配置文件:
WMConnect
WMDisconnect
WMOpenActivityInstanceStatesList
WMFetchActivityInstanceState
WMCloseActivityInstanceStatesList
WMChangeActivityInstanceState
WMOpenActivityInstancesList
WMFetchActivityInstance
WMCloseActivityInstancesList
WMGetActivityInstance
WMOpenActivityInstanceAttributesList
WMFetchActivityInstanceAttribute
WMCloseActivityInstanceAttributesList
WMGetActivityInstanceAttributeValue
WMAssignActivityInstanceAttribute
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与活动实例的状态和属性的改变有关的审计事件,由审计数据类型“改变活动实例状态”和“赋值活动实例属性”描述。
10.3.6 WMIsActivityAdminProfileSupported
名称
WMIsActivityAdminProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsActivityAdminProfileSupported通知用户应用程序,该WFMC实现完全支持所有的活动管理函数,这些函数构成活动管理一致性配置文件。
用途
该一致性配置文件的实现,允许客户端应用程序支持管理者对活动实例的全局操控。将该组函数与活动控制状态函数对比,后者仅作用于单个的活动实例。
WMTErrRetType WMIsActivityAdminProfileSupported ()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
活动管理一致性配置函数
下面的函数构成了活动管理一致性配置文件:
WMConnect
WMDisconnect
WMChangeActivityInstancesState
WMAssignActivityInstancesAttribute
WMOpenProcessDefinitionsList
WMFetchProcessDefinition
WMCloseProcessDefinitionsList
WMOpenActivityInstanceStatesList
WMFetchActivityInstanceState
WMCloseActivityInstanceStatesList
WMOpenActivityInstanceAttributesList
WMFetchActivityInstanceAttribute
WMCloseActivityInstanceAttributesList
相关审计事件
下列审计事件与包含在该配置文件中的操作相关,具体的实现,将按照审计数据配置文件的要求,记录该审计事件。
所有与活动实例的状态和属性的改变有关的审计事件,由审计数据类型“改变活动实例状态”和“赋值活动实例属性”描述。
10.3.7 WMIsEntityHandlerProfileSupported
名称
WMIsEntityHandlerProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsEntityHandlerProfileSupported通知用户应用程序,该WFMC实现完全支持所有的实体处理器函数,这些函数构成实体处理器一致性配置文件。
用途
该一致性配置文件的实现,为客户端应用程序提供了实体处理器功能。
WMTErrRetType WMIsEntityHandlerProfileSupported ()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
过实体处理器一致性配置函数
下面的函数构成了实体处理器一致性配置文件:
WMConnect
WMDisconnect
WMOpenProcessDefinitionsList
WMFetchProcessDefinition
WMCloseProcessDefinitionsList
WMCreateEntity
WMAddEntity
WMOpenEntitiesList
WMOpenOwnedEntitiesList
WMFetchEntity
WMCloseEntitiesList
WMRemoveEntity
WMDeleteEntity
10.3.8 WMIsAuditRecordProfileSupported
名称
WMIsAuditRecordProfileSupported-连接到WFM引擘,用于一系列的交互。
描述
WMIsAuditRecordProfileSupported通知用户应用程序,对于其它所有已实现的一致性配置文件,该WFMC实现完全支持所有的审计记录功能。
用途
该一致性配置文件的实现,为其它一致性配置文件,提供审计记录支持。
WMTErrRetType WMIsAuditRecordProfileSupported ()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
审记记录一致性配置函数
下面的指导方针应用于审计记录一致性配置文件。
前面任意一个WAPI2一致性配置文件的实现,可选地包含该配置文件所必需功能的审计记录的实现。为遵守用于该接口的审计记录规范,供应商必须为每一个已实现的配置文件实现审计记录。例如,如果供应商有一个工作表处理器和过程控制和状态配置文件的一致性实现,为满足审计记录规范一致性,他们必须为两种配置文件实现审计记录。
10.3.9 WMToolAgentProfileSupported
名称
WMToolAgentProfileSupported-连接并支持不同的工具代理,以便能够调用应用程序。
描述
WMToolAgentProfileSupported通知用户应用程序,该WFMC实现通过工具代理体系结构模型,完全支持应用程序调用。
用途
由于工作流集成的原因,该一致性配置文件的实现,提供了用于集成应用程序控制机制的接口。
WMTErrRetType WMToolAgentProfileSupported ()
参数名称 描述
无参数
错误返回值
WM_TRUE – 如果支持一致性配置文件
WM_FALSE – 如果不支持一致性配置文件
工具代理一致性配置函数
下面的指导方针应用于工具代理一致性配置文件。
前面任意一个WAPI2一致性配置文件的实现,可选地包含该配置文件所必需功能的工具代理的实现。为遵守用于该接口的工具代理规范,供应商必须实现工具代理接口,以便通过已实现的配置文件,能够调用应用程序。
下面的函数构成工具代理一致性配置文件:
WMTAConnect
WMTADisconnect
WMTAInvokeApplication
WMTARequestAppStatus
WMTATerminateApp
11.附录F:工作流定义函数
下面描述一组新的处理工作流模型定义的函数。第一节描述了一个抽象机,用于处理工作流模型的构建块-抽象实体。实体处理函数包括创建和删除实体,以及获取和设置其属性的函数。
实体可以是任何特定供应商所支持的、用于工作流定义的构建块。然而,供应商必须支持的、一组基本的实体(即,那些与可通过应用客户端接口访问的实例相对应的实体)被定义在“过程定义互换”文档中(接口1)。
本章的中间部分涉及将实体的抽象机与本规范引入的对象连接起来:实体要么属于发布服务,要么属于特定的过程定义;已描述的函数能够在发布服务的上下文或在具体过程定义中编辑工作流对象。
由于工作流定义函数的一般性结构,实现必须遵从过程定义互换过程模型的语义结构,在接口1----过程定义互换接口[过程定义互换过程模型,WfMC TC-1016]----中有定义。
过程模型实体属性的列表在“过程定义互换”文档----[过程定义属性列表,WfMC TC-1019]----中提供。
11.1实体处理函数
下面定义了一组普通的函数,用于处理发布服务作为实体维护的所有对象,不考虑其在工作流上下文环境中的特定语义。所有实体都有一个标识符,一个名字和其它特定类型的属性。在一个域内,ID是唯一的,在会话与会话以及客户与客户之间,保持不变。使用ID,可允许实体以一种持久的方式彼此引用。
11.1.1实体数据类型
typedef struct
{
WMTEntityID entity_id;
WMTText entity_type[NAME_STRING_SIZE];
WMTText entity_name[NAME_STRING_SIZE];
void * entity_private_data;
} WMTEntity;
11.1.2 WMCreateEntity
名称
WMCreateEntity-创建一个新的实体。
描述
这就是组成工作流定义的实体是如何被创建的。被创建的实体是持久的工作流实体。新实体的结构将被返回。实体的作用域要么为发布服务的上下文,要么为其它实体。
WMTErrRetType WMCreateEntity (
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTName entity_class,
in WMTName entity_name,
out WMTPEntity entity)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
scoping_entity 拥有新实体的实体。
entity_class 供应商定义的将被创建的实体类型,指定哪种实体将被创建。
entity_name 用户定义的名字,用于该实体。
entity 指向缓冲区的指针,该缓冲区将接受实体结构。
错误返回值
WM_SUCCESS
WM_INVALID_SCOPE
WM_INVALID_CLASS
WM_READONLY_CLASS
11.1.3 WMOpenEntitiesList
名称
WMOpenEntitiesList-指定并打开查询,生成实体列表,所有实体都符合过滤器选择标准(并隶属于指定的实体)。
描述
该命令指示工作流引擘打开查询,提供特定工作流参与者可利用的实体的列表,工作流参与者可能修改部分实体。该操作的典型用法是,在某个过程模型内,获取所有指定的实体类型的列表。该命令将返回查询句柄,代表匹配指定的属性值的实体列表。可选地,命令还将返回可获得的实体的总数。如果要求进行计数,但实现不支持该功能的话,则命令返回时,pcount的值为-1。如果pentity_def_filter为空,那么该函数,结合相应的提取调用,将返回指定域内所有实体的列表。
WMTErrRetType WMOpenEntitiesList (
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTPFilter pentity_def_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名 描述
psession_handle 指向结构的指针,该结构包含与本次行动有关的上下文信息。
scoping_entity 代表包含在查询结果中的实体的作用域的实体。
pentity_def_filter 与实体有关的过滤器。
count_flag 布尔值标记,指示是否返回实体的总数。
pquery_handle 指向结构的指针,该结构包含独一无二的查询信息。
pcount 符合过滤器条件的实体总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_FILTER
WM_INVALID_SCOPE
必要条件
关于过程模型的类型,不做任何要求。
关于在WFM引擘内是如何确定工作流参与者的,不做任何要求。
API基本原理
该命令和相应的提取(fetch)调用,允许工作流参与者检索实体,且工作流参与者已被授权操作该实体。
11.1.4 WMFetchEntity
名称
WMFetchEntity-从一组实体中,返回下一个实体,该组实体符合在WMOpenEntitiesList调用中所规定的选择标准。
描述
该命令指示WFM引擘从实体列表中提供一个实体,该实体列表对于特定的工作流参与者是可访问的,工作流参与者可能会修改其中的一些实体。假定在一个组织内,不是所有的过程都可以被所有的工作流参与者修改。在每次调用后,该提取(fetch)函数,以及本API中的其它提取函数,将返回后续项,一次一个。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。返回实体项的顺序与服务于该调用的工作流引擘有关,不应对实体项的返回顺序做任何假设。
WMTErrRetType WMFetchEntity (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPEntityID entity_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenEntitiesList查询命令返回。
entity_id 下一个实体的ID。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_ENTITY
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
11.1.5 WMCloseEntitiesList
名称
WMCloseEntitiesList-关闭对实体的查询。
描述
WMTErrRetType WMCloseProcessModelEntitiesList(
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenEntitiesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
11.1.6 WMDeleteEntity
名称
WMDeleteEntity-删除指定的实体。
描述
WMTErrRetType WMDeleteEntity (
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTPEntityID entity_id)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
scoping_entity 拥有将被删除的实体的实体。
entity_id 指向被删除实体的唯一ID的指针。
错误返回值
WM_SUCCESS
WM_INVALID_SCOPE
11.2实体属性操作
每个实体都有属性,它们包含特定的与实体相关的信息。这些值可通过WMGetEntityAttributeValue和WMSetEntityAttributeValue命令进行访问。对于每一个标准的实体类型,将定义标准的属性,以及供应商特意为其系统实现的其它一些属性。这样,供应商对实体进行了扩展。一些属性包含标量值,其它属性包含值集合。在本文档中,多值属性被称为“属性表”。在属性表中的值,通过如下函数进行访问:WMOpenEntityAttributeValueList,WMFetchEntityAttributeValue和WMCloseEntityAttributeValueList。Open 命令返回查询句柄,该句柄将被用于提取后续的值。多值属性通过使用WMClearEntityAttributeList和WMAddEntityAttributeValue进行更新。
11.2.1 WMOpenEntityAttributesList
名称
WMOpenEntityAttributesList-指定并打开查询,生成指定实体的所有符合过滤器标准的属性列表。
描述
该命令将返回一查询句柄,代表实体的属性列表。可选地,命令还将返回可获得属性的总数。如果要求进行计数,而实现不支持该功能的话,则命令返回时,pcount的值为-1。
为了将实体属性的列表提供给应用程序用户。该API的用法之一是,结合相应的提取和关闭调用,允许工作流应用程序查询工作流引擘,以访问为实体定义的、可利用的属性。如果pentity_attr_filter为NULL,那么该函数,结合相应的提取(fetch)调用,将返回实体所有可获得的属性列表。
WMTErrRetType WMOpenEntityAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTEntity_Id entity_id,
in WMTPFilter pentity_attr_filter,
in WMTBoolean count_flag,
out WMTPQueryHandle pquery_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
scoping_entity 作为指定实体的作用域的实体。
entity_id 指向结构的指针,该结构包含唯一的实体ID。
pentity_attr_filter 与实体属性相关的过滤器。
count_flag 布尔值标记,指示是否返回活动实例属性的总数。
pquery_handle 指向结构的指针,该结构包含唯一的查询信息。
pcount 该实体属性的总数。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_ENTIY
11.2.2 WMFetchEntityAttribute
名称
WMFetchEntityAttribute-从符合过滤器标准的实体属性列表中,返回下一实体属性。
描述
该命令返回实体属性。每次调用后,该提取函数将返回后续的实体属性。当函数返回错误WM_NO_MORE_DATA时,提取过程完成。函数将返回属性的名字、类型和长度;有效类型包括在本文档后面所定义的所有WMT数据类型,以及:
ListOf(Entity_Class)形式的表达式,其中Entity_Class是字符串,标识发布服务所支持的实体类。
ListOf(Data_Type)形式的表达式,其中Data_Type为WMT基础类型之一。
类型表的属性的值使用下面描述的WMT...EntityAttributeValuesList操作来处理。
WMTErrRetType WMFetchEntityAttribute (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTPAttrName pattribute_name,
out WMTPInt32 pattribute_type,
out WMTPInt32 pattribute_length,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenEntityAttributesList查询命令返回。
pattribute_name 指向属性名字的指针。
pattribute_type 指向属性类型的指针。
pattribute_length 指向属性值长度的指针。
buffer_size 缓冲区的大小。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
WM_NO_MORE_DATA
11.2.3 WMCloseEntityAttributesList
名称
WMCloseEntityAttributesList-关闭实体属性的查询。
描述
WMTErrRetType WMCloseEntityAttributesList (
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pquery_handle 特定查询句柄的标识,由WMOpenEntityAttributesList查询命令返回。
错误返回值
WM_SUCCESS
WM_INVALID_SESSION_HANDLE
WM_INVALID_QUERY_HANDLE
11.2.4 WMGetEntityAttributeValue
名称
WMGetEntityAttributeValue-返回实体属性的值、类型和长度。
描述
返回指定实体属性的值。参见WMOpenEntityAttributeValueList,以获取多值属性的所有元素。指定的属性的值将被拷贝到指定的pattribute_value缓冲区中。如果缓冲区不足以容纳整个值,那么只有能够容纳的部分被置于缓冲区中,且不返回错误。attribute_length将返回属性值的实际长度,不必是所返回数据的总计。
WMTErrRetType WMGetEntityAttributeValue (
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTPEntity entity_handle,
in WMTPAttrName attribute_name,
out WMTInt32 attribute_type,
out WMTInt32 attribute_length,
out WMTPVoid pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
scoping_entity 作为指定实体的作用域的实体。
entity_handle 指向实体结构的指针,将从该实体中检索属性。
attribute_name 属性的名字,将从中检索值。
attribute_type 被返回的值的类型
attribute_length 返回属性中值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区将接收属性的值。
buffer_size 缓冲区的大小。API使用该值,限制写入缓冲区数据的长度。
错误返回值
WM_SUCCESS
WM_NOT_SINGLE_VALUED
11.2.5 WMOpenEntityAttributeValueList
名称
WMOpenEntityAttributeValueList-打开实体的某一多值属性,分别检索其中的每一个值。该调用返回属性值的类型,并且返回一个句柄,用于从属性值表中提取单个的值。对集合中项目的计数是可选的。如果给定单值属性名,则返回错误。
描述
WMTErrRetType WMOpenEntityAttributeValueList(
in WMTPSessionHandle psession_handle,
in WMTPEntity scoping_entity,
in WMTPEntity entity_handle,
in WMTPAttrName attribute_name,
out WMTInt32 attribute_type,
out WMTPQueryHandle query_handle,
out WMTPInt32 pcount)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
scoping_entity 作为指定实体的作用域的实体。
entity_handle 指向代表实体的结构的指针。
attribute_name 多值属性的名字,将从中检索值。
attribute_type 因为集合只不过是多值属性,所以假定为同样类型的值的集合,这样,集合类型实际上是集合中单值的类型。
pquery_handle 该查询句柄用于WMFetchEntityCollectionValue和WMCloseEntityCollection。
pcount 该属性中值的总数。为可选项。-1表明该值不被支持。
错误返回值
WM_SUCCESS
WM_NOT_MULTI_VALUED
11.2.6 WMFetchEntityAttributeValue
名称
WMFetchEntityAttributeValue-检索实体属性。
描述
WMTErrRetType WMFetchEntityAttributeValue(
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle,
out WMTInt32 attribute_length,
out WMTPVoid pattribute_value,
in WMTInt32 buffer_size)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
pquery_handle 特定查询结构的指针,该结构由WMOpenEntityCollection创建。
attribute_length 返回属性中值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区将接受属性的值。
buffer_size 缓冲区的大小。API使用该值,限制写入缓冲区数据的长度。
错误返回值
WM_SUCCESS
11.2.7 WMCloseEntityAttributeValueList
名称
WMCloseEntityAttributeValueList-关闭查询句柄,该查询句柄用于检索属性(多值属性)值的集合。
描述
WMTErrRetType WMCloseEntityAttributeValueList(
in WMTPSessionHandle psession_handle,
in WMTPQueryHandle pquery_handle)
参数名称 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
pquery_handle 指向查询结构的指针,该结构由WMOpenEntityCollection创建。
错误返回值
WM_SUCCESS
11.2.8 WMAssignEntityAttributeValue
名称
WMAssignEntityAttributeValue-设置实体属性。
描述
WMTErrRetType WMAssignEntityAttributeValue (
in WMTPSessionHandle psession_handle,
in WMTPEntity entity_handle,
in WMTPAttrName attribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
entity_handle 指向实体结构的指针,将从该实体中检索属性。
attribute_name 将被赋值的属性的名字。
attribute_type 值的类型。
attribute_length 缓冲区中值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区包含属性的值。
错误返回值
WM_SUCCESS
WM_NOT_SINGLE_VALUED
11.2.9 WMClearEntityAttributeList
名称
WMClearEntityAttributeList-删除多值属性的所有值。
描述
WMTErrRetType WMClearEntityAttributeList(
in WMTPSessionHandle psession_handle,
in WMTPEntity entity_handle,
in WMTPAttrName attribute_name)
参数名称 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
entity_handle 指向实体结构的指针,将从该实体中删除属性的值。
attribute_name 将被删除值的属性的名字。
错误返回值
WM_SUCCESS
WM_NOT_MULTI_VALUED
11.2.10 WMAddEntityAttributeValue
名称
WMAddEntityAttributeValue-为实体的多值属性赋值。
描述
WMTErrRetType WMAddEntityAttributeValue(
in WMTPSessionHandle psession_handle,
in WMTPEntity entity_handle,
in WMTPAttrName attribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPVoid pattribute_value)
参数名称 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
entity_handle 指向实体结构的指针,将为该实体的属性赋值。
attribute_name 将被赋值的集合(多值属性)的名字。
attribute_type 值的类型
attribute_length 缓冲区中值的长度。
pattribute_value 指向缓冲区的指针,该缓冲区包含属性的值。
错误返回值
WM_SUCCESS
WM_NOT_MULTI_VALUED
11.3过程建模函数
下面的一组函数支持工作流过程模型的创建和修改。过程模型由被称为过程定义实体的构建块构成。活动定义(过程模型的节点,当过程模型执行时,转变成活动实例)和迁移(过程定义之间的连接)便是过程定义实体的例子。上面定义的一般实体处理函数可用于修改过程模型的内容。下一节将描述这样一组标准实体,它们可从“WfMC过程定义规范”文档中获得。
11.3.1 WMOpenWorkflowDefinition
名称
WMOpenWorkflowDefinition-准备编辑工作定义实体(也就是在发布服务域级别)。
描述
该命令通知发布服务,准备编辑由它所控制的工作流定义实体。这是一个起始点,用于获取所有组成工作流定义的实体。该实体将作为域(scoping)实体,用于由发布服务所控制的更深一层实体的大多数请求。
WMTErrRetType WMOpenWorkflowDefinition (
in WMTPSessionHandle psession_handle,
in WMTText name(NAME_STRING_SIZE)
in WMTText scope(NAME_STRING_SIZE)
out WMTPEntity workflow_definition_handle)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
Name 编辑上下文的标识符。
Scope 编辑上下文的作用域。
pquery_handle 指向结构的指针,该结构包含独一无二的查询信息。
workflow_definition_handle 代表工作流编辑上下文的实体的名柄。该实体将被用作域实体,用于随后对发布服务所拥有的实体的编辑。实体拥有类型“工作流定义”,名字可从第二个输入参数取得,且没有附加的属性。
错误返回值
WM_SUCCESS
11.3.2 WMCloseWorkflowDefinition
名称
WMCloseWorkflowDefinition-允许系统释放所有的资源,在发布服务内,维护这些资源用于处理对实体的请求。
描述
该命令通知发布服务,准备编辑由它所控制的工作流定义实体。对于获取所有的组成工作流定义的实体,这是一个起始点。该实体将作为域(scoping)实体,用于由发布服务所控制的更深一层实体的大多数请求。
WMTErrRetType WMCloseWorkflowDefinition(
in WMTPSessionHandle psession_handle,
in WMTPEntity workflow_definition_handle)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
workflow_definition_handle 指向实体结构的指针,该结构代表发布服务的内容。假定一旦工作流定义被关闭,则该上下文作用域内的所有实体都将不可访问。
错误返回值
WM_SUCCESS
11.3.3 WMCreateProcessDefinition
名称
WMCreateProcessDefinition-创建新的过程定义。
描述
在系统内,创建一个实体用于新的空过程定义。尔后,可在空过程定义内创建实体。
WMTErrRetType WMCreateProcessDefinition(
in WMTPSessionHandle psession_handle,
out WMTPProcDefID pproc_def_id)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
pproc_def_id 指向新过程定义ID的指针,该ID用于被创建的过程定义。
错误返回值
WM_SUCCESS
11.3.4 WMDeleteProcessDefinition
名称
WMDeleteProcessDefinition-删除过程定义。
描述
从当前会话所定义的域内,删除一过程定义。
WMTErrRetType WMCreateProcessDefinition(
in WMTPSessionHandle psession_handle,
out WMTPProcDefID pproc_def_id)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
pproc_def_id 指向将被删除的过程定义的指针。
错误返回值
WM_SUCCESS
11.3.5 WMOpenProcessDefinition
名称
WMOpenProcessDefinition-准备编辑过程模型。
描述
该命令通知发布服务,准备编辑指定的过程模型。这是一个起始点,用于获取所有组成过程定义自身的实体。该实体将作为域(scoping)实体,用于过程定义内更深一层实体的大多数请求。
WMTErrRetType WMOpenProcessDefinition (
in WMTPSessionHandle psession_handle,
in WMTPProcDefinition proc_definition
out WMTPEntity proc_model_handle)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
proc_definition 将被编辑的过程定义。
proc_model_handle 代表过程模型的实体的句柄。该实体将作为域实体,用于随后的过程定义的编辑。
错误返回值
WM_SUCCESS
11.3.6 WMCloseProcessDefinition
名称
WMCloseProcessDefinition-允许系统释放所有的资源,在过程定义内,维护这些资源用于处理对实体的请求。
描述
WMTErrRetType WMCloseProcessDefinition(
in WMTPSessionHandle psession_handle,
in WMTPEntity proc_model_handle)
参数名 描述
psession_handle 指向包含会话信息的结构的指针,该结构由WMConnect调用创建并返回。
proc_model_handle 指向实体结构的指针,该结构代表过程定义的内容。假定一旦过程定义被关闭,则该上下文作用域内的所有实体都将不可访问。
错误返回值
WM_SUCCESS
11.4标准的过程建模实体类型
下面描述了每个工作流引擘及其(必须的和可选的)特性应支持的标准的实体类型。对于每个类型,特定的实现可能有附加的类型和附加的属性。这些类型是ProcessDefinition、ActivityDefinition、Transition、Participant、Application和ProcessData。实体类型及其属性来自于“WfMC过程定义接口规范”,该规范描述了工作流过程定义语言(WPDL),更进一步的细节,请参考该文档。为适合于工作流客户端应用程序的要求,对WPDL中使用的属性名做了一些调整。
11.4.1附加的数据类型
typedef struct
{
WMTText name[NAME_STRING_SIZE];
}WMTName;
typedef struct
{
WMTText date[NAME_STRING_SIZE];
}WMTDate;
typedef struct
{
WMTInt32 duration;
}WMTDuration;
typedef struct
{
WMTInt32 cost;
}WMTCost;
typedef struct
{
WMTText documentation[1024];
}WMTDocumentation;
typedef struct
{
WMTText expression[256];
}WMTCondExpression; // 条件表达式,可使用表达式语法做进一步细化
typedef struct
{
WMTText expression[256];
}WMTPartExpression; // 条件表达式,可使用表达式语法做进一步细化
typedef struct
{
WMTText expression[256];
}WMTApplicationSpec; // 应用程序标识符,可进一步细化...
ProcessData实体类型所使用的属性结构,用于定义复杂的数据结构;如果类型为COMPLEX话,属性的值可以为ProcessDataID,否则为缺省值。
typedef struct
{
WMTText attribute_name[NAME_STRING_SIZE];
WMTInt32 attribute_type; // 属性的类型
WMTInt32 attribute_length; // 属性值的长度
WMTPText pattribute_value; // 指向属性值的指针
}WMTAttribute;
11.4.1.1 WMAddTransition
名称
WMAddTransition-在过程定义中,增加迁移定义。
描述
该命令将返回迁移定义实体,第二个参数所传递的过程定义拥有该实体。第三和第四参数所传递的、将是被连接在一起的活动定义。
WMTErrRetType WMAddTransition (
in WMTPSessionHandle psession_handle,
in WMTPProcModelID pproc_model_id,
in WMTPActDefID psource_act_def_id,
in WMTPActDefID ptarget_act_def_id,
out WMTPEntity entity_handle
)
参数名称 描述
psession_handle 指向结构的指针,该结构包含由WMConnect调用创建并返回的会话信息。
pproc_model_id 指向过程模型的指针,该过程模型拥有新的迁移。
psource_act_def_id 指向迁移定义的源活动的指针。
ptarget_act_def_id 指向迁移定义的目标活动的指针。。
entity_handle 指向缓冲区的指针,该缓冲区将接受代表迁移的结构。
错误返回值
WM_SUCCESS
11.4.1.2 WMAddProcessDataAttribute
名称
WMAddProcessDataAttribute-增加属性到属性列表中,该属性列表定义了数据结构。
描述
WMTErrRetType WMAddProcessDataAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcModID pproc_model_id,
in WMTPProcDataID pproc_data_id,
in WMTPAttrName pattribute_name,
in WMTInt32 attribute_type,
in WMTInt32 attribute_length,
in WMTPText pattribute_value)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_model_id 指向结构的指针,该结构包含过程模型实体ID。
pproc_data_id 指向结构的指针,该结构包含过程数据定义标识符,将对其所代表的属性进行赋值。
pattribute_name 指向属性的名字的指针。
attribute_type 被返回的值的类型
attribute_length 属性值的长度。
pattribute_value 指向缓冲区的指针,由客户端应用程序提供,属性的值将被置于该缓冲区中。可以是其它过程数据实体的标识符。
错误返回值
WM_SUCCESS
11.4.1.3 WMRemoveProcessDataAttribute
名称
WMRemoveProcessDataAttribute-从属性列表中删除属性,该属性列表定义了数据结构。
描述
WMTErrRetType WMRemoveProcessDataAttribute (
in WMTPSessionHandle psession_handle,
in WMTPProcModID pproc_model_id,
in WMTPProcDataID pproc_data_id,
in WMTPAttrName pattribute_name)
参数名称 描述
psession_handle 指向结构的指针,该结构包含本次行动的上下文信息。
pproc_model_id 指向结构的指针,该结构包含过程模型实体ID。
pproc_data_id 指向结构的指针,该结构包含过程数据定义标识符,将对其所代表的属性进行赋值。
pattribute_name 指向属性的名字的指针,在数据结构内,属性名必须唯一。
错误返回值
WM_SUCCESS
12.附录G:状态
下面为本文中所定义的每一个主要的工作流对象,描述一组标准的有效的状态。状态被组织成不同的粒度级别,低级别的状态细化高级别的状态。发布服务的实现可以选择支持任意粒度级别的状态,忽略状态或增加状态到下面定义的列表中。特定工作流对象的状态可以仅只使用其名字进行标识,或指定其全名,在全名中,包含使用“. ”符号修饰的父状态。具体的例子,参见下面过程实例状态一节。
12.1过程实例状态
过程实例的顶层状态分为两类:open和closed。open状态有两个子状态,running和notRunning;notRunning也有两个子状态,notStarted和suspended。下面的列表详细地描述了状态:
• open – 过程实例正在发布。
• open.running – 过程实例正在执行。
• open.notRunning – 过程实例暂没有执行。
• open.notRunning.notStarted – 过程实例已被创建,但是还没有启动。
• open.notRunning.suspended – 过程实例的执行被暂停。
• closed – 过程实例的执行已完成。
• closed.aborted – 过程实例的执行已被用户异常中止(参见WMAbortProcessInstance规范,异常中止(abortion)与终止(termination)的对照定义) 。
• closed.terminated – 过程实例的执行已被用户终止(参见WMTerminateProcessInstance规范,终止(termination)与异常中止(abortion)的对照定义) 。
• closed.completed – 过程实例的执行正常地完成(也就是说,没有用户的强制干予)。
一个实现可能决定,仅仅对某些级别的状态细化提供支持,或删除某些状态;例如,有效的状态集合包括:
• open和closed
• notRunning,running和closed
• notStarted,running,completed和terminated
• ...
下图显示了状态和可能的状态迁移;这里,仅仅显示底层状态的迁移,对于较高层状态的迁移可以很容易地推导出来;举例来说,从open到closed,或从notRunning到running,存在一条迁移,但两种情况都不存在反向迁移。
这里,对各种状态迁移的做简短讨论:
当过程实例被创建时,将获得一个初始状态,为open.notRunning.notStarted(或仅为open,或open.notRunning,取决于所支持的粒度级别)。
可以从notRunning状态迁移到running状态;从running迁移到notRunning父状态,则只能通过迁移到suspended子状态实现。
当过程实例的执行完成时,它的状态将为closed状态之一,具体的状态取决于结束执行的方式(一般为completed,terminated或aborted)。由于completed状态代表过程实例的正常结束,所以它只能通过running状态到达;其它closed子状态通过WMAbrtProcessInstance或WMTerminateProcessInstance操作到达。
closed状态是最终的状态,即,从closed状态到open状态,不存在迁移。
12.2活动实例状态
活动实例的顶层状态分为两类:open和closed。open状态有三个子状态,running、notRunning和suspended。下面的列表详细地描述了状态:
• open – 活动实例是活跃的。
• open.running – 活动实例正在执行。
• open.notRunning – 活动实例已准备完毕,但还没有被启动。
• open.suspended – 活动实例的执行被暂停。
• closed – 活动实例的执行已完成。
• closed.aborted – 活动实例的执行已被异常中止,可能是由于其所属的过程实例的异常中止(参见WMAbortProcessInstance规范,异常中止(abortion)与终止(termination)的对照定义) 。
• closed.terminated –活动实例的执行已被终止,可能是由于其所属的过程实例的终止(参见WMTerminateProcessInstance规范,终止(termination)与异常中止(abortion)的对照定义) 。
• closed.completed – 活动实例的执行正常地完成(也就是说,没有用户的强制干予,或由于其所属过程实例的状态改变。)
下图显示了状态及可能的状态迁移;这里,仅仅显示底层状态的迁移,而较高层状态的迁移可以很容易地推导出来。
这里,对各种状态迁移的做简短讨论:
当活动实例被创建时,将获得一个初始状态,为open.notRunning。
notRunning和suspended状态之间的迁移,通常由发布服务发起,由所属过程实例相应的状态改变触发;它们也可以通过WMChangeActivityInstanceState操作触发。
notRunning和running状态之间的迁移,可以由应用程序客户端用户通过WMGetWorkitem操作发起,不过,这取决于特定的发布服务;另外,迁移既可以由发布服务发起,也可以由应用程序客户端用户通过WMChangeWorkitemState或WMChangeActivityState操作发起。
running和suspended状态之间的迁移,通常由发布服务发起,作为相应的状态所属的过程实例状态改变的结果;作为WMChangeWorkitemState或WMChangeActivityInstanceState操作的结果,发布服务也允许执行这种迁移。
当活动实例的执行完成时,它的状态将为closed状态之一,具体的状态取决于结束执行的方式(一般为completed,terminated或aborted)。由于completed状态代表活动实例的正常结束,所以它只能通过running状态到达;
closed状态是最终的状态,即,从closed状态到open状态,不存在迁移。
12.3工作项状态
工作项的顶层状态分为两类:open和closed。open状态有三个子状态,running、notRunning和suspended。下面的列表详细地描述了状态:
• open – 工作项是活动的。
• open.running – 工作项正在执行。
• open.notRunning – 工作项被指派给工作流参与者,但还没有被启动。
• open.suspended – 工作项的执行被暂停。
• closed – 工作项的执行已完成。
• closed.aborted – 工作项的执行已被异常中止,可能是由于其所属的过程实例的异常中止(参见WMAbortProcessInstance规范,异常中止(abortion)与终止(termination)的对照定义) 。
• closed.terminated –工作项的执行已被终止,可能是由于其所属的过程实例的终止(参见WMTerminateProcessInstance规范,终止(termination)与异常中止(abortion)的对照定义) 。
• closed.completed –工作项的执行正常地完成(也就是说,没有用户的强制干予,或由于其所属过程实例的状态改变) 。
下图显示了状态及可能的状态迁移;这里,仅仅显示底层状态的迁移,而较高层状态的迁移可以很容易地推导出来。
这里,对各种状态迁移的做简短讨论:
当工作项被创建时,将获得一个初始状态,为open.notRunning。
notRunning和suspended状态之间的迁移,通常由发布服务发起,并作为所属过程实例相应的状态改变的结果;发布服务还允许通过WMChangeWorkitemState操作完成这种迁移。
notRunning和running状态之间的迁移,可以由应用程序客户端用户通过WMGetWorkitem操作发起,不过,这取决于特定的发布服务;另外,迁移既可以由发布服务发起,也可以由应用程序客户端用户通过WMChangeWorkitemState操作发起,或作为WMChangeActivityInstanceState对相关活动实例的操作的结果。
running和suspended状态之间的迁移,通常由发布服务发起,作为相应的状态所属过程实例状态改变的结果;发布服务还允许通过WMChangeWorkitemState操作完成这种迁移。
当工作项的执行完成时,它的状态将为closed状态之一,具体的状态取决于结束执行的方式(一般为completed,terminated或aborted)。由于completed状态代表活动实例的正常结束,所以它只能通过running状态到达(通过WMCompleteWorkitem操作)。
closed状态是最终的状态,即,从closed状态到open状态,不存在迁移。