APP下载

基于JBPM和角色分组的并行路由算法

2016-11-30朱付保汤萌萌谢利杰朱颢东

关键词:会签行路分组

朱付保, 汤萌萌, 谢利杰, 朱颢东

(郑州轻工业学院 计算机与通信工程学院, 郑州 450002)



基于JBPM和角色分组的并行路由算法

朱付保, 汤萌萌, 谢利杰, 朱颢东*

(郑州轻工业学院 计算机与通信工程学院, 郑州 450002)

JBPM在流程的推进过程中要选择相应的路径进行流转,其中并行路由是一种最为复杂的路径选择方法.但初始化路经参数时,并行路由算法节点定义复杂,需要预先定义子路径流程模板,并且逐一对XML文件节点赋值导致效率较低.针对这一问题,提出了一种基于JBPM与角色分组的并行路由算法.该算法引用角色分组的理论,通过运用角色查询单个分组的方法将并行路由分支参数初始化,生成多个并行子路径节点信息,进而将每个节点信息分组存放数据库中,对数据进行统一处理,提高初始化子路径参数的效率.改进后的算法应用到房地产OA办公系统的请假会签功能中,在实践上取得良好效果,满足业务流程灵活多变的需求.

JBPM; 多分支; 并行路由; 角色分组; 工作流

在信息化的推进,计算机网络的迅速发展,办公软件日益应用普遍的情况下,越来越多的公司单位选择办公软件进行即时办公,“无纸化办公”已经成为一种趋势.基于我国特殊的国情需要,在实际的应用中,会提出一些特殊的工作流需求.JBPM作为一种流行的工作流引擎,拥有着JBOSS的优点,开创的平台有利于更好设计及开发和实现业务流程管理系统,具有自己独特优势,能够通过编码满足业务上特殊的需求,适应商业化的软件应用.

本文介绍了JBPM工作流引擎的并行路由算法,描述了工作流多分支推进的原理.以房地产OA办公系统中的请假为例,在典型的并行路由算法的基础上,提出了结合角色获取任务改进方法,使JBPM能够更灵活满足客户多变的需求,提高了系统的可扩展性,进一步克服了“硬编码”实现业务流程的缺点.

1 JBPM工作流引擎相关介绍

1.1JBPM工作流

工作流是针对日常工作中具有固定程序的活动而提出的一个概念,它依据规定的过程规则,文档、信息或任务能够在不同执行者之间进行传递和执行[1-3].工作流技术按照事先设定的规则和程序来对将工作分成的任务进行执行,提高工作的效率.JBPM是一种开源的、灵活的、易于扩展基于J2EE的轻量级工作流管理系统[4-5].它没有以BPEL或WfMC标准去实现流程引擎,而是采用了JPDL(JBPM Process Definition Language)语言,使得更加简单,易于阅读[5-7].

1.2并行路由定义

路径路由是指工作流引擎在程序选择路径流动时的基本模式,MFMC组织的规范中给出了顺序、条件、并行、循环4种路由模式[8].同编程语言有类比关系,但从某种程度上来说路径路由又与网络环境中的“路径路由”类似,在适用范围上不同.并行路由是4种路由模式中最为复杂的一种, 对于审批的人来说是无差别的(审批人员不需要等待别人的审批结果),可以同步或异步地进行文件签署.但是并行路由模式在处理特殊工作流程上具有一定的优势.

2 JBPM并行路由机制算法描述

启动JBPM工作流引擎后,其按照xml配置文件初始化数据,流程定义中有按照并行路由模式时,需要逐一将数据用variablesMap.put(key, value)方法保存在数据库JBPM_TASK表中.工作流流转时按照节点将数据先将所有的任务节点数据和任务节点数据所对应的后续流程节点数据从流程数据库中取出来.任务节点fork执行时产生新的子路径,于此同时还要判断各个子路径是否都执行完全且都汇聚于此join节点.并行路由机制需要join产生的子节点都汇聚才会启动父路径,让父节点流转到下一个节点.

算法的核心思想描述:JBPM启动工作流后按照事先定义的xml文件进行自动化节点[9-10].自动化节点前需要在配置文件中定义好每个节点信息.在执行节点为fork类型时,流程将根据提供的数据自动生成所对应的N个子节点,分支节点如图1所示.

图1 分支节点图Fig.1 Branching node graph

进入fork节点后,使用上下文指定循环次数即N次,同时指定阻塞状态值.并行的N个task,每执行完一个task,此task任务消失.1到N个task任务都被执行完成之后,将在join节点汇聚同时父路径重新被激活,工作流引擎将自动完成流转到下一个节点.

