《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 可视化工作流建模工具WorkFlowEditor设计与实现
可视化工作流建模工具WorkFlowEditor设计与实现
2016年微型机与应用第06期
袁华,刘鹏,欧阳宁,莫建文
(桂林电子科技大学 信息与通信学院,广西 桂林 541004)
摘要: 针对企业业务过程建模的需求,分析目前典型的工作流过程建模方法,并结合工作流管理联盟提出的XPDL过程定义语言,设计一种可视化工作流建模工具WorkFlowEditor。依据“问题分离”原则,对WFMC的工作流过程定义元模型进行了改进,使建立的模型具有易修改、元素可重用等特点。针对建模元素可扩展性的需求,通过定义建模元素类的通用接口和设计一种动态加载方案,在很好地方便企业用户定制建模元素的同时又不需要修改建模工具。针对多任务多分支环境下复杂的流程编辑问题,设计了一种有限状态机(FSM)模型,实现了复杂编辑动作的实时性处理和灵活控制,降低了时间复杂度,并且实现模块化编程,很好地实现了流程的建模。
Abstract:
Key words :

  袁华,刘鹏,欧阳宁,莫建文

  (桂林电子科技大学 信息与通信学院,广西 桂林 541004)

  摘要:针对企业业务过程建模的需求,分析目前典型的工作流过程建模方法,并结合工作流管理联盟提出的XPDL过程定义语言,设计一种可视化工作流建模工具WorkFlowEditor。依据“问题分离”原则,对WFMC的工作流过程定义元模型进行了改进,使建立的模型具有易修改、元素可重用等特点。针对建模元素可扩展性的需求,通过定义建模元素类的通用接口和设计一种动态加载方案,在很好地方便企业用户定制建模元素的同时又不需要修改建模工具。针对多任务多分支环境下复杂的流程编辑问题,设计了一种有限状态机(FSM)模型,实现了复杂编辑动作的实时性处理和灵活控制,降低了时间复杂度,并且实现模块化编程,很好地实现了流程的建模。

  关键词工作流模型可视化建模;XPDL;有限状态机

0引言

  工作流由于在处理复杂任务以及集成异构资源方面的巨大优势,工作流技术的应用日益广泛[12]。按照工作流管理联盟的定义[3],工作流是“按照一定预先定义的规则,使得文档、信息或任务能够在不同的参与者之间传递执行,从而实现全部或部分经营过程的自动化执行”。工作流模型是对工作流的抽象表示,它的主要目的是定义出正确的过程模型,完成实际的业务过程到计算机可处理的形式化定义的转化。工作流的描述应当基于具有丰富语义表达功能的建模方法。目前典型的工作流过程建模方法[48]有:基于语言行为理论的工作流过程建模方法、基于形式化表示的过程建模方法(如Petri网)、基于事件驱动的过程链(EventDriven Process Chain, EPC)过程建模方法、基于活动网络的过程建模方法。

  参考文献[4]指出基于语言行为理论的建模方法主要针对于以人的交互为特征的过程,用于描述人与人之间的协作。参考文献[5]分析了Petri网兼顾了严格的语义与图形语言两个方面,能精确方便地对过程的控制逻辑进行定义,但无法体现数据流,并且组成模型的元素数量过多。参考文献[6]指出EPC描述能力强且易于理解,但建模元素数量过多且缺乏对各个业务处理之间的数据流的描述。参考文献[7]指出基于活动网络的过程模型可读性最好,对于非专业人士来说是一种最直观、最自然的过程表达方式,但此方法描述复杂过程逻辑时有困难。综上所述,不同的模型侧重点不同。

  因此本文在“基于活动网络的建模方法”的基础上进行扩展,引入EPC模型的“路由逻辑”来描述过程模型,即给非专业的人士以直观的表示又可以描述复杂的流程。采用工作流管理联盟提出的“扩展标记流程定义语言(XML Process Definition Language, XPDL)[9]”过程定义语言来定义过程模型,它为工作流模型的开发和运行环境之间提供了形式上的分离[10]。利用建模元素类与操作类分离及预留扩展接口等模块化程序设计思想[11],建模工具WorkFlowEditor具有良好的扩展性和通用性,并且引用有限状态机(Finite State Machine, FSM)[12]编程思想对编辑动作的控制进行实时性处理。

