基于状态的工作流管理系统(WFMS)和可执行的业务流程语言(
BPEL
)之间主要的差别有如下三点:
1、面向消息(message oriented) VS 基于状态(stated based):基于状态的WMFS系统主要对图元(Activity)状态的变迁管理,
工作流引擎维护和计算活动之间的转移条件。而 BPEL 则是由一个消息激发流程的创建和运行, BPEL 流程内部每个Service都会被一个onMessage消息上配置的event handler触发,等到执行了event handler事件后会产生下一个活动执行的onMessage消息源,同时触发下一个活动执行。
2、流程实例ID VS 消息相关性:基于状态的WFMS系统会在创建流程实例时为每个实例产生一个唯一ID标示。客户端可以通过引擎提供的相关API调用这个流程实例执行、停止、挂起。
BPEl则是用一组唯一标示的消息来确定要创建的流程实例是哪个,这个唯一标示的消息用correlation(相关性)包装起来,其中定义了消息的名称,消息个数,消息的类型。 BPEL 引擎会自定的匹配这组消息到一个流程定义的receive活动上,最后创建一个新的流程实例。
3、工作流引擎API VS 抽象服务端口:要执行一个XPDL的工作流文件必须要用工作流引擎提供的一组API去调用,以便管理控制、执行和访问流程实例。例如:启动一个流程实例必须要告诉流程定义的名称。
而 BPEL 则是做为一个服务暴露给外部调用,用的是面向服务(service oriented)的概念,例如调用一个bpel需要告诉激发bpel的消息相关性和业务伙伴是谁。相关性和业务伙伴分别是用WSDL描述的消息和服务,bpel内部调用的最终是一个Web Service。
1、面向消息(message oriented) VS 基于状态(stated based):基于状态的WMFS系统主要对图元(Activity)状态的变迁管理,
工作流引擎维护和计算活动之间的转移条件。而 BPEL 则是由一个消息激发流程的创建和运行, BPEL 流程内部每个Service都会被一个onMessage消息上配置的event handler触发,等到执行了event handler事件后会产生下一个活动执行的onMessage消息源,同时触发下一个活动执行。
2、流程实例ID VS 消息相关性:基于状态的WFMS系统会在创建流程实例时为每个实例产生一个唯一ID标示。客户端可以通过引擎提供的相关API调用这个流程实例执行、停止、挂起。
BPEl则是用一组唯一标示的消息来确定要创建的流程实例是哪个,这个唯一标示的消息用correlation(相关性)包装起来,其中定义了消息的名称,消息个数,消息的类型。 BPEL 引擎会自定的匹配这组消息到一个流程定义的receive活动上,最后创建一个新的流程实例。
3、工作流引擎API VS 抽象服务端口:要执行一个XPDL的工作流文件必须要用工作流引擎提供的一组API去调用,以便管理控制、执行和访问流程实例。例如:启动一个流程实例必须要告诉流程定义的名称。
而 BPEL 则是做为一个服务暴露给外部调用,用的是面向服务(service oriented)的概念,例如调用一个bpel需要告诉激发bpel的消息相关性和业务伙伴是谁。相关性和业务伙伴分别是用WSDL描述的消息和服务,bpel内部调用的最终是一个Web Service。