3 基于JBPM与角色分组的并行路由算法

基于JBPM与角色分组的并行路由的算法流程如图2所示,通过对并行路由机制的算法定义说明,具体描述如下.

1) 执行fork任务节点时,上下文生成N个子任务节点,根据系统的用户角色列出流程流转待审批处理人员.

2) 按照程序的设定根据配置文件循环地在流程中为每个候选人建一个候选分组Group.JBPM创建分组Group时,原本应该一个分组有多个候选人员candidater,当其中一个候选人取出任务并处理,其他候选人就不能再执行该任务.改进后使用角色赋值,将每个Group只存放一个候选人,这样使得每个候选人必定能获取处理自己对应的任务信息.这样N个候选人对应N个子节点和N个分组,同时流程中生成N条子路径.

3) 用户登录系统后,系统按照用户id获取对应候选人分组的任务信息,并进行处理.

图2 基于JBPM与角色分组的并行路由算法流程图Fig.2 Flow chart of parallel routing algorithm based on JBPM and role grouping

4) 子路径到达jion节点后就完成,首先子路径结束自身,然后从父路径那获取其他所有兄弟路径的执行状态,一旦子路径都关闭,意味着完成N个子任务,最后汇聚到join节点,按照join节点后续路径流转.

4 应用实例

以房地产OA办公系统为例,将并行路由算法结合角色任务获得,对JBPM并行路由算法进行相应灵活改进运用.使得此算法在会签实现上更加灵活,满足实际应用需求.

在系统中请假人可能参与多个项目,请假需要参与的项目对应负责人审批通过,审批都通过之后才由请假人所在的部门主管审批.

1) 示例流程定义

2) 示例流程图

图3 请假流程图Fig.3 Leave process chart

流程中定义了负责人分组名字变量#{projectnames}和分组数目变量#{projectsize},还定义了负责人变量#{project}.部门主管角色用变量#{bmzg}来赋值.

3) 根据申请人对应的角色找出该角色所参与的项目的负责人.按照项目负责人的数目创建相等数量分组Group.

(1)先创建一个等于负责人数量的数组projectname,语句为:

String projectname[]=new String[projectsize];

(2)循环为角色取出的负责人创建分组,语句为:

for(intm=0;m

Project project=projectlist.get(m);

Stringlogname=project.getEmployee().getLoginName();

String msize=m+""+timestamp;

projectname[m]=msize;

if(null==identityService.findGroupById(msize)){

identityService.createGroup(msize);

if(null=identityService.findUserById(logname)){identityService.createUser(logname,logname,logname);

identityService.createMembership(logname,msize);

}

}

4) 请假流程启动后生成的任务节点及任务节点所对应的后续节点保存在相应的数据库表中,取出流程数据如表1所示[8].

表1 任务节点数据表

5) 根据用户id找到该用户作为候选人的分组,获取任务task并进行处理,实现的语句如下:

ListtaskList=processEngine.getTaskService().findGroupTasks(userId);由于用户还有其他任务信息待处理,为了方便取出任务信息做统一处理,首先可以将taskList任务列表根据用户的id存放到个人任务中即(PersonalTask),然后在按取出个人任务的方法获取任务并处理.

6) 所有候选用户都处理任务,如果处理的任务状态都是同意通过,则将汇聚到join任务节点流转到下一个节点信息.此时为项目负责人审批创建的子路径结束,节点流转汇聚到join,然后自动流转到下个节点即部门负责人审批节点.

7) 根据角色信息,系统动态指定部门负责人节点的审批人.设定的审批人取出任务信息处理后,流转到结束节点信息,请假流程自动结束.

5 实验结果分析

为了验证试验的算法的有效性、可靠稳定性,以硬件设备为一台win7系统的PC机,采用 Intel i7处理器,内存为8GB.软件环境使用MyEclipse 10.6下集成SSH JBPM框架作为测试环境.通过java编程来控制实现相关定义的工作流,最后用测试单元Junit进行流程执行的测试,没有采用将系统部署到Apache Tomcat容器中,而是采用单元测试方案进行测试.

图4和图5中的实验结果来看,对于系统测试单元请假会签的初始化,本文基于角色分组并行路由算法的不仅执行时间与传统算法相比明显减少,而且内存消耗方面也略低于传统算法,主要是由于本文算法在执行过程中查询项目负责人(即会签人员)信息按程序循环对节点数据赋值,不同于传统算法提前在XML文件中逐一定义节点信息.本算法为流程提供了保障,流程运行正确率100%.在多变的需求中,本算法使得流程定义更加简洁,能够快速的基于已有的业务信息构建新的流程,降低软件的开发的成本.结果表明,相同条件下,基于角色分组并行路由算法的应用比传统算法运行时间缩短,内存消耗较少,同时应用在会签中能提10%的编码效率.

