基于BizTalk Server的工作流引擎的研究与实现
2008-06-24
作者:康建军1,陈淳鑫1,赵 方2,
摘 要: 针对业务流程管理系统" title="管理系统">管理系统中业务流程的快速、灵活实现,对工作流" title="工作流">工作流引擎的设计和实现方法进行了研究,提出了一种新的基于BizTalk Server的工作流引擎实现方案。
关键词: 业务流程管理系统 工作流 工作流引擎 BizTalk Server 2004
由于信息技术的发展和日趋激烈的商业竞争,人们不再满足于独立、零散的办公自动化和计算机应用,而是需要综合化、集成化的解决方案。因此,作为一种对常规性业务进行管理调度的技术,业务流程管理系统的出现是必然的。随着国家电信体制改革的继续深化,电信行业多元化的竞争格局正在加速形成,各电信运营企业的发展环境面临着严峻的形势。虽然目前各电信企业为了提高服务质量与管理效益,都已经建立了一整套的业务流程规范指导各自的业务活动,但是许多业务流程的实际运行还是采用填写纸介质业务表单文件、传递纸介质文件(例如、传真)的方式处理。即使有一些零散的IT系统,也缺乏一体化、端到端全过程的IT技术支持,无法从根本上改变传统手工作业的低效率,缺乏有效过程控制管理,与企业IT信息化的要求并不相符。这种状况也影响了业务流程规范化的全面推进和实施。要获得业务流程规范化的全面、真正实施和提高服务质量与运行效率,必须引进业务流程管理系统,实现业务流程电子化、信息化,将业务流程中的信息流转与控制管理从手工填写纸介质表单、传递纸介质文件的手工作业方式中解放出来,从而实现企业经营模式从“以网络为中心”向“以客户为中心”的转变,达到增强企业自身生命力和提高企业竞争力的目的。
1 工作流参考模型
工作流参考模型由工作流管理联盟WFMC(Workflow Management Coalition)提出,是工作流管理系统的一个参考模型。本文所提到业务流程管理系统仍以此参考模型作为抽象的依据框架。其框架如图1所示。从图1中可知,模型由六个组件组成:
(1)工作流核心服务。即工作流引擎,主要功能是读取工作流定义,根据工作流定义驱动工作流的流转。
(2)流程定义工具。实现以图形化拖拽的方式定义工作流的功能,将现实的各种业务流程转化为其计算机表现形式。
(3)工作流的客户端应用。可以是B/S或C/S结构。它向用户提供一个工作界面,用来启动、驱动业务流程。客户端应用通过接口2与引擎交互。
(4)其他外部系统。在工作流运行过程中,工作流引擎还可以与外部各种应用程序交互,这里可通过定义好的接口3来完成。
(5)其他工作流核心服务。指其他工作流引擎服务。通过接口4实现多个工作流引擎交互与协作。
(6)管理与监视工具。用于整个系统的管理与监视。
此模型为工作流管理系统确立了一个基本、合理的框架。整个管理系统的核心是工作流引擎。工作流引擎是流程流动的驱动源,它负责解释工作流的流程定义,创建并初始化流程实例,控制流程实例的运转走向,并记录其状态变化等。
2 Microsoft BizTalk Server 2004简介
Microsoft BizTalk Server 2004是微软最新推出的企业应用集成平台,旨在促进企业内部及企业之间电子商务流程的协作。该产品构筑在MS.NET Framework之上,并且与VS .NET 2003和Office System紧密集成,能够为用户提供增强的商务流程整合能力、新的商务行为监控特性以及高度伸缩的新式规则引擎,使开发者、专业IT工作者和商业分析家能够非常轻松地在Internet上建立一个跨平台、跨应用、跨企业的动态业务过程。
3 工作流引擎方案实现
3.1 业务流程管理系统
参照上述工作流参考模型,在为国内某电信运营商开发的业务流程管理系统中,采用了如图2所示的整体框架。此框架上层是以MS SharePoint Portal门户系统为依托、即插即用的UI组件,中间是工作流应用系统" title="应用系统">应用系统,底层是BizTalk EAI Adapter总线系统。底端利用BizTalk Server自身的各种Adapter和各种异构系统互连互通。其中工作流应用系统由辅助工具、系统管理模块、任务节点组件、建模辅助工具等构成。工作流应用系统中的辅助支持工具包含客户资料管理、知识帮助(专家资源、案例库)、便笺、留言板、滚动消息等应用模块;任务节点组件包含在Visual Studio .NET环境下开发的业务操作组件、判断选项组件、查看视图组件;建模辅助工具包含UI组件库、工作流模型库、流程任务规范定义等模块。BizTalk工作流建模工具以图形化拖拽的方式建立流程模型并配置属性。工作流引擎采用BizTalk Server2004(简称BTS),是整个系统运转的控制核心。它根据建模辅助工具的输出结果,调用任务节点组件,利用适配器接口和各种异构系统及后台数据库交互,实现了各流程稳定流转、各系统平滑互通的目标。
3.2 通用任务节点抽象
BTS提供了消息定义/消息转换映射、传输管道创建、流程/任务编排、端口定义、传输协议选择等一系列开发工具。利用BTS做引擎的一般流程开发方法和步骤为:(1)定义各消息格式(Schema)并创建不同格式消息间的转换映射(Map);(2)编配流程图,即定义各流程的任务节点(Orchestration)并配置收发端口和传输协议(Prot Configure);(3)编译(Build)并部署流程(Deploy),成功后就得到可以运行的流程。BTS具有较强的功能,但同时开发难度和繁琐度也很高。在流程数目较少、任务节点简单的情况下可以采用上述开发方法。但是,在实际开发业务流程管理系统时,不仅流程的数目繁多,而且各流程在任务数目、任务类型上差别很大。如果按照上述开发方法,即针对每个流程开发一个流程图并进行配置,无疑会极大地增加开发人员的工作量,耗费大量人力、物力,而且在运行维护阶段要面对的任务也是异常艰巨的,远远达不到系统开发的进度要求和后期维护难度要求。鉴于以上原因,经过研究改进,综合考虑各类型流程和任务的共同特性,最后在任务级别上得到统一的抽象:即虽然流程在业务逻辑、任务数目上有很大差别,但毕竟都是不同类型任务的某种组合(例如任务类型有判断节点、操作节点、选择节点、子流程节点、查看节点)。如果在一个Orchestration(编排,BizTalk的流程定义)能够实现对每一种类型任务的处理,则这个Orchestration就是所有不同类型任务的共同抽象模版,即通用任务节点抽象。这样可以抛开BTS复杂的开发界面,结合本业务流程管理系统的另一功能模块——建模工具,快速灵活地搭建各种类型的流程。实际运行时,BTS只需根据任务抽象模版实例化" title="实例化">实例化一个任务并反复循环,直到流程结束。
通用任务节点抽象如图3所示。
3.3 数据模型
本业务流程管理系统采用SQL Server 2000作为数据库系统,用来存储系统所用到的各种数据表。本系统数据模型包括机构数据模型和业务数据模型两部分。机构数据模型描述企业或者部门的组织机构关系,业务数据模型则定义工作流引擎中所用到的各种控制数据和流程实例数据。通过数据模型,可以方便地描述关键业务的业务规则、任务的依赖关系以及任务的部门/角色指派等特征。本文只讨论与工作流引擎关系紧密的业务数据模型。图4给出了业务数据模型之信息模型的ER图(只给出核心表结构)。
(1)流程模型表WorkFlow Table
此表主要记录各种类型流程的定义,表格中的数据由建模工具在流程定义阶段生成。其中:
Guid字段是主键,表示流程编号;
TypeId字段表示流程类型编号;
Name字段表示流程名称;
TimeLimit字段表示流程结束时限;
TimeConfig字段表示此流程参照的时间配置,它同时是时间配置表的主键;
Operator字段表示流程的授权发起人(或角色)。
(2)任务模型表 WorkTask Table
此表主要记录各种类型任务的定义,其数据也是在流程定义阶段由建模工具生成,包括任务编号、任务名称以及绑定页面地址URL等。
(3)任务联结表WorkLink Table
此表主要记录任务间的连线数据属性,包括头、尾节点标识及条件。
(4)流程实例表WorktFlowInstance
此表主要记录正在运行和已经结束的流程实例的相关信息,其每条记录由工作流引擎从流程模型表实例化得到。相关字段记录了对应流程实例所属流程模型类型、流程名称、当前活动节点位置、开始时间、运行状态(运行、挂起或正常结束)、流程实例发起人以及是否超时等状态信息。
(5)任务实例表 WorkTaskInstance Table
记录正在运行和已经结束的任务实例的信息。它的数据由工作流引擎从任务模型表实例化得到。
(6)时间配置表 TimeConfig Table
记录企业的工作时间制度,即上下班时间、午休时间以及告警/预警占全部时限的百分比。根据此表,工作流引擎由流程和任务的相对时长换算成绝对时长。
3.4 引擎核心控制算法
在抽象任务节点中调用代码,以动态、实时地获取下一步任务。当前任务提交后,通过对流程模型、任务模型表的操作实例化下一步任务。实例化任务的算法如图5所示。
3.5 工作流引擎运转过程
流程发起人在客户应用端启动一个流程,则系统自动向引擎接收端口发送一个消息。引擎在收到此消息后被激活,经过如下步骤完成运转过程:
(1)引擎根据当前提交的消息,初始化提交任务实例,即向相关岗位角色分配第一个(如果不是在流程刚启动时,就是“下一条”)任务。
(2)引擎调用超时处理模块" title="处理模块">处理模块,开始对刚分配的任务计时。此时引擎处于等待状态,等待任务责任人完成任务后提交消息。如果任务没有在规定的时间内完成,任务将被标志为超时。超时处理模块此时将通过页面醒目显示、即时消息等方式通知任务责任人或根据需要通知上级责任人。特定类型任务(如审批等)超时后自动流转到下一任务,其他情况下引擎再次进入等待状态,直到任务完成。
(3)任务责任人完成任务后,系统自动发送一个提交消息给引擎。引擎收到此消息后超时模块结束。引擎根据接收消息判断流程操作人员(即此时的任务责任人)是否要结束流程。因为流程在某些任务节点可以被无条件人工结束。
(4)如果流程被人工结束,则转到(8)。
(5)如果不是异常结束,则调用“任务指派”代码功能模块,得到下一步需要指派的任务列表。
(6)判断任务列表中任务数量是否为零。如果为零则说明所有的任务已经完成,直接转到(8)。
(7)否则,对该任务列表中的首个任务调用指派任务处理模块进行任务的实例化。实例化完毕后转到(6)。
(8)引擎初始化返回消息,该流程执行完毕。
基于此工作流引擎方案的业务流程管理系统很好地满足了客户的需求,并已在某省公司成功上线运行及在其他地市级公司全面推广。此方案的优点为:
(1)简单快速。各任务节点被抽象后,开发阶段就不用过多考虑任务类型的细节问题,这样整个开发过程被大大缩短,从得到需求到流程上线运行只需一两天时间。
(2)灵活稳定。强大的代码支持功能可以灵活地根据需求很快地对流程做出相应调整,并且不影响系统的正常运行,使系统的稳定性得到有效保证。
参考文献
1 蒲 春,陈淳鑫.工作流系统中系统管理模块的设计与实现[J].微型机与应用,2004;23(4)
2 范玉顺.工作流管理技术基础[M].北京:清华大学出版社,2001
3 WFMC.FMC-TC-1025 1.0 Workflow Management Microsoft.Coalition Draft[R].2002
4 Microsoft.Microsoft BizTalk Server 2004评估指南[R].http://www.eu.microsoft.com/china/biztalk/community/Product/a3.asp