彭 睿何群吉
(1.武汉科技大学计算机科学与技术学院 湖北 武汉:430081;2.普元信息技术有限责任公司 北京:100000)
工作流引擎系统模块的开发与应用
彭 睿1何群吉2
(1.武汉科技大学计算机科学与技术学院 湖北 武汉:430081;2.普元信息技术有限责任公司 北京:100000)
如何提升企业业务流程调整能力,快速应对业务变化从而增加企业的核心竞争力是现代经营的主要难题。基于此点,本文详细描述了基于普元工作流引擎BPS的业务流程化开发。通过流程优化,快速、低成本的解决工作流应用问题,从而为客户带来最佳的价值体现。
工作流;SOA;构建
BPS(Business Process Suite)工作流引擎是基于J2EE Sever、Eclipse等开放的技术和平台构建。它遵循WFMC的XPDL标准而又具备中国特色的流程化管理手段,从设计开发到运行维护、管理和控制,BPS实现了IT系统与业务流程的紧密相关,并以服务为基本单元组织IT资源。其每项服务都被封装成单独的流程构件来完成实际业务流程中的一项任务,大量的开发都可以基于原有构件组装,不需要再像以往一样一切从头开发,节省了大量的基础性开发工作。业务员或程序员只需专注于业务逻辑开发,以“业务与程序一体化”的方式缩短流程新建和变化的周期,提升业务的敏捷性[1],从而快速而又高效的响应了市场的新变化,帮助企业取得竞争优势。
业务流程将互相独立的不同业务部门按一定的关系相互联系。因此不同的部门采用不同的业务流程描述方法会使流程中的相互协作变得难以沟通。如何将业务流程统一标准,解决不同工作流产品之间业务沟通问题成了当务之急。
随着可扩展标记语言XML的应用和推广,为解决不同业务的相互协调。工作流管理联盟(WFMC)制定出新的标准化规范XPDL,它主要用于在不同的工作流产品中交换商业流程[2],也就是说在不同的建模工具和管理引擎中通过XML语言来确认和描述的各个业务流程。从而实现了了工作流信息在不同的供应商系统中进行交换。以下为BPS引擎下请假流程RestProcess的XML编译:
参与者students和teacher在partner节点中定义,其流程定义为:students发出请求,其内容为sickness。然后执行审批过程,并将结果返回students其结果为approve。
在使用BPS Workflow的过程中,BPS遵循XPDL开发出一套业务人员非常容易理解和使用的图形建模方法,并提供流程建模最佳实践。其概念模型如图1。
图1 业务流程概念模型
图2 流程定义
如图描述了一个完整的业务概念模型。包括了流程实例、组成的活动、执行者、活动间流转的转换条件、可能调用的应用程序以及流程相关数据等信息。其运作过程大体如下:
(1)在流程的开发阶段,业务员或程序员通过BPS的定义工具来定义流程,并将业务流程定义的数据以XML文件格式保存,如果该流程定义有多个版本,则在流程定义库中对应多条定义。
(2)工作流引擎对提交的流程定义进行解析,创建流程实例。如图2所示:业务员或程序员从右侧选用板中拖入相应的流程组件建立符合业务规定的流程定义模型。并将拖入的4个人工活动更改如图所示的名称。BPS工作流引擎会根据活动间的关联和活动的触发条件,确定后继活动,生成活动相应的工作项。
(3)引用组织/机构模型中的数据,确定活动工作项的执行者。执行者可以是一个人、一个角色、一个岗位、一个机构,也可以是机构、角色或个人的集合,还可以是岗位列表的集合。其相关数据必须满足下列结构:
上述Xpath结构总中如果type是”person”,那么id为用户id,如果type是”role”,那么id为用户id,type是”position”,那么id为岗位id。
(4)根据需要对有时间限制的活动给予超时的预警或超时通知,根据需要激活指定的应用程序,通过与外部资源(人、调用的应用等)交互完成各项活动,实现流程流转,流程参与者可以通过客户端查看、领取(取消领取)、执行和提交工作任务或者退回工作任务,推进流程的运行。
为了解决客户在产品推广阶段因各个区域个性化要求而遇到的实施难,以及用户在使用系统过程中因依赖技术开发而无法快速响应业务变化进行流程调整的问题。BPS提出采用“业务与技术一体化”的方式,将业务流、运算逻辑、服务组装成一个个构件,如图2所示。一个逻辑构件定义一套业务操作的接口。并用拖拉构件方式”画”出流程定义。这样其他模块和系统看到的只是一个业务操作接口,而不关心这个业务对应的是一个业务流程,还是一个运算逻辑或者是一个JAVA构件。一方面将技术实现与业务流程解耦,让业务流程更多的可以用业务化语言来描述。另一方面使业务人员(一般是业务分析人员和业务管理人员、产品实施人员)在无需了解很对技术概念的前提下,实现流程的业务化调整,快捷实现业务流程变化。使用户从容应对由管理变革,业务流程中“人”为处理的因素不断增多等所导致的在业务流程的处理过程中需要面对复杂的流程模式和人工环节处理的挑战,使得企业可以专注核心竞争力所在的业务功能部分,提升效率。
以自来水业务受理为例,介绍BPSR系统工作流模块设计。自来水业务受理系统主要实现业务受理接收的客户装表申请、故障、投诉等的流程化处理过程。业务处理的核心是通过多部门、多岗位的协同工作,实现客户用气需求的处理过程,完成客户资料的建立和维护过程。
SOA架构是一个分层的结构,从底层的功能性服务,到原子服务和服务构件,到顶层的业务流程服务,目的是最大限度地封装不同的服务,从而达到复用的目的。业务模式和流程也可以通过服务的重新组合变得更加灵活。其分层结构下:
(1)接入层是用户接口部分,通常采用浏览器访问。它支持HTTP,Ajax,Web Service等多种接入方式。同时提供了GUI(图形用户接口)和第三方客户端接口。
(2)流程层主要负责业务流程的定义如图2所示,帮助企业完成人与人之间的工作协调,人工任务与自动任务间的协调。BPS完全支持SCA服务构件的调用,支持面向服务的流程化管理手段。
(3)服务层,由SCA1.0标准来实现,并以服务为基本单元组织资源[3]。用构件将服务封装其中,也可将构件再次装配成更大粒度的组合构件来提供接口给其他模块或系统。其基于服务封装的构件在技术上可以体现为Web Service、EJB等多种调用方式。
(4)构件层采用java编写构件,工作流也是一种构件,可以把一个工作流程看成一个服务,由其他模块或者其他系统来调用。这样其他模块看到的只是一个业务操作接口,而不必关心这个业务对应的是一个业务流程还是一个Java构件。
(5)数据层的核心功能是访问数据资源,负责管理对数据文件,数据库数据的读写。其数据运转方式详见下一节。
BPS采用SDO(Service Data Object)服务数据模型[4],以对象为中心,采用统一的Xpath语法对对象进行数据值的读写操作。在需要调用相关数据时,只需要使用Xpath定位数据而不需要知道具体数据的类型,以统一的数据访问形式完成数据源与SDO对像的映射关系,其运行过程如下:
(1)客户端浏览器发起HTTP请求,通过Xpath节点”业务流水号/123456”以值对的形式将数据传输到服务器端。
(2)页面流引擎接到HTTP请求后将”业务流水号/123456”转换为SDO对象,传递给页面流实例。
(3)页面流调用工作流时,将SDO对象传递给工作流引擎BPS。并将SDO对象传递给流程实例和活动实例。
(4)活动实例调用运算构件访问数据资源,完成操作后返回SDO类型的结果。
(5)工作流引擎将返回结果传递给页面流引擎,并将返回结果转发给Web页面。Web页面响应这个HTTP请求返回到客户端浏览器。从而完成一次数据流转。
业务受理的处理是流程化的过程,每一种业务都有许多的环节,自来水公司的标准报装流程环节如图3所示。
图3 报装流程图
(1)诉求、当客户中心接到客户诉求后,根据诉求类型、客户明细产生诉求工作单并进行转单操作,将不同诉求转到不同部门进行处理;
(2)勘测、维修中心调度员对待标准报装诉求工作单进行派工处理,分配给勘测员进行勘测,并打印勘测工作单。勘测员拿着勘测工作单,到现场察看情况,为下步设计、安装等业务提供基础资料。满足供气条件,记录用户基本信息,还需要给客户发放缴费联系;
(3)工程、签订合同方案设计,工程预算,材料支出都会在勘测完毕后产生;
(4)然后经各部门领导审批,审批通过后,业务员和客户签订合同;
(5)确认缴费记录勘测信息之后,对于满足接水条件的用户,生成对应的营业费用科目,到营业厅缴纳营业费。确认缴费节点负责确认用户是否已经缴纳必须缴纳的营业费。已经缴纳,报装流程流转到施工环节;未缴纳,则不能流转到施工环节;
(6)工程施工资料员对施工员施工完毕之后的施工单进行记录,包括竣工结论、施工进度、使用材料信息、表具信息、施工方案等;
(7)工程完毕之后进行接水;
(8)业务审核主要审核前面录入的所有信息的准确性。如果审核不通过督办到出错的环节进行修改。
BPS对各个业务的流程进行了整理,对其中的公共的环节进行了抽取整合,作为公共的环节组件。抽取的工作环节组件,使得开发针对环节进行开发,最大限度的实现的环节组件的复用,减少了开发工作量。当业务流程发生变化,可以在现有组件基础上,进行快速开发。从而快速响应各种不同的业务需求。其开发步骤如下:
(1)流程定义。利用BPS的定义工具来定义流程,在BPS Studio环境中,右键单击WEB项目,源码目录、包目录。在弹出的菜单中选择新建BPS流程,进入流程向导界面如图4所示,填写作者和文字描述、最后点击完成按钮完成空白流程的建立。
图4 流程创建
(2)添加活动。BPS提出采用“业务与技术一体化”的方式,将业务流、运算逻辑、服务组装成一个个构件。如图5所示,BPS将业务流程中的各个环节封装成一个个的活动。在流程编辑器的左侧有一个选用板,其中罗列了若干可以在流程中添加的活动包括了:开始、结束、自由活动、人工活动、子流程、和路由活动。我们只需要在选用板点击需要的活动图元,拖动到流程编辑区中释放鼠标,图元就会自动放置到编辑区中。
(3)添加连接线和注释,在选用板中利用连接线图元将单独的活动链接起来,并设置连接线属性。然后将注释图元拖拽到编辑器中生成注释框,完成流程的描述。
图5 添加活动
(4)建立必要的数据。自来水公司的业务过程是一个长期交易的过程,一笔业务需要经过多个环节,多个参与者,业务周期也很长。因此需要业务过程模型来支持这种长交易过程,其模型用来记录业务处理过程中的处理信息。例如在客户服务中心人员接受客户诉求后,会将诉求信息持久化到数据库中,用来保持其基本客户信息和诉求内容。所以需要建立诉求信息表、结论信息、工程材料信息表、工程竣工信息表来保存相应信息,如图6所示。
图6 数据实体模型
(5)设置流程属性。单击流程Tab页,设置流程基本信息、流程相关数据、业务变量、出发事件和流程启动者。如图7所示,这里设置流程的相关参数,并设置流程的返回值。
图7 流程属性设置
(6)设置活动属性。双击开始图元。在弹出的对话框中单击启动表单,启动表单用于流程启动者在启动流程之前所填写的表单数据信息,其数据在整个流程当中所需要。其数据在传递时以XML节点的方式被保存。设置完成开始图元属性后,依次设置后续活动属性,如图8所示依次设置Tab页中的基本信息、参与者、所需要表单数据、触发事件等。在整个设置过程中,程序员和业务员无需知道其构件的详细实现方法。只需要知道当前活动需要的表单参数、参与者、填写一些简单表达式和子流程的触发事件即可。从而实现了“业务与技术一体化”的开发过程,并减少了IT项目运营成本和维护支出,迅速响应不断涌现的新的业务需求,保持了企业的竞争优势。
图8 活动属性
(7)提交流程,流程设置完成后,保证编译通过并将BPS Sever正常启动,并提交流程定义。
如图7所示为业务流程的勘测环节界面设计,用来填写勘测时间、结论、意见等。BPS在接入层的核心是提供了页面流功能,它根据用户设定的工作流呈现和接受数据,从而实现以部门为核心到以流程为核心的应用环境的过渡。其页面信息如下。
可以看到,action=”manager.pr.prInsert.do”实际上对应的是一个流程层中的一个业务流程(后缀为.do),
图9 主要流程界面
BPS在某自来水公司业务受理系统中的应用,表明BPS的业务化定制功能,完全可以支撑业务部门快速优化和调整流程,敏捷响应不断变化的市场要求,有效提升办公效率,降低企业运营成本,为现代企业办公系统提供一套行之有效的方法。
[1] 魏亚清,闫宏印,张冀川.架构基于BPM和SOA组合框架的敏捷企业[J].微电子学与计算机,2009,26(12):47-50.
[2] Y Xiao,D Chen,M Chen."Research of Web Services Workflow and its Key Technology Based on XPDL".Proc.2004 IEEE International Conference on Systems[C].Man and Cybernetics,2004,(3):2137-2142.
[3] 宋慧驹,马楠,吴志刚.SOA编程模型——SCA/SDO[J].信息技术与标准化,2007,(11):38-40.
[4] 刘志龙,黄传华.SOA架构高校迎新系统的SDO模型探讨[J].计算机与现代化,2009,(12):38-40.
Development and Application of Engine System Work-Flow Module Based on Primeton BPS
PENG Rui HE Qunji
The main issue in adjusting capacity of business processes,responding to the rapid change of business and thus increasing the core competitiveness is the key point for current business management.The development of business process based on Primeton BPS work-flow module is elaborated.The application of work-flow with process optimization,rapidity and low-cost brings about excellent value realization for the clients.
workflow;SOV;components
TP311
A
1671-3524(2010)04-0035-06
(责任编辑:栗 晓)
2010-09-18
彭 睿(1984~)男,硕士.E-mail:pengruier@gmail.com