1改进的过程定义元模型

  元模型是一种描述工作流模型内在联系的模型,用来描述工作流模型内部的活动、活动之间的关系及活动属性。

  图1所示的元模型把表示业务规则的分支、汇聚以及约束嵌在活动的内部。把它们视作为活动说明的一部分。企业业务过程的动态变化是非常普遍的,此时,结构和约束的频繁变化必然会引起活动定义也随之改变,非常不方便。为了屏蔽变化带来的副作用,引入软件工程一个核心原则——问题分离(Separation of Concerns)原则。把活动(Activity)分解组织为粒度更小、更容易管理和理解的部分,根据功能和负责业务的不同,把活动细化为任务活动,包括人工活动、自动活动、子流程活动;起止活动,明确了流程的开始和结束;把分支(Split)、汇聚(Join)和它们的约束(AND,OR,XOR)这些逻辑关系独立出来用新的元素——路由活动(Route)来表示,如图2所示。

001.jpg

2工作流建模工具

  2.1建模元素描述

  为了描述过程模型,根据图2过程定义元模型实体及实体之间的关系,并结合XPDL过程定义语言来设计建模元素。实体元素对应建模元素类,实体元素之间的嵌套聚合关系,对应建模元素类之间继承聚合关系。实体元素属性对应类中的属性。依据以上原则,给出建模元素类相对应的类图,以及类之间的继承、聚合关系。其中,黑色实心箭头表示继承关系,箭头指向父类;菱形空心箭头表示聚合关系,箭头指向包含类。如图3所示。

  

002.jpg

  (1)Common类是所有建模元素类的父类,包含建模元素类的所有共有属性和方法,如建模元素Id、Name、Description等共有属性。

  (2)Package(包)类是总的容器类,它包含流程定义类(WorkflowProcess)、应用程序类(Application)、参与者类(Participant)和相关数据类(DataFields)这几个类的集合,每一个集合用一个List<T>类来表示,上面这些集合与Package构成了聚合关系。Package类中保存这些类对象的指针,作为公共变量,可以被整个包内的实体访问。WorkflowProcess类是系统的核心,它最重要的组成部分是活动类(Activity)和迁移类(Transition)。同时也封装了用于建模元素与XML文档相互转换的方法SaveToFile和LoadFromFile。

  (3)Activity类有3个子类:BlockActivity(块活动)、Implementation(执行类)、Route(路由)。其中Implementation类有3个子类:FlowNo、CallSubFlow、ToolApplication,分别对应人工活动、子流程活动、自动活动。Route包含3种类型的路由,分别是Parallel(并行)、Exclusive(排他)、Inclusive(包含)。

  2.2扩展接口及动态加载

  为了方便企业用户定制建模元素的同时又不需要修改建模工具,提高建模工具的扩展性和通用性,本文设计了建模元素扩展接口和一种动态加载建模元素的方案。

  (1)扩展接口

  抽象类Activity是活动类的基类,包含活动类的一些公共属性和方法。通过继承基类来设计满足自己需求的元素类。Activity相当于一个接口,要扩展的建模元素需要满足这个接口特性,才能被建模工具识别。

  (2)动态加载

  建模元素打包在DLL文件中,通过动态加载的方式加载到建模工具中,让建模工具的数据模型、控制模型和显示模型分离,这样方便对建模元素扩展和更换的同时,不影响逻辑和显示部分。为了清楚地描述建模元素是如何加载的,下面给出动态加载的流程图,如图4所示。

003.jpg

  2.3建模工具操作类描述

  为了简洁和便于描述,图5中仅显示了几个框架类的关系图。

  

