Activiti5工作流在OA系统中的应用
发布者:    发布时间: 2014-06-20     阅读:202次

1 引言

    随着现代信息技术的迅速发展,利用OA(Office Automation,办公自动化)系统来提高效率成为多数政府和企业的首选,即通过OA来实现各个成员和部门之间的协同办公、信息流转与资源共享等。由于政府公文审批和企业业务处理都是以流程的形式进行,所以工作流技术成为了OA系统中必不可少的部分。

2 广西广电网络OA系统工作流应用现状和问题分析

    近年来,工作流技术在广西广电网络公司的OA系统中已广泛应用。工作流技术的应用改进了OA的业务流程、实现了业务过程的协调控制、提高了业务处理效率。同时,广西广电网络现有OA系统的工作流技术亦存在以下两大问题:(1)硬编码工作流无法适应流程的需求的灵活变更。部分业务流程和流程表单的定义是硬编码在程序中的规则,一旦业务流程需要调整,开发人员需要进行繁杂的修改工作,对灵活多变的流程显得无能为力。(2)设计模型和实施模型存在较大差异。曾经在OA系统中引入的开源工作流引擎(Enhydra Shark、OSWorkflow和早期的jBPM),发挥了一定作用,但其业务分析人员的设计模型和开发人员的实施模型之间存在较大差异,开发人员往往难以完全根据设计模型来实现工作流,增加了流程的实施难度。因此,如何提高OA系统中工作流对流程需求变化的快速响应能力,如何解决业务分析人员和IT开发人员之间模型的不一致性成为摆在OA和工作流系统设计和开发人员面前的新课题。

    为解决流程硬编码和设计模型与实施模型之间存在较大差异这两大问题,新的工作流系统应能够实现以下两点:(1)针对流程硬编码问题,新的工作流应能够实现以图形化操作的形式对流程和表单进行定义并生成流程定义文件,将生成的定义文件部署到工作流系统即可完成流程的新建或修改。(2)针对设计模型与实施模型的差异问题,新的工作流系统应能够以业务分析人员使用的业务流程设计语言BPMN2.0来实现流程建模,达到设计模型和实施模型的统一,使IT开发人员不必再参与到流程建模当中。

    本文将针对上述问题,介绍并引入一个基于Activiti5(Activiti BPM Platform)的工作流管理系统,全面解决现
存问题,并以广西广电网络OA系统中重大安全播出期保障检查流程为例,讲解流程的设计和部署等关键环节,为OA系统中工作流的设计提供了一种良好的解决方案。

3 工作流技术和Activiti5工作流管理平台

    工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。工作流需要依靠工作流管理系统(Workflow Management System,WfMS)来实现,它的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中工作之间以及群体成员之间的信息交互。常见的工作流管理系统的结构如图1所示:

 图1 工作流管理系统的结构

图1 工作流管理系统的结构

    当新的流程需求出现时,流程的分析和设计的工作通常由业务分析人员来进行。BPMN2.0提供了一种面向业务分析人员的建模符号,特别是对于流程模型,它提供了具有执行语义的模型。BPMN给业务分析人员提供了类似流程图的设计体验,与流程图不同的是,BPMN2.0包含大量的约束和语义,使设计模型只要添加必要的实现细节就能够成为一个可以直接被工作流系统解释执行的实施模型。随着BPMN2.0近年来的飞速发展和普及,它已经成为流程设计领域的事实标准。本文使用Activiti5工作流管理平台作为OA中工作流系统的核心。Activiti5是一个由jBPM3、jBPM4发展而来的开源轻量级工作流管理平台,其强调流程服务的可嵌入性和可扩展性,目前由jBPM的创建者Tom Baeyens主导开发和维护。

    Activiti的流程引擎是从jBPM4继承并强化而来的PVM(Process Virtual Machine,流程虚拟机)。Activiti的前
辈jBPM3虽然在Java社区取得了巨大成功,但其不支持流程语言规范的短板始终被人诟病,它采用了自创的jPDL而不是当今业务分析人员使用的BPMN2.0,节点的运行时行为与jPDL里定义的节点类型是一一绑定的,这造成了流程引擎与特定流程语言的绑定,要支持其他的流程设计语言变得非常困难。PVM 的提出使得流程引擎与流程定义语言解耦,通过一套通用的流程模型并配以可定制的节点运行期行为实现了对多种流程定义语言的支持。PVM 可以解释BPMN2.0、jPDL、xPDL和BPEL等各种流程定义语言定义的流程格式,使Activiti易于与其他异构工作流引擎对接,有优秀的集成能力。Activiti延续了jBPM3、jBPM4 的社区支持,更新周期 3个月,目前最新版本为Activiti5.14。Activiti提供了两个图形化流程和流程表单设计器,分别是基于Web并利用SVG实现的Activiti Modeler和Eclipse plugin形式的Activiti Designer。Activiti5的体系结构如图2所示。

 图2 Activiti5体系结构

