基于微内核的工作流引擎研究
2011-06-06余周侯志松庄莹菲左现刚
余周,侯志松,庄莹菲,左现刚
(河南科技学院,河南新乡,453003)
工作流引擎是工作流管理系统的核心所在,是工作流管理系统运行和控制的中心,它直接决定整个系统的运行效率和性能.为了应付瞬息万变的市场变化,企业业务流程必须跟随市场变化做出相应调整,然而,由于当前现有工作流引擎结构上的局限性,导致工作流管理系统不能适应快速的市场变化,限制了企业的发展.因此,本文针对传统工作流引擎的不足,遵循工作流管理联盟的标准,研究并设计一个基于微内核的工作流引擎.
1 现有工作流引擎的局限性
工作流管理联盟对工作流管理系统的定义是:是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行[1],工作流管理联盟提出的工作流参考模型见图1.
从图1可以看出:工作流引擎位于工作流管理系统的核心地位,负责解释业务流程定义、执行业务流程实例、控制业务活动运行、为参与者分配任务,并完成与其他工作流引擎的交互和通信.同时,工作流管理联盟还制定了描述业务流程定义的元模型,以及流程定义之间互相转换的流程定义语言规范,详细规定了业务流程定义、业务活动、业务逻辑、变迁条件和参与者等元素的描述方法[2].
但是,现有的工作流引擎通常采用宏内核结构,即一个工作流引擎就是一个系统内核.宏内核结构的工作流引擎将业务活动的调度、任务分配和流程实例执行等服务集中在一个组件中.此时,如果需要修改系统某一功能,将不可避免的影响到上述功能相对稳定的服务组件.因此,采用宏内核结构实现的工作流引擎功能集中、结构臃肿,增加了系统重构的成本,降低了系统的灵活性.
2 基于微内核的工作流引擎
根据工作流引擎中业务活动调度和任务分配功能相对稳定、独立的特性,将这些功能从工作流引擎中抽取出来,形成工作流引擎的微内核.此时,当某项工作流引擎功能需要改变时,仅需修改该功能组件即可,而不会影响到工作流引擎的内核,从而降低了系统的重构成本,提高了系统的灵活性.
本文参照工作流管理联盟的规范,采用基于XML的流程定义语言描述业务流程,实现基于微内核的工作流引擎.该工作流引擎采用微内核架构,分离服务组件和调度功能,采用组件技术开发工作流引擎模块,进而降低模块之间的耦合度,从结构上提高工作流引擎的灵活性和可维护性.
2.1 流程定义元模型
工作流引擎最重要的职责是解释业务流程,实现业务流程实例的运行.为了实现这一功能,现实世界的企业业务运营过程必须转化为工作流引擎能够理解的流程定义,工作流引擎才能解释业务流程,创建相应的流程实例,完成业务流程在计算机世界的自动执行.
工作流模型是业务流程的抽象描述,是现实世界业务流程向计算机内部表示转换的工具.工作流模型采用简单直观的形式对复杂的流程进行抽象,为人们提供一个描述世界的参考性框架.在一个工作流模型中,除了需要提供描述业务流程结构的流程元素外,还需要提供表示流程执行逻辑和流程业务功能的变迁和动作.因此,工作流模型必须包含一个用来描述工作流模型的基本元模型.流程定义元模型是现实世界中业务流程在计算机内部的结构化表示方法,用来建模并生成一个能被工作流引擎解释并执行的流程定义.所谓的元模型就是描述模型的模型.在工作流管理系统中,流程定义元模型是工作流模型中描述流程定义内在联系的模型,反映了工作流模型中所有流程元素的结构功能和内在联系.使用流程定义元模型,可以建立一个与具体实现无关的流程定义.
为了简洁有效的描述业务流程,实现业务流程在现实世界与计算机世界的无缝转换,在参考工作流管理联盟规范的基础上,开发并定义一个流程定义元模型.在流程定义元模型中,工作流定义、活动、参与者、变迁条件等实体对象的关系如图2所示.
图1 工作流参考模型
图2 流程定义元模型
从图2可以看出:流程定义元模型的核心是活动.流程定义与活动、流程定义与工作流相关数据都是一对多的关系.也就是说:一个流程定义可以由多个活动实体和一系列的工作流相关数据组成.参与者、工作流相关数据、被调用应用程序,以及变迁条件与活动之间都是多对多的关系.即:一个活动可以引用多个不同的角色、使用多个工作流相关数据、调用多种类型的应用程序工具,并能在不同的变迁条件中导航.同时,同一个参与者、工作流相关数据、变迁条件或应用程序工具也可以被多个活动所使用.工作流元模型的属性要素主要由以下几种:
(1)工作流类型定义:用来描述业务流程,反映业务流程的目的和目标.其主要属性有:流程定义的名称、版本号、开始/结束条件和安全、审查、控制数据等.
(2)活动:活动对应业务流程中的活动和任务,反映了企业业务运营的功能实现和功能操作.活动可以由人工执行,也可以自动执行,或者调用相关的应用程序以完成业务流程指定的工作.活动的主要属性包括活动的名称、类型以及该活动的约束条件等.
(3)变迁条件:用来在活动和任务之间导航,决定活动或任务的执行属性,反映企业业务的运营规则.
(4)工作流相关数据:描述业务流程涉及到的数据,包括流程控制数据、流程相关数据和应用数据.
(5)参与者:用来对组织结构进行分类,简化流程任务的分配.参与者是活动的具体执行者,它可以是人,也可以是能够自动执行的应用程序.
(6)被调用程序:描述与业务流程协作,共同完成企业业务运营的工具和手段.
2.2 基于微内核的工作流引擎的系统架构
依据服务组件和调度功能分离的原则,将业务活动调度和任务分配等相对稳定的功能抽取出来,构建系统的核心层.工作流引擎的架构如图3所示.
图3 工作流引擎架构
如图3示,基于微内核的工作流引擎分为四个层次,各个层次的功能如下:
(1)接口层:接口层是工作流引擎的外部接口.外部应用程序通过该接口与工作流引擎进行交互,实现业务流程的操作与管理.该接口符合工作流管理联盟的工作流管理规范,可实现工作流产品之间的无缝连接.本层次可分为应用程序接口模块和管理与监控接口两部分.其中应用程序接口模块提供与工作流服务有关的接口,外部应用程序可通过此接口访问工作流引擎提供的服务;管理与监控接口模块用于工作流服务的管理,比如启动、挂起或删除流程实例.
(2)内核层:本层次是工作流引擎的核心所在,提供工作流的活动调度机制和任务分配机制.该层次由微内核、工作流执行模块、流程实例模块和活动管理模块四个模块组成.微内核负责调度业务活动,实现流程实例的执行,并将业务任务分配给参与者;工作流执行模块实现流程实例运行的基本操作,如:启动、挂起、激活或结束流程实例;流程实例模块负责流程实例的管理工作,并通过服务层将流程实例持久化到数据库中,以保证流程实例的持久有效;活动模块实现业务活动的管理和持久化.
(3)服务层:服务层是内核层的扩展和工作流引擎服务的具体实现,可分为三个模块:运行支持模块,运行辅助模块,运行优化模块.运行支持模块的主要功能是流程定义解析和流程实例持久化.根据流程定义创建流程实例时,首先,流程定义解析功能对流程定义进行分析,提取创建流程实例所需的数据并对流程实例进行初始化操作,然后将已初始化流程实例提交到内核层,内核层接管流程实例,实现流程实例的调度执行.流程实例持久化服务为内核层提供存储服务,负责将工作流相关数据存储到数据库中,用于确保工作流服务的持久有效.运行辅助模块扩展工作流引擎的服务功能,用于增强工作流引擎的功能.该模块主要的功能有事件监听处理、异常处理、条件处理和活动回退(rollback)等.运行优化模块对工作流引擎进行优化,用于提高流程实例的执行效率,与工作流引擎的功能无关.
(4)基础设备层:为工作流引擎提供公共的服务组件.系统运行日志、工作日管理等均位于该层次.
3 结论
本文在探讨现有工作流引擎设计局限性的基础上,设计了一个基于微内核的工作流引擎.基于微内核的工作流引擎将调度与服务分离,内核层独立稳定,服务与具体实现无关,当引擎提供的服务需要修改时,只需重构引擎的服务实现层,而不必修改内核部分,从而降低了系统的重构成本;当引擎需要增加新的功能时,仅需扩展工作流引擎接口,使得系统具备了良好的扩展性和灵活性.同时,该工作流引擎采用基于组件的开发技术,组件之间通过定义良好的接口进行通信,组件耦合度低,当某个组件发生错误时,只需修改该组件即可,有效的降低了维护成本,提高了系统的灵活性.
[1]The WorkflowReference Model[EB/OL].(1995-1-19).[2011-04-20].http://www.wfmc.org/standards/docs/tc003v11.pdf
[2]Layna F.WorkflowHandbook 2005[M].Florida:Future Strategies Inc.2005:19-21.
[3]ProcessDefinitionInterface-XMLProcessDefinitionLanguage[EB/OL].(2008-10-10)[2011-04-20].http://www.wfmc.org/Downloaddocument/WFMC-TC-1025-Oct-10-08-A-Final-XPDL-2.1-Specification.html.
[4]Alexander W.Software Structure and Portabilityofthe FiascoMicrokernel[M].Dresden:Technical UniversityofDresden.2003.
[5]Brown AW,Wallnau K C.Engineering of component-based systems[C].Component-Based Software Engineering:Selected Papers fromthe Software EngineeringInstitute.Los Alamitos,CA:IEEE Computer SocietyPress,1996:7-15.
[6]DlogoMR,Ferreira J J.pintoFerreira.Developinga reusable engine[J].Journal ofsystems Architecture.June,2004,50:309-324.
[7]Brown AW.Large-Scale Component Based Development[M].Prentice Hall:Upper saddle River,2000.
[8]Workflow Management Coalition.Terminology&Glossary[EB/OL].(1999-02-10)[2011-04-20].http://www.wfmc.org/standards/docs/TC-1011_term_glossary_v3.pdf.