004.jpg

  (1)MainForm为主窗体框架类,包含ToolBox、PropertyEditor、DocView、ProjectManager、MapView,它们分别嵌入到各自的窗体ToolBoxWin(工具箱区)、PropertyEditorWin(建模元素属性编辑区)、DocViewWin(流程绘图区)、PrjManagerWin(工程管理区)、MapViewWin(缩略图区)中,而这些窗体均继承在ToolWindow类。这样就构成了整个流程编辑器的主体框架。

  (2)ToolBox为建模元素管理模块类,主要为WorkflowEditor提供用于建模的所有元素;提供建模元素扩展接口和动态加载建模建模元素方法。

  (3)PropertyEditor为建模元素的属性编辑类,它是一个抽象父类,每一个建模元素都有一个对应的属性编辑控件,当选中建模元素时,属性编辑控件将会显示在PropertyEditorWin窗体中,用户就可以修改建模元素属性了。

  (4)MapView为缩略图类,通常情况下内存画布都大于绘图显示区,为了可以清楚地看到整个内存画布区域以及了解流程的绘制情况,定义了缩略图类,它可以实时地反映绘图区以及整个内存画布的情况。

  (5)ProjectManager是工程管理类,包含create、delete、open、close等操作工程和流程文件的方法,并且可以显示整个工程的目录结构。

  (6)DocView是绘图类完成图形的绘制和显示,FlowDoc类则实现图形编辑动作控制,这样可以使显示(View)和控制(Control)分离。

  2.4有限状态机(FSM)

  在建模工具的绘制区域编辑流程时,为了提高对复杂编辑任务的实时处理能力,灵活控制图形编辑动作,在建模工具中引入有限状态机(FSM)编程思想。有限状态机的工作原理如图6所示,当发生事件(Event)后,根据当前状态S1,决定执行的动作(Action),并转为下一个新状态S2。

  

005.jpg

  为了方便清楚地描述有限状态机的应用,图7给出了FSM模型的类关系简图。

006.jpg

  FiniteStateMachine是定义的有限状态机类,代表一个FSM,它直接包含状态机的状态集类(StateList)、状态节点类(StateNode)和一个按接收的事件进行状态迁移的方法FiniteStateMachine::Transfer。StateNode表示一个可以持续存在的状态,是FSM类的核心,它的最重要的组成部分是状态迁移类(StateLink)和取得当前状态节点按事件迁移到的下一个状态节点的方法StateNode::Transfer()。

  为了清楚地描述FSM状态迁移图,以调整连线状态的状态迁移为例,给出调整连线状态的状态迁移图,如图8所示。

007.jpg

  从图8可以看出:首先,FSM处于初始状态None,响应按下鼠标事件MouseDown,此处没有任何条件,执行记录鼠标按下的位置的动作;然后根据鼠标是否点在连线上[MouseOnConnection]的条件,进入点住连线状态PichOnCnn,触发鼠标移动事件MouseMove,根据鼠标是否点在连线的端点[MouseOnCnnPoint]和鼠标是否点在连线的中点[MouseOnCenterPoint]这两个不同的条件,分别进入调整连线状态ModifyCnn和调整连线1状态ModifyCnn1。当进入ModifyCnn状态时,触发鼠标移动事件MouseMove,执行修改连线端点ModifyPointTrack的动作,此时状态未发生改变。触发鼠标放开事件MouseUp,此时没有条件,执行擦除改变前的连线,绘制改变后的连线RedrawConnection的动作,返回初始状态None。

  首先,将调整连线状态(ModifyCnn)添加到状态集,然后按照调整连线状态的迁移触发事件、条件、动作、目标状态节点完善调整连线状态的状态迁移列表。下面给出调整连线状态的实际效果图,如图9所示。

  