图4 在pc上测试运行时间比较Fig.4 Test run time comparison on PC

图5 在pc上测试内存消耗比较Fig.5 Test memory consumption on PC

6 结束语

本文结合了JBPM并行路由选择路径的原理,介绍了JBPM实现会签功能的并行路径选择推进机制.现实生活中的特殊的业务需要多人同时审批通过流转下一个环节,JBPM会签功能正是用于实现这样的功能.然而在实际应用中多人会签审批的人数会随着上下文条件变动,直接传统赋值指定审批人编码会有些繁琐.文中提出了运用JBPM的分组候选人结合角色赋值法,避免了“硬编码”实现功能的缺点,分配和接受任务更加灵活,提高软件的开发效率并使系统有更强的可扩展性.

[1] 屠晓丽, 姚明海, 汤幸江. 工作流管理系统的柔性技术研究与应用[J]. 计算机技术与发展, 2010, 20(1):120-123.

[2] 高 杰. 深入浅出JBPM[M]. 北京:人民邮电出版社, 2009.

[3] 董崇杰. 基于JBPM流程设计器[J]. 计算机系统应用, 2013, 22(10):55-59.

[4] 张利君, 马 骏, 杨 涛, 等. 基于工作流的动态任务调度研究与实现[J]. 计算机工程与设计, 2009, 30(10): 2533-2538.

[5] 范玉顺, 罗海滨. 工作流管理技术基础[M]. 北京: 清华大学出版社, 2001.

[6] 王 迪, 陈 晖. 基于工作流的高校电子公文流转系统设计与实现[J]. 电脑知识与技术, 2014 (15):3528-3530.

[7] WANG Y G,LI H S. Application and research of JBPM workflow based on JBoss seam[C]//Shenyang:2010 2nd International Conference on Advanced Computer Control(ICACC).USA:IEEE, 2010, 515-518.

[8] 吉 梅, 陈力琼. JBPM工作流在教务管理系统中的应用[J]. 计算机应用与软件, 2011, 28(6):230-231.

[9] 顾大明. 基于JBPM 的工作流会签设计[J]. 民营科技,2010(12):50-50.

[10] 王 伟, 徐文胜. JBPM 流程定义文件自动生成算法[J]. 计算机应用, 2012, 32( S2):89-91.

Parallel routing algorithm based on JBPM and role grouping

ZHU Fubao, TANG Mengmeng, XIE Lijie, ZHU Haodong

(School of Computer and Communication Engineering,Zhengzhou University of Light Industry, Zhengzhou 450002)

In the process of promoting JBPM appropriate transfer path is required .The parallel routing is one of the most complex and flexible path selection methods. However, definition of algorithm nodes in parameter initialization of the parallel routing is complicated because of the requirement of pre-defined sub-path process templates, which resulting in low efficiency in assigning for each of the XML document node. To solve this problem, a parallel routing algorithm based on JBPM and role grouping was proposed. The algorithm

the theory of role grouping. The algorithm uses role query for a single packet method to initialize the parameters of parallel routing, generating a plurality of parallel sub-path nodes’ information. Then information of each nodes is grouped to store in the database in order to unify for processing and improve the efficiency of sub-path parameter setting. The improved algorithm is applied to real estate OA office system for leave function, achieving good results in practice as well as meeting the demand for flexibility of the business process.

JBPM; multi branch; parallel routing; role grouping; workflow

2015-12-18.

国家自然科学基金项目(61201447); 河南省科技攻关项目(122102210492); 河南省教育厅科学技术研究重点项目(13A520368;13A520367); 河南省高等学校青年骨干教师资助计划项目(2014GGJS-084); 郑州轻工业学院校级青年骨干教师培养对象资助计划项目(XGGJS02); 郑州轻工业学院博士科研基金资助项目(2010BSJJ038).

1000-1190(2016)04-0501-05

TP393.02

A

*通讯联系人. E-mail: zhuhaodong80@163.com.

猜你喜欢

会签行路分组
浅谈航天型号产品文件的质量会签
举步有礼 行路不难
反洗钱行路致远
分组搭配
怎么分组
行路不知难
分组
工作流技术在信息通信资源申请中的应用研究
让公文会签业务高效、合理
西行路上(组诗)