图2 Activiti5体系结构

    Activiti Engine是Activiti项目的核心。它是一个Java编写的流程引擎执行以流程建模语言定义的流程。上文提到的PVM是Activiti Engine的一部分,Activiti Engine通过PVM来解释包括BPMN2.0在内的各种建模语言定义的流程文件。同时,Activiti Engine还负责对工作流实例控制和统计数据收集,包括任务分发、事务管理、报表生成等等。

    Activiti Explorer 是一个Web应用程序供用户访问Activiti Engine。它提供UI以进行流程流转、任务管理、流程实例检验、系统管理和数据统计报表展示,Activiti Modeler也可以经由Activiti Explorer来访问。

    Activiti Modeler提供了从Web来管理Activiti流程的方案。通过Activiti Modeler流程建模人员可以用浏览器建立BPMN2.0标准的流程模型并部署执执行。同时,Activiti Modeler还包括一个Web表单编辑器。

    Activiti Designer是一个Eclipse插件,它允许在IDE环境内用BPMN2.0建立流程模型。相对Web的Activiti Modeler,它支持更多Activiti的扩展功能,使流程建模人员能够进行更细粒度的配置以发挥的流程和引擎的全部能力。Activiti KickStart的是一个基于Web的入门级建模工具,用Activiti引擎可用构件的子集提供快速创建简单业务流程的能力。通过Kickstart用户可以使用更加通俗的概念建模,即使不了解BPMN或者其他建模语言也可以建立简单流程。通过KickStart创建的的流程是和BPMN 2.0兼容的,它可作为学习BPMN2.0建模的起点。

    Activiti5的流程设计器Activiti Modeler和Activiti Designer,将是解决流程硬编码和设计模型与实施模型存在差异这两大问题的关键,针对流程硬编码问题,Activiti5的流程设计器能够在WEB端以图形化操作的方式对流程和表单进行定义并生成流程定义文件,并将生成的定义文件部署到工作流系统即可完成流程的新建或修改;对于设计模型与实施模型的差异问题,Activiti5的流程设计器使用业务分析人员的业务流程设计语言BPMN2.0来实现流程建模,达到设计模型和实施模型的统一,使IT开发人员不必再参与到流程建模当中。

4 重大安全播出期保障检查流程的设计和部署

    本文将以广西广电网络OA中重大安全播出期保障检查流程作为样例讲解Activiti5的应用。流程设计建立在对流程需求分析和整理的基础上,重大安全播出期保障检查流程的主要任务为在广电系统重大安全播出保障期(如国庆、人大、政协会议等)到来前组织各地进行例行检查和演习。(广播电视安全播出检查和演习的知识)此流程的主要业务包括根据接收制定应急预案、领导小组会签、领导签发、办公室发布、电力系统检查、机房及传输系统、组织应急演习和撰写报告。其中,因电力系统检查、机房及传输系统、组织应急演习三个步骤的实际执行地分散在分散在各地机房,故采取并行执行的设计以节约流程执行的时间。以流程设计工具Activiti Modeler按照BPMN规范绘制流程如图3所示:

 图3 流程BPMN2.0设计图

图3 流程BPMN2.0设计图

    这个流程包含几个BPMN2的结构,如下表1所示。

表1 使用到的BPMN2的结构

 表1 使用到的BPMN2的结构

    使用Activiti Modeler绘制流程图会自动生成相应的BPMN2代码,上述工作流的关键代码片段如图4所示:

 图4 流程bpmn20.xml关键代码片段

图4 流程bpmn20.xml关键代码片段

    定义好流程后进入部署环节,主流的部署方式有编程式部署和Activiti Explorer控制台部署:

    (1)编程式部署:将需要部署的bpmn20.xml文件打包为一个压缩文件(支持zip和bar)后调用部署API,它看起来像这样:

     编程式部署

    打包成压缩文件可以批量部署流程,程序将会自动扫描压缩文件中以bpmn20.xml或者bpmn作为扩展名的BPMN文件,批量部署到流程引擎。当然,它也可以单独部署bpmn20.xml。详见Activiti javadocs。

    (2)Activiti Explorer控制台部署:

    Activiti Explorer可以通过web界面的用户接口上传一个bpmn20.xml格式的文件进行部署。选择Management标签和 点击 Deployment,将会有一个弹出窗口允许你从电脑上面选择一个文件,或者你可以简单的拖拽到指定的区域。Activiti Explorer也支持上传打包的zip或bar格式的压缩文件进行批量部署。

    部署环节完成后,即可在Activiti Explorer中启动流程进行流转。如在流程设计器中配置了流程表单,流程流转时会提示填写。

5 Activiti5在广西广电网络OA中的运行情况

    集成了Activiti5的广西广电网络OA系统于2012年10月在公司总部上线,并推广到各地市分公司使用。该系统用户规模大于4000,日均在线700以上。经过1年运行,以Activiti5为核心的工作流模块运行稳定,至2013年10月底已经产生5000多条工作流实例,极大的提高了公司内部办公效率。同时,Activiti5将以往流程调研、分析、设计和部署的时间从2周缩短到3天左右,减少了流程设计部门和IT部门的工作压力。

6 结语

    本文在介绍、分析Activiti5工作流管理平台总体设计的基础上,讲述了其各主要模块的使用,并以重大安全播出期保障检查流程为例,利用Activiti Modeler在Web环境进行图形化的工作流建模和部署。Activiti5基于BPMN2的工作流模型使以往工作流系统中像是流程分支、流程并行、流程合并等较难以实现的功能,通过简单操作的图形化操作即可实现。与传统开发方式相比,Activiti5消除了以往硬编码式工作流系统中业务分析人员和软件开发人员混淆不清的问题,其业务设计人员可以独立进行流程设计的特性,将开发人员从繁琐的业务流程设计和编码中解脱出来,极大提高了业务流程需求变化时的相应速度。Acitiviti5工作流管理平台实现了业务管理的自动化以及组织内部人员和职能部门的协同工作,大大地提高了组织的运行效率。后续重点研究方向为扩展Activiti以支持任意回退功能(即中国式自由流)以及整合功能更强大HTML表单编辑器以强化Activiti较简单的表单功能。Activiti5版本更新速度很快,对新功能的支持不断增加,这些都有待进一步学习和研究。