008.jpg

  从以上分析可以看出,在初始化有限状态机时,把任务的所有状态添加到状态集中,并为每个状态添加状态迁移列表即可,每个状态之间是相互独立的。针对多任务多分支处理系统,使用有限状态机比使用多层次判断语句更有效。程序中每个状态的执行时间是相同的,使用多层次判断语句执行完整个任务需要执行N×(N+1)/2个判断语句,而使用有线状态机只需执行N个判断语句,时间关系:UPNIYPA%L`O7~N{DFO84EPJ.jpg,从而降低了程序的时间复杂度。

3建模实例

  本文以“广西温室气体排放管理服务平台”项目中“企业直报流程”为例,如图10所示,运用WorkFlowEditor流程编辑器定义过程模型。

  企业直报流程描述如下:

  (1)企业填报人员进入填报流程,选择年份;

  (2)企业填报人员同时要填写生产信息活动、电热力消费活动、燃料燃烧活动;

  (3)任何一个要填写的活动填写完毕后,都可以单独提交;

  (4)提交之后要主管单位人员进行审核;

  (5)如果审核结果通过则交由第三方机构核查,审核未通过则返回,让企业重新填写上述活动。

009.jpg

  图10中,生产信息、电热力消费、燃料燃烧、提交4个活动的参与者是企业人员;主管单位预审活动的参与者是业务主管人员;第三方核查活动的参与者是第三方机构人员。

011.jpg

  为了更直观、清晰地理解图10的企业直报流程模型,表1列举出企业直报流程示意图中各个实体元素的数目。活动包括两个事件活动,7个任务活动,3个路由活动。

  (2)工作流相关数据主要有4个,分别是年份、组织机构代码、提交状态和预审结果。下面将给出“企业直报流程”的设计视图,如图11所示。 

010.jpg

4结论

  通过改进的工作流过程定义元模型并结合工作流过程定义语言XPDL设计了一种工作流建模工具WorkFlowEditor。详细阐述了建模元素类、操作类以及它们之间的关系。在建模工具中留有建模元素扩展接口并设计一种动态加载方案,方便扩展建模元素集,满足用户自定义需要。在WorkFlowEditor中设计了一种有限状态机模型,可以对复杂编辑动作进行灵活控制。该建模工具基于模块化的程序设计思想,具有良好的可扩展性和通用性。实验结果表明, WorkFlowEditor具有一定的合理性,用户可以方便快捷地设计出满足自身特点的工作流流程。

参考文献

  [1] 尚世峰,姜进磊,郑纬民. CWFlow:支持资源自适应使用的云工作流框架[J].清华大学学报(自然科学版),2013,53(3):415420.

  [2] 蔡敏,卢佩.基于事件扩展UML活动图的工作流过程建模方法[J].计算机集成制造系统,2014,20(7):17581767.

  [3] TC0010031995. The workflow reference model[S]. Workflow Management Coalition,1995.

  [4] Yan Cai. Comparative analysis of the workflow modeling[J]. 2012 International Conference on Management of eCommerce and eGovernment(ICMeCG), IEEE, 2012:226229.

  [5] 郑长友,刘晓明,姚奕,等.基于Petri网的面向测试的工作流系统建模方法[J].电子科技大学学报,2014,43(1):119124.

  [6] 张朝辉,刘大为,刘伟江.工作流建模技术综述[J].微电子学与计算机,2008,25(10):6971.

  [7] 刘怡,张子刚,张戡.工作流模型研究述评[J].计算机工程与设计,2007,28(2):448451.

  [8] 刘继承,张爱茹,李征鸿,等.基于petri网的文件审批系统工作流建模[J].微型机与应用,2013,32(2):7780.

  [9] WFMCTC1025. Workflow process definition interface XML process definition language[S]. Workflow Management Coalition,2008.

  [10] WfMCTC1016P. Interface1:process definition interchange process model[S]. Workflow Management Coalition ,1999.

  [11] 焦合军,张璟,李军怀,等.协同设计中基于混合Petri网的云工作流表示模型[J].应用科学学报,2014,32(6):646651.

  [12] 林晓勇,糜正琨,陈奎成.基于FSM的VPN自动部署设计与应用[J].计算机工程与设计,2011,32(8):26142618.


此内容为AET网站原创,未经授权禁止转载。