基于有限状态机的工作流引擎的设计

基于有限状态机的工作引擎的设计
邹晶;刘毅敏
【摘 要】在企业办公自动化的平台构建中,工作流引擎作为快速开发中间件起到了很重要的作用.设计一种基于有限状态机建立流程模型的工作流引擎,将建模重心从业务的过程转移到待处理的业务流程实体上.此外基于AOP建模思想来提高流程业务动作的可扩展性和对多变复杂流程的适应能力.该模型被划分为事件、变量、流、权限等子模块和流程管理引擎,并结合产生式规则的方法提出状态迁移的推理算法来控制工作流程的流转.模型通过可视化界面进行定制,使用XML文档序列化存储到数据层.该工作流引擎已经在某企业的实际应用中获得了较好的应用成果.
【期刊名称】《计算机应用与软件》
旋流沉砂器
【年(卷),期】2018(035)008
举宫是什么意思
【总页数】6页(P60-65)
【关键词】工作流引擎;有限状态机;产生式规则
瑞利信道
【作 者】邹晶;刘毅敏
【作者单位】武汉科技大学信息科学与工程学院 湖北武汉430081;武汉科技大学信息科学与工程学院 湖北武汉430081
【正文语种】中 文
【中图分类】竞赛抢答器TP311
0 引 言
工作流引擎(WorkFlow Engine)是计算机集成应用系统的一个重要组成部分,它在企业信息化办公领域已经被实践证明了能大大提高企业的业务管理水平,被广泛应用在业务流程较为复杂的办公流程(Office Automation)、电子商务、企业资源规划等领域。基于工作流引擎的设计平台是在企业信息化办公系统开发之上抽象出来的“信息化平台快速开发中间件”,基于模型或消息驱动,提供可视化界面工具定制工作流数据模型以及流程流转控制组件,实现中间件生成基础软件模块、支持可扩展的快速开发[1]。大多办公自动化系统的内核就是工作流引擎,引擎负责驱动业务流程运转、提供解释器来解释各个工作流节点的意义[2],
实例并初始化工作流程,执行和操作正在运行的流程。它的功能大致都包含有定制模型工具、流程调度器、外部数据访问接口等。由于不同业务不同工作流程的差异性和复杂性,一个可扩展且松耦合的工作流引擎是十分必要的,本文以有限状态机建立流程模型以达到适应复杂业务的要求。
rbd-508
1 相关工作
国内外大量相关人员对工作流引擎系统技术进行了研究和实现,并取得了较好的成果。至今很多公司和活跃的开源社区也推出了一系列工作流引擎,文献[3]提出了基于JBPM工作流引擎的实现,它设计一种TopBPM工作流引擎并应用在金融行业,降低了企业成本,缩短开发时间。文献[4]提出了一种基于petri网理论的工作流引擎,并提出了灵活可重用的网络信息系统的快速开发应用程序的模块化的系统模型(RADWIS)。类似的还有基于Activity的工作流引擎等。
上述工作流实现的缺点是对使用者的要求过高,学习成本较大,考虑到实际企业中操作人员的计算机水平,本文提出一种新型工作流引擎的实现机制,即基于有限状态机和消息驱动机制,采用Winform技术设计可视化界面,操作人员只需要进行相关跳转条件的设置即
可定制工作流模型,然后采用AOP思想增强模型以适应多变的业务流程,实现松耦合和高扩展性。
2 工作流与有限状态机
2.1 工作流
工作流是对生产过程中某些固定步骤的活动而抽象出来的事物。它通过将日常业务流程划分成特定固定数量步骤、由特定角的人员,按照定义好的规则来流转这些流程,从而提高办公效率[5]。工作流相关技术的诞生迅速得到了广泛的研究和应用。
由于业务流程在各行业的区别很大,工作流基本概念很难达成共识,所以工作流标准尚未统一,正处于制定阶段[6],目前还没有一个标准被大范围的采用,比较有代表性的规范有:XPDL、BPML、BPEL、OMG、WSCI等[7]。在这其中,WFMC提出的工作流管理参考模型有着广泛的研究和拓展应用,如图1所示。
图1 工作流管理参考模型
2.2 有限状态机
有限状态机(FSM:Finite State Machine)是表示有限多个状态以及在这些状态之间迁移和动作的数学模型。FSM可以被作为对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中也有广泛的应用,例如:计算机网络中的TCP协议,在建立可靠传输的时候,就使用了有限状态机,有LISTEN、ESTABLISHED、WAIT、CLOSED等状态。
可以通过一个五元组表示FSM数学模型:M=(Q,q0,Σ,δ,F),其中Q为状态的非空有限集合。q∈Q,q为M的一个状态。q0∈Q,是M的开始状态(初始状态或者启动状态)。Σ代表输入字母表。输入字符串都是Σ上的字符串。δ为状态转移函数(转换函数或移动函数),δ:Q×ΣQ,对任意(q,a)∈Q×Σ,δ(q,a)=p表示:M在状态q读入字符a,将状态变成p,并将读头指向输入字符串的下一个字符。F是M的终止状态集合,若q∈F,则q称M的终止状态。
为了描述一个有限状态机的工作状况,可采用状态转换图[8]。状态转换图是一个有向图,如图2所示。图中每个节点表示一种状态,一条边(或弧)表示一个状态迁移关系。初始状态节点q0用没有起点的箭头指向它来表示。若q0状态的输入为a,则进入状态q1,其他状态转移同理。终止状节点q3是机器完成了它程序之后的状态,通常表示成双重圆圈。
图2 FSM状态转换图
2.3 工作流与有限状态机的映射
工作流程是由具体业务多环节共同组成,每一个环节又都由多个不同步骤构成,过去对工作流建模的思想是基于序列化思想来进行的。这种建模方式具体关注的是业务执行过程和顺序,无法满足一些复杂多变的业务,如有分流、聚合、并行、跳转等特点的工作流程[9]。基于上述问题,本文提出基于有限状态机的思想建模,将建模重心从业务的过程转移到待处理的业务流程实体上,无论流程多复杂,只需为工作流程定义有限个状态[10],初始状态统一定为Start,同时定义业务实体在某个状态上可能接收到的输入,再限定状态之间跳转的条件,每次输入中包含了跳转条件就发生状态迁移,进入新的状态,直到到达终止状态End。图3是某石化企业的一个工作流程:每一个矩形代表一个状态,箭头代表跳转方向和条件。当条件1满足时,由ZzSubmit状态跳转到JwxAdvice状态;条件2和条件3进行了工作流的分流,满足条件2进入CbConfirm状态,满足条件3进行ConfirmDone状态 ,同时满足则可两个状态并行;满足条件4后进行聚合。
桶盖图3 工作流程示例
从上述具体实例普及到一般情况就是:无论流程多复杂都可以分为有限个步骤,把一个业务流程的每一个步骤当作有限状态机的某一个状态。一个状态在某一条件下迁移到另一个状态完成的动作就是流程的流转;当一个状态有多个输入的时候,流程肯定存在聚合,从不同状态能进入同一个状态;当一个状态有多个输出的时候,流程肯定存在分流或者并行,从当前状态在某一条件下迁移至不同状态。
借助上述的映射思想,为了使工作流模型更加饱满并且适应性更强,利用AOP(Aspect Oriented Programming)面向切面的编程思想(如图4所示),在状态迁移条件满足后发生状态跳转首先进入一个前置动作Beforeaction,执行完前置动作再进入本状态。状态信息包含相关输入参数设置,定时功能设置,权限认证设置和基本属性等,状态的执行动作为Currentaction,且在跳出本状态后进入后置动作Afteraction。通过对模型的进一步完善,使得工作流模型更加具有可扩展性和对复杂多变流程的适应能力。
图4 AOP思想映射
3 具体设计与实现
3.1 模块设计
依据上述的工作流与有限状态机的映射思路,本文将工作流模型划分为事件、变量、流、权限等子模块和流程管理引擎。这些模块通过.NET平台的Winform技术,分别设计成可视化的操作控件,可由操作人员(无需专业知识)定制工作流模型,下面进行各模块介绍:
事件 Event(流程节点)类。其属性包含了由有限状态机对工作流程映射之后的所有流程节点基本信息。节点还有对流程调度前后的业务动作执行方法。一个事件代表一个状态机的状态,一个完整流程是一个状态机。
变量 Param(变量集合)类。其定义着每个工作流程的变量集合以及每个流程节点相关的变量。业务数据都保存在变量表中,通过解析方法可以读取并持久化到数据库中。变量表存储着状态机各状态相关的输入和输出数据。
流 Flow(流程流转)类。这个类定义着流程流转的规则,当变量表接收到业务数据输入时,工作流引擎会根据Flow中定义的路由规则去实现状态转移。每个流中包含了状态机状态迁移的条件。

本文发布于:2024-09-22 16:43:39,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/302245.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:状态   工作   流程   引擎   模型   状态机   业务
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议