传统中间件主要解决异构网络环境下分布式应用软件的互连接与互操作问题,现在,更为广义的中间件代表了处于系统软件和应用软件之间的中间层次的软件。工作流能够为企业应用提供业务流程建模、管理和控制功能,可以应用于电子政务中的一站式办公、电子商务中的流程集成和金融信贷业务等领域,成为近期增长较快的领域。
工作流如何有效为应用软件的开发和运行提供高效支撑,技术标准不可缺少, 表现为使用标准的API、提供标准化的功能等方面,关于标准技术的讨论(如XPDL,BPEL)在网络上的文章也很多。但除此之外,工作流如何在运行模式,事务支持和应用调用方式等方面为应用系统提供更丰富,更开放以及更高效的结合方式,成为在技术上选择工作流中间件的重要标准。本文将由此做以分析。
1.工作流系统在应用中的两种运行模式
应用系统需要在工作流管理系统之上开发实现自己的系统。一般而言,工作流执行服务有以下两种运行方式:
模式一:嵌入运行模式(Build-in)
工作流引擎以一个工具包的形式向应用系统提供服务接口,供应用程序在同一个Java虚拟机下调用。在这种模式下,工作流引擎可作为业务流程建模、管理和控制功能的基础构件存在。
模式二:独立运行模式(Independence)
在这种模式下,应用程序与工作流引擎分别运行在不同的服务器下,工作流执行服务独立运行,对外提供流程控制服务。应用系统需要开发自己的在其系统内运行的任务表处理器。应用程序与工作流引擎之间通过JMS、RMI、SOAP等协议进行通讯。工作流系统应为应用程序提供基于这些通讯协议的接口。现在,越来越多的轻量级异构协议实现(如ActiveMQ, Hessian, Burlap等)为工作流执行服务的实现提供了更多的选择。
2.与应用事务的结合
在工作流系统之上开发的业务系统应对应用的事务与工作流引擎的事务进行统一管理。如某个提交任务的过程包括必要的业务处理和调用工作流API的流程处理,这两种逻辑应该应被作为一种原子事务操作统一处理。
当工作流引擎做为构件形式运行于应用系统的环境中(即上文所述模式一),对于事务的管理方式有以下三种:
无事务管理:小型项目,当并发量不大,或业务过程简单时,可以采取无事务的管理模式;
独立管理模式:应用系统与工作流管理分别管理自己的事务,二者不进行统一控制。这种模式也仅适用于某些小型项目的开发。这种事务管理示意图如下图所示。
应用统一管理模式:由应用对应用的业务执行过程及流程控制过程进行统一的开始、提交、回滚的事务控制。这是最为安全可靠的应用模式,可以严格的保证业务数据与流程数据的状态一致性。
当采用工作流执行服务独立运行的应用模式时,对事务的管理以下三种:
无事务管理:小型项目,当并发量不大,或业务过程简单时,可以采取无事务的管理模式;
独立管理模式:应用系统与工作流管理分别管理自己的事务,二者不进行统一控制。这种模式也仅适用于某些小型项目的开发。
分布式事务管理模式:工作流引擎与应用系统使用符合JTS规范的事务管理器进行事务管理。事务的开始与结束由应用系统统一利用JTS事务管理规范进行管理。
3.与应用调用方式的结合:
在WFMC组织提供的工作流参考模型中,接口2/3只是简要定义了客户端应用程序和工作列表处理程序之间的交互和调用,但没有针对引擎的实现提供具体的标准。大部分工作流产品或多或少引入工具代理(ToolAgent),在业务系统实现时,作为业务组件而存在的应用程序,其被调用的方式一般有以下四种形式:
方式一:由工作流引擎自动调用应用程序。在这种情况下,应用程序所属的活动为由引擎自动执行的活动。引擎创建出这个活动后,立即启动活动,并由工作流引擎通过ToolAgent自动调用应用程序。
方式二:应用程序何时被执行由应用系统决定,应用系统首先从引擎获取需要执行的应用程序,通过调用工作流引擎所提供的接口,由工作流引擎根据应用程序所指定的工具代理激活应用程序。
方式三:应用程序何时被执行由应用系统决定。应用系统首先从引擎获取需要执行的应用程序,应用程序对象记录了它所需要的工具代理,然后通过工具代理激活应用程序的执行。
方式四:应用程序何时被执行由应用系统决定。应用系统首先从引擎获取需要执行的应用程序,并直接执行之。
在瘦客户端(B/S形式)下,应用可不单独开发单独的工具代理实现,即第四种调用方式。
4. 与应用事件的结合:
流程实例对象,活动实例对象和工作项实例对象等可以支持事件接口,允许应用实现以构件化形式存在的事件插件,并将此实现注册到工作流定义对象中。在业务应用系统在执行工作流API控制工作流对象时,由工作流系统自动触发事件实现,这样使工作流开发的应用系统的各个部分不是“build into”,而是“plug-in into”,即达到配置化。
应用可以将某业务逻辑作为创建流程的事件进行定义,则工作流应用系统在创建流程时将会自动执行此业务逻辑。工作项也可以定义一组任务提醒事件,那么在流程运行阶段,当某执行人有新的工作项产生时,除了在该执行人的标准任务处理器中增加任务记录外,还可以按照定义以一种消息的方式将此传递给执行人。可能的任务消息提醒方式为邮件提醒,即时消息提醒等。如果应用系统需要实现其他的个性化任务提醒方式(如手机提醒),也可通过这种可扩展的事件机制与工作流系统集成。
工作流与应用结合的方面还有很多,如在WfMC规范中,只是定义了参与者及参与者类型,并未提供完整的组织模型结构。现在,国内外著名厂商纷纷推出了自己的工作流产品,如IBM的MQWorkflow、BEA的WebLogic Workshop、Oracle工作流等。国内的产品主要有中创软件商用中间件公司的InforFlow、西安协同软件的SynchroFLOW、东方通科技的TongFlow等,希望本文能够抛砖引玉,并在技术上如何选择工作流产品提供帮助。