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

基于分层有限状态机工作流引擎设计摘要:有限状态机(FSM)是对反应式系统建模的一种有效工具,基于工作流引擎涉及到多个对象以及各个对象本身具有的复杂状态,本文提出了通过分层有限状态机来描述复杂对象状态的方法,并结合实际应用给出了一种具体实现,改善了软件的可描述性,并提高了系统的健壮性与可维护性。关键词:工作流引擎工作流管理联盟规范分层有限状态机中图分类号:TP301文献标识码:A文章编号:1007-9416(2013)04-0124-021引言有限状态机(FSM)[1〜3]用于对系统的动态行为建模,一般用状态图(statechartdiagram)来可视化表示,是对反应式系统建模的有效工具,FSM和状态图的形式化机制得到了很多扩展研究,可有效地支持各种复杂行为的建模,并广泛应用于UML等面向对象建模方法中。但是FSM用来描述大型复杂系统却十分困难。分层有限状态自动机(HFSM)对FSM进行了扩展,允许一个状态本身是一个HFSM,大大简化了对大型复杂系统的描述。2HFSM的定义和性质如果sGS(M)且s是一个HFSM,则称s为M的“子HFSM”,称M为s的“父HFSM”。M的“后代HFSM”定义如下:1)M自身是M的“后代HF2SM”;2)M的“后代HFSM”的“子HFSM”是M的"后代HFSM”。因此,M的所有"子HFSM”的叶子状态集合构成了M的除第一层叶子外的叶子状态集合的一个划分。令S(M)AL(M)中的元素为第一层叶子;如果s是M的一个“子HFSM”的第i层叶子,则s是M的第i+1层叶子。一个HFSM的层数m定义为其叶子状态的最大层数。工作流引擎涉及相当多的工作流对象,每个对象拥有自己的状态,各个对象的状态不一样并且事件触发后,对其他工作流对象的影响也不一样。简单地说,工作流引擎包括工作流过程对象,工作流活动对象,任务项对象,自动工具对象等等,包含关系大致可分为三层,第一层,工作流过程对象。过程可以包含各种不同类型的工作流活动,如起始活动,结束活动,人工活动,自动活动,路由活动等。第二层,工作流活动对象。其中人工活动和任务项对象有关联,自动活动与自动工具对象有关联。第三层就是任务项(图1)。(图1)描绘的是三层状态机结构。人工活动不直接面向参与者,而是通过workitem与参与者交互,参与者有6种状态,不同类型的参与者对任务项的处理,也许会对同属一个参与者的不同员工有影响,所以workitem也有自己的状态和自己的控制字段,并和活动作状态交互。所以对于人工活动来说,有三层状态:过程一>活动一>任务项。而自动活动主要处理业务逻辑,没有界面,不需要workitem来处理,因此对于自动活动来说,它就只有两层状态,过程一>活动。每层状态机的状态变化,可能会对其他状态机产生影响。如过程启动,就对某些活动的状态有影响,若是人工活动,则还对相应的workitem有影响。同样,参与者在任务列表挂起了某个任务项,则可能会挂起他所属的活动,该活动的挂起则也许会挂起他所属的过程。3分层状态机的实现在面向对象的实现中,工作流引擎的状态机实现采取的是状态模式,该设计模式是通过改变对象内部的状态来帮助外界对象控制自己的行为,当内部状态改变时改变自身行为,外界对象看起来好像不同的状态有不同的处理方法。说明:(1)此为过程状态模式,用来实现过程有限状态机。虽然状态模式和有限状态机(FSM)并不等同,但在面向对象的架构中,状态模式能较好地实现有限状态机。(2)系统均采用接口编程方式,故抽象过程类所有实线本来应该指向状态类接口,这里为了突出视觉效果,故意而为之,指向接口的实现类。类图设计完毕后,将生成代码,届时手工把引用改成接口即可。在工作流引擎设计中,各个工作流对象的状态变迁采用状态模式来实现,同时采取观察者模式和事件触发机制,过程类、活动类和任务项类设定为被观察者(Subject),事件触发是观察者(observer)。过程,活动,任务项的公共代码写在抽象类中,具体的类型由实现类来实现,用事件触发类和观察者方式,使各层之间的状态相互影响不是通过硬编码,而是通过一种传递的方式。这样,一个健壮的可扩展的工作流引擎就实现了。在生产环境中结合应用系统所采用的web框架,设计一个web表单设计器以及过程设计器,完整的工作流管理系统就能在实际应用中...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?