李蕴+王宪杰+武秀川
摘 要: 从实际需求出发研究并设计了一个基于工作流技术的业务组织与协调工具。首先利用业务流程建模对活动网络图进行扩展,将节点划分为活动节点和逻辑节点,使模板能够更好地描述业务流程,并加入模板验证算法检查模板设计过程中的逻辑错误。然后扩展工作流引擎并将工作流引擎独立出来,方便系统的部署、配置和维护,并在工作流引擎中引入异常处理机制,使系统有更好的容错性;其次通过代理机制构建出分布式业务组织工具,能够满足局域网中分布式业务组织的任务需求;最后,通过协同控制机制实现多业务流程之间的协同工作。
关键词: 业务流程建模; 工作流引擎; 异常处理; 分布式业务; 协同
中图分类号: TN99?34; TM417 文献标识码: A 文章编号: 1004?373X(2017)01?0145?04
Abstract: A business organization and coordination tool based on workflow technology is studied and designed proceeding from the actual demand. The activity network diagram was extended with the business process modeling to divide the nodes into the activity node and logic node, which makes the template can better describe the business process. The template verification algorithm is introduced to check the logical error in the template design process. The workflow engine is expanded and separated, which is convenient for the system deployment, configuration and maintenance. The exception handling mechanism is introduced into the workflow engine to make the system have better fault tolerance. The distributed business organization tool was constructed by means of the agent mechanism, which can accomplish the mission requirements of the distributed business organization in local area network. The collaborative work among multiple business processes was realized with the coordination control mechanism.
Keywords: business process modeling; workflow engine; exception handing; distribution business; collaboration
0 引 言
随着互联网的快速发展和企业业务需求的不断增长,企业中出现大量的遗留软件系统,短时间内很难完全通过全新的软件系统来取代。如果能将这些遗留的软件系统通过某种技术组合起来满足企业新的业务需求,必将为企业节省巨大的经济开支。本文基于上述需求,在大量理论研究的基础上,结合现有的工作流系统设计并实现了一个基于工作流的业务组织管理系统,将具有特定功能的软件当作流程中的任务节点,通过定义流程模板将软件与任务节点联系起来,实现不同软件的协调运行,共同完成特定业务流程。
1 基于工作流技术的业务组织工具研究
1.1 业务组织工具的总体架构
业务组织工具采用MVC架构设计,将该工具的系统分成三层:描述层、逻辑层、数据库层。业务组织工具的系统架构如图1所示。
1.2 业务流程模型设计
业务模板在设计完成后进行模板验证用以判断用户设计的逻辑是否合理。验证一个业务流程模板,首先要对其进行模板解析以便进行验证。模板解析最主要的工作是解析出流程模板中定义的各个节点的属性信息和它们之间的逻辑关系以及各条边中定义的转移条件。其中各个节点之间的逻辑关系用前驱节点和后继节点的集合来表述,獲取拓扑关系的算法思想是读取流程模板中的每条边,将该边的终止节点加入到起始节点的后继节点集中,将该边的起始节点加入到终止节点的前驱节点集中,这样当处理完所有边后,整个模板的逻辑拓扑关系就都通过每个节点的前驱和后继节点集保存起来。
为了判断流程模板的正确性,首先应该对流程模板进行一些规则性的约束,这样能够以这些规则来判断流程模板的正确性,下面描述对应的约束条件:业务模板开始节点和结束节点惟一,并且它们不能直接相连;子流程中子开始节点和子结束节点惟一,并且不能直接相连;除活动节点外,其他逻辑节点必须成对出现,流程中必须有开始节点和结束节点,出现与分支、或分支、循环开始必须有与其对应的与汇聚、或汇聚、循环结束节点出现;各节点的边约束必须有规定,例如:开始节点只有输出边,结束节点只有输入边等;在模板中逻辑控制节点不能交叉出现,但可以相互包含;边必须有前驱节点和后继节点;从开始节点出发,到模板中的每一个节点都有一个可达路径。
1.3 工作流引擎设计
(1) 工作流引擎总体设计
工作流引擎中最基本的也是最重要的模块是流程调度模块,该模块主要包含:控制中心、任务管理、依赖检查、转移控制。工作流引擎的内部组成如图2所示。
(2) 工作流引擎调度算法设计
流程调度算法是整个工作流引擎的核心内容,引擎调度算法涉及的数据结构主要包括四个队列:RS:未完成队列;ES:执行中队列;SS:已完成队列;MSG:消息队列。
以上队列可以由数组模拟实现,其中RS,ES,SS三个队列用于存储节点的ID,MSG队列存储的是引擎的执行状态消息,引擎的状态消息可由一个二元组表示WFMessage=
1.4 工作流异常处理设计
(1) 基于改进ECA规则和案例推理的工作流异常处理模型
SECA_CBR异常处理方法模型的主要思想是:在处理异常时,首先系统通过SECA规则库进行查询,判断规则库中的规则是否存在对应的处理方法,如果有对应的规则,则按照已定的规则处理相应的异常;如果不存在对应的规则,通过案例推理方法进行匹配和推理新异常处理方法,推理出来的方法并不立即执行而是将该方法推送给用户,让用户决定是通过推理出的方法还是使用自己判断的处理方法。当用户对新异常确定处理方法后,系统会将其新的处理方法存入异常案例库以扩展新的案例,通过规则转化为SECA规则存入SECA规则库,这样既丰富了案例库使案例推理更加准确,又能在该异常再次发生时通过SECA规则迅速处理。
(2) 基于SECA规则的异常处理
本工具通过改进的ECA规则设计出SECA(Super ECA),将流程的模板设计和工作流异常处理设计彻底分开,这将降低业务模板的复杂程度,而且方便对异常规则的维护。
SECA规则通过添加模板ID和异常活动的ID信息用于标识不同模板,实现了将SECA规则库和流程模板分开,让流程文件更加简洁便于维护,如果需要添加新的规则不必在模板文件中添加,只需在SECA规则库中添加,方便用户的操作,同时提高了系统的可维护性。
(3) 基于案例推理的异常处理
本业务组织工具需将案例通过一些规则转换成SECA规则,并将已处理过的异常案例通过对应的规则转换成SECA规则并存到SECA规则库,在下次遇到该异常时可以直接查询SECA规则库中的规则对异常进行处理,这样可以绕开复杂的案例推理过程,提高异常处理的速度和效率。
2 业务组织工具协同机制研究
2.1 业务流程分布式运行机制研究
(1) 基于代理的分布式架构
为了实现业务组织工具工作的分布式和充分利用计算机资源,本文设计并实现独立的代理部件。代理有自己的端口,可以接收本地任务和外部代理发来的任务请求。代理收到请求后,首先通过预处理对数据进行处理、数据映射以及加密和解密工作;然后代理根据相应的请求调用已定义的业务软件,并将相应的参数传入启动的软件或服务中,等处理完成后将执行的结果和状态返回给对应的工作流引擎。
代理工作流程大概如下:工作流A执行过程中遇到活动节点将该节点交给代理去处理,代理判断该节点的属性是否是本地执行,是则启动相应程序并将执行完的结果返回给业务组织工具;否则将活动节点的详细信息通过通信协议发送给其他代理(如B,C,D等)。假如B代理收到信息判断是本代理执行,则启动相应的应用程序,并将执行完成后的结果返回。其他代理收到信息后判断与自己无关自动忽略。
(2) 分布式代理框架的实现
代理是由登录、系统配置、业务处理、代理服务和监控管理模块组成。监控管理模块的接口与业务组织工具的异常处理保持一致,可以通过业务组织工具管理代理服务的异常情况;系统配置涉及到的东西和业务组织工具的分布式协同关系不大。
2.2 业务流程协同机制研究
(1) 协同机制架构
为实现多流程之间的协同工作任务要求,本文在工作流引擎之间引入了协同控制机制,如图3所示。通过该机制能夠协调需要多流程协同工作的业务流程。
(2) 协同工作流
一般情况下协同工作流的实现都会有对应的协同模板,将协同模板作为优先级高的流程进行执行,当有需要执行的协同模板活动时就会执行对应的协同交互工作。本工具将协同模板设计省略,通过采用可视化的方法对模板之间的活动添加对应的时序约束关系。在工作流引擎执行协同流程时通过查询时序约束关系自动完成流程之间的时序约束关系。
(3) 协同机制的实现
本工具不将协同规则写入对应的模板文件中,而是把协同规则存入独立的协同规则库。在设计协同规则时通过业务组织工具的模板验证模块获取流程的拓扑结构,获取每个流程模板中的活动节点,然后设定各模板中活动节点的时间约束性。
3 基于工作流的业务组织工具的实现
3.1 业务流建模工具的实现
(1) 模板绘制
业务组织工具、建模工具的绘制功能主要通过Qt图形视图框架进行开发,Qt开发图形视图框架由项(Item)、场景(Scene)和视图(View)三层构成。其中项提供各种图形供绘制功能使用;场景是项的存储容器,可以用来管理图形项;视图是控制可视化窗口部件,主要使场景中的内容可见。
(2) 界面展示
本工具将业务建模工具集成在业务组织工具中,主要有新建模板、打开模板、保存模板、另存为模板等功能。从实际需求出发绘制的业务流程模板,如图4所示。
3.2 工作流引擎的实现
(1) 本地引擎的实现
引擎实现类主要由WorkFlowInstance构成。其主要的函数有:模板写入数据库函数,控制流程引擎的主函数,模板的逻辑结构拓扑结构生成函数,获取该节点信息函数,初始化节点函数,MSG消息队列的处理函数,向队列中加入节点函数,处理开始节点函数,处理结束节点函数,处理活动节点函数,处理与分支节点函数,处理与汇聚节点函数,处理或分支节点函数,处理或汇聚节点函数,处理循环开始节点函数,处理循环结束节点函数,处理子流程节点函数,处理边上条件设置的判断并返回结果函数,线程启动时内存初始化设置函数,根据异常处理模块返回的处理建议处理函数,重新执行某个节点函数。
(2) 业务监控工具的实现
业务流程监控模块的主要功能是当用户启动一个业务流程后,对流程实例进行实时管理和控制,其主要组成部分包括:正在执行的流程管理,执行完毕的流程管理,流程运行状态监控,已执行完的流程回放等。
3.3 异常处理模块的实现
3.3.1 异常处理功能类的实现
异常处理模块的主要应用环境是业务流实例执行活动节点发生异常情况,对异常情况进行适当的处理使流程能够继续执行下去。该功能模块主要由WFException,WFExceptionMonitor和WFEManualDlg三个类实现,其中三个类之间相互关联。
3.3.2 功能展示
业务流程由项目目标、需求分析、设计方案、提交方法四个活动组成。在设计项目方案时必须先获取项目要实现的目标,这样才能根据目标进行分析并设计执行方案,假如在调用项目目标软件获取项目要实现的目标时,获取不到查询结果,此时系统抛出异常,该异常被异常探测模块捕获并将获取到的异常信息发送给异常分析模块,该模块收到信息后首先查询SECA规则库。
SECA规则库中没有关于该异常的规则,因此异常分析模块将异常信息发给案例推理模块,案例推理模块接收到异常信息后首先用改进后的案例匹配算法对案例库进行检索,获取与该异常相似的案例组,然后通过案例修正算法对匹配到的案例中的解方法进行修正使其适合处理新异常,最后将修正后的处理方法作为异常处理建议发给用户。
3.4 分布式和协同模块实现
3.4.1 分布式的实现
在流程模板设计时,活动节点需要指定由哪个角色和用户执行,该角色和用户是计算机登录采用的账号,分布式工作的设计在设计活动节点属性时已经指定。代理界面记录所有代理的登录情况,包括用户名称、IP地址、订阅信息等。通过该代理可以接收和发送请求,其发送请求过程类似三次握手,邀请?同意?确定其左侧为对应的邀请信息,右侧为本代理收到的返回信息。通过右侧代理收到的实时状态反馈,对本任务进行对应的操作。
3.4.2 协同控制机制实现
业务组织工具通过引入协同控制机制来协调多流程之间的协同工作问题,业务协调机制最主要的是协同规则的表述问题。通过具体的协同工作实例来展示该机制的工作方式。其中参加协同工作的业务流程模板如图5,图6所示。
在设计上述流程模板后,需要将该模板设置成协同模板组。本文将对应的协同工作组添加到对应的数据空中为其建立惟一标识。
其中流程模板信息展示协同模板组中各模板的信息,包括:模板ID、模板名称、活动节点号、活动节点名称等。该功能是通过模板验证模块的拓扑关系图来实现的。
4 结 论
本文在大量理论研究的基础上,结合现有的工作流系统设计并实现了一个基于工作流的业务组织工具,将具有特定功能的软件当作流程中的任务节点,通过定义流程模板将软件与任务节点联系起来,实现不同软件的协调运行,共同完成特定业务流程。
参考文献
[1] 杨博,刘大有,杨鲲.移动Agent系统通信效率的分析與优化[J].计算机研究与发展,2004,41(4):531?538.
[2] 袁清珂,赵汝嘉.并行工程环境下设计任务调度原理与实现方法的研究[J].计算机学报,2000,23(4):440?443.
[3] 柴学智,曹健.面向云计算的工作流技术[J].小型微型计算机系统,2012,33(1):90?95.
[4] JIANG P, SHAO X Y, QIU H B, et al. Interoperability of cross?organizational workflows based on process?view for colla?borative product development [J]. Concurrent engineering, 2008, 16(1): 73?87.
[5] 杜彦华,范玉顺.基于事件?状态?过程规则的跨组织工作流协同方法[J].计算机集成制造系统,2008,14(7):1342?1348.
[6] 范玉顺,吴澄.基于协调理论的工作流建模方法[J].计算机集成制造系统,2001,7(4):1?6.
[7] 石俊萍,李必云.基于工作流的管理系统开发模型[J].吉首大学学报(自然科学版),2010,31(6):49?52.
[8] 何清法,李国杰,焦丽梅,等.基于关系结构的轻量级工作流引擎[J].计算机研究与发展,2001,38(2):129?137.
[9] 刘向前,王晓琳.基于协调机制的多工作流过程合并方法[J].计算机工程,2003,29(2):118?119.