Activiti6.0在项目管理软件中的运用

2020-08-14 09:48钱叶丹
现代信息科技 2020年8期
关键词:流程图开源节点

摘  要:开发项目管理软件中很多业务都有一级审核、二级审核甚至多级审核机制。近期,在项目管理软件迭代升级的需求分析过程中,客户业务活动审核机制调整了多次需求,也出现了系统流程与业务耦合性增强的问题,对老版本中多套临时表的维护越来越困难。在这种背景下,对开源工作流管理框架进行了研究,Activiti6.0在技术选型中脱颖而出,继而又对Activiti6.0是否能够实现具体项目的业务要求做了研究。

关键词:Activiti6.0;BPMN;工作流;项目管理软件

Abstract:In the development of project management software,many businesses have the mechanism of first level audit,second level audit and even multi-level audit. Recently,in the process of requirement analysis of iterative upgrade of project management software,the customer business activity audit mechanism has adjusted the requirements for many times,and the coupling between system process and business has increased. Many sets of temporary tables in the old version are more and more difficult to maintain. In this context,the open-source workflow management framework is studied. Activiti6.0 stands out in technology selection,and then whether Activiti6.0 can achieve the business requirements of specific projects is studied.

Keywords:Activiti6.0;BPMN;workflow;project management software

0  引  言

项目管理软件没有普及时,相关人员在项目管理过程中,一部电话加上堆积如山的文件是许多办公桌的标配,流程审核是传统手工递交纸张的方式,逐级找领导签字,效率低下。随着PC办公时代的到来,办公人员只需要在项目管理系统中填写工作内容,系统就会按照定义好的流程自动执行,各级审批者可以登录PC系统,看到工作内容再进行相应的审批管理操作。办公桌上干净了许多。

技术总是不断在更新,人们的需求总是不断增加。项目管理软件也需要不断做出迭代升级,如何实现业务与流程的分离?是不是可以将流程从业务中单独剥离出来做统一的流程管理?基于这些问题笔者开始对工作流管理框架展开研究,以供读者参考,共同完善。

1  什么是工作流

1.1  工作流相关概念

工作流:对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。

工作流程图如图1所示。一个比较形象的比喻是:工作流就像是列车的轨道,而所要执行的对象像是一辆自动运行的列车,只要列车启动,它就能沿着轨道一直走到终点,其中的节点就像是列车到达终点途中所要经过的火车站,它会告诉火车下一站是哪里,然后火车就往指定的下一站驶去,一直这样开到终点站。

1.2  BPMN元素

BPMN規范的发布是为了让业务流程的全部参与人员对流程可以进行可视化管理,提供一套让所有参与人员都易于理解的语言和标记。2011年1月发布BPMN2.0规范。我们首先要熟悉BPMN定义的每个元素代表的含义。使用BPMN2.0的目的是建立简单并且易懂的业务流程模型,但是同时又需要处理高度复杂的业务流程,因此要解决这两个矛盾的要求,需要在规范中定义标准的图形和符号。

BPMN定义了基本元素。每个元素均有自己对应的图形。除了基本元素,还有很多在其基础上的子元素。最常见的网关,子元素为排他网关、并行网关、包容网关等等。

1.3  BPMN2.0 XML结构

常见的工作流有Activiti、OSWorkflow、JBoss jBPM、JFlow、FixFlow等。怎样的流程描述文件可在不同的工作流中使用?除了图形定义。一份用XML语法标准定义,依据BPMN2.0标准的流程描述文件,就可在不同的工作流中使用,只要该工作流符合BPMN2.0规范。特别标记的是,除了BPMN2.0标准的元素及其属性外,工作流的供应商还可以在不改造已有属性的基础上,增添额外的属性,但是增加的属性不能与已有的属性产生矛盾,还需要简易易懂。比如:Activiti扩展的属性,属性名称统一用“ ctivity;”开头。Activiti;class=“com.bestpay.DemoService”。

2  工作流选型

基于老版本维护越来越困难,笔者进行了开源工作流管理框架的研究。市面上开源工作流引擎框架有很多,例如:OSWorkflow、jBPM、JFlow、FixFlow、Activiti等。在技术选型中,主要遵循的原则是“主流,适用,简单”。

Activiti6.0是在jBPM版本从1到4的基础上开发的,是5.0的升级版,满足BPMN2.0标准。很“主流”:Activiti6.0用户多,文档丰富,技术经历市场已经成熟,网上社区强大,很多网站还有专栏讨论,学习周期相对较短,界面简单,有很好的发展趋势;很“简单”:可控可驾驭,可扩展,轻量级。Activiti6.0支持大部分工作流流程,少数工作流流程需要进行二次开发;很“适用”:满足我们对软件的各种需求。

3  Activiti

Alfresco软件在2010年5月17日发布Activiti,它是一个业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,采用了宽松的Apache License 2.0开源协议。创始人Tom Baeyens也是jBPM的创始人,2010年,Tom Baeyens离开了JBPM同时加入到Alfresco公司。2010年的5月17日,Tom Baeyens发布了第一个Activiti版本,即5.0.alpha版,之所以把Activiti的第一个版本定义为5.0,外界猜测也许是为了让它更像jBPM4的延续。

3.1  接口简介

在Activiti中,流程引擎的实例对象是ProcessEngine,当创建了流程引擎实例后,在ProcessEngine中会初始化一系列接口实例,这些接口实例提供了大部分操作流程引擎数据的业务方法,可以使用ProcessEngine中的getXXXService方法得到这些接口的实例。接口实例具体信息如图2所示。

3.2  编写Activiti程序

既然这是一个框架,自然就是引进jar包,画流程图,然后实现该框架提供的接口来做我们想要做的事情。

前期环境配置工作包括3步:Eclipse插件安装、IDEA插件安装、Activiti安装。一系列的环境准备工作结束,就可以编写Activiti程序。

Activiti框架会帮我们把对应的数据库表创建起来,它关联的数据库表有23个,不同的表头代表不同的用途,对应Service的不同API。

3.2.1  定义工作流

新建一个含有二级审核的工作流程,在每一步任务中,我们都可以指定对应的处理人是谁。流程图如图3所示。

流程图对应的文件audit.xml部分如下:

上述为一个流程文件部分内容。该文件中的process元素用于描述流程信息,而bpmndi;BPMNDiagram元素则用于描述流程节点的位置信息。在process元素中定义了开始事件srartEvent、两个usertask和结束事件endEvent以及连接这些元素的顺序流(sequenceFlow)。

3.2.2  部署工作流

3.2.3  执行工作流

指定执行刚才部署的工作流就是我们定义时设置的工作流程图中的当前任务id:

3.2.4  查看任务信息

根据任务办理人,查看当前任务信息:

3.2.5  处理当前任务

当前任务的id已经查询出来了,处理id为304的这个任务:

3.2.6  删除流程

删除部署id=101这个流程定义的数据:

4  Activiti问题总结

在实际的项目开发过程中,笔者不断遇到了一些问题与挑战,同时也积累了一些经验。从Activiti数据库的连接;到排他网关与并行网关的不同设置;再到执行监听器的配置与使用,任务监听器的配置与使用等等的入坑事件。下面总结几个遇到的比较典型的问题。

4.1  会签功能

实际项目中会碰到某个任务节点需要实现会签功能的要求,就是指一个任务需要多人进行审批,多人都审批通过后,流程才能继续往下走。目前的实现方式为:

(1)启动这个流程图时,遍历所有任务,获取当前任务的办理人;

(2)将任务办理人做成一个集合,每個办理人元素用逗号分隔;

(3)将这个集合的键以Publicitylist_加上当前的元素ID,值以前面获取到的集合放入Activiti上下文。将这个参数作为Activiti启动参数放入即可。

4.2  回退功能

实际项目中还会碰到某个任务节点需要实现回退功能的要求。就是指能够回退到流程图上的任意节点,Activiti无法满足这样的项目需求,就需要进行二次开发封装。目前的实现方式为:

(1)获取当前任务所在的节点;

(2)获取当前节点的流出方向;

(3)记住当前节点的流出信息,并将当前节点的流出信息清空;

(4)获取目标节点;

(5)创建新的方向;

(6)将新的方向设置为当前节点的流出方向;

(7)完成当前任务;

(8)还原当前节点的流出方向。

5  结  论

在实际的项目开发过程中,工作流管理的好处是能实实在在感受到的,工作流管理在项目管理软件中是有很大的发展空间的。笔者简要总结了以下几点:软件的过程控制可见,清晰明了,客户满意度提高;工作流的可配置性提高,直接减少了软件开发、后期维护成本;增强了系统的适应性,能够快速适应客户提出的流程变化。

参考文献:

[1] 程序人生丶.activiti入坑总结 [EB/OL].(2019-02-20).https://www.jianshu.com/p/5c0e43701d51.html.

[2] Java3y.Activiti就是这么简单 [EB/OL].(2018-03-21).https://www.jianshu.com/p/aa09fe0594ef.html.

[3] jgroup.俯瞰开源工作流引擎Activiti [EB/OL].(2018-08-27).https://blog.csdn.net/jgroup/article/details/82116523.html.

作者简介:钱叶丹(1981.10—),女,汉族,上海人,工程师,本科,研究方向:计算机软件。

猜你喜欢
流程图开源节点
云的识别指南
校园武术“学、练、赛”一体化实践探索
基于移动汇聚节点和分簇的改进节能路由算法
CAE软件操作小百科(48)
五毛钱能买多少头牛
2019(第十四届)开源中国开源世界
2019开源杰出贡献奖
基于点权的混合K-shell关键节点识别方法
流程图学习指南
浅谈基于P2P的网络教学系统节点信息收集算法