5.为令牌驱动模型增加立体的表达能力
为了解决上述令牌驱动模型,或者petri网工作流,的诸多缺陷,我们从ECA(事件-条件-动作,Event-Condition-Action)规则获得启发,决定在令牌驱动模型的基础上,使模型能够响应工作流事件。
5.1工作流事件
工作流在运行的某一个时刻,具有特定的意义,比如过程实例启动后、过程实例结束前、工作项产生前、工作项产生后、工作项完成后等,诸如此类过程状态的变化、活动状态的变化、接收到特定消息、系统异常信息的出现、用户自定义的事件等,我们把这些时刻的事件称为工作流事件。
事件的要素包括事件类型、触发条件(Trigger)、执行的动作(Action)列表和参数列表。
引擎可以响应事件的实体包括:过程、活动、模型等。
事件类型:过程事件、活动事件、系统事件和消息事件。
一个工作流事件产生后,可以执行一些处理,比如发个邮件,执行一段代码等,这些处理我们称为工作流动作。
5.2工作流动作
在工作流事件发生时执行的预定义的程序称为工作流动作。
工作流事件与动作之间对应关系是1:N关系,即一个事件可以定义多个动作,执行时按照动作定义的先后顺序先后解析执行。而且动作的执行可以分成同步和异步两种。同步动作就是在工作流事件的动作执行与流程流转是同步串行的,异步动作就是工作流事件的动作执行与流程流转同时执行,是并行的。
增加了对工作流事件的响应能力后,令牌驱动模型在运行过程中,不仅有平面的状态变迁,而且在状态以外,多了对事件的响应,好比是在平面状态变迁图上增加了一维,变成立体的了。我们把这种能响应工作流事件的令牌驱动模型称为立体工作流。
5.3立体工作流
我们对基于petri网的信牌驱动模型进行扩充,使其在运行过程中能够实时响应工作流事件,也就是说在基于状态的基础上,再增加一维:事件。我们称这种不仅基于状态驱动而且能够响应工作流事件的工作流模型为立体工作流。
相应的把petri网工作流和不支持工作流事件的令牌驱动模型称为平面工作流。
5.4平面工作流
对于令牌驱动模型这种基于状态的工作流模型,由于工作流引擎本身没有主动的行为能力,其本身是一个状态机,流程只能按照预设规则进行状态变化的工作流模型,我们称其为平面工作流。
平面工作流的特点就是基于状态,预设驱动,不能对工作流运行过程中的事件进行主动响应。而立体工作流在基于状态的基础上,对工作流事件进行响应,使其执行预定义的一些动作。立体工作流模型示意图如下:
图2 事件模型示意图
如图2所示,令牌驱动模型运行在二维平面上,通过在工作流事件的点上触发一些事件,使得工作流模型在这些点上能够执行一些动作。在令牌驱动模型流转的过程中,这些动作或同步或异步在第三维上运行。这样使得整个模型在一种立体状态下运行。立体运行的模型,反应更加丰富了,模型不仅可以从一种状态变化为另一种状态,而且在状态变化前、变化后等许多细致入微的点上,都可以添加动作代码,模型反应更加细致,表现力更丰富。
6.立体驱动模型表达能力分析
对前面描述的场景案例,利用立体工作流模型可以按照如下的方式建模:
图3 财务报销审批流程图
图4 财务报销审批流程的事件设计图
为了实现要求的邮件提醒的功能,利用立体工作流技术,可以为每个工作项的“产生工作项之后”事件添加一个动作,如图4,为“填写报销单”这个活动的“产生工作项之后”事件添加一个名为mail的动作,该动作利用JavaScript脚本编写了一段发送邮件的代码。
在产生工作项之后,该事件被触发,动作被执行,则邮件被发出。从而实现了邮件提醒的功能。
至于第二个需求,要求发送消息与产生工作项同时进行,只要在“产生工作项之前”事件中添加一个动作,由该动作发送消息,并且设置动作的执行方式为“异步”,则动作执行与产生工作项就会并行执行。
这样 ,立体工作流就轻松解决平面工作流不好解决的问题。由上面的场景案例可以看出,立体工作流模型在保持信牌驱动模型良好的表达能力的同时,更进一步增强了模型的灵活性。
在模型的整个运行过程中,为用户的参与提供了入口,提供了人工干预、促进模型流转的能力。使得人与工作流模型的交互能力更加增强。
7.立体工作流特点
总结立体工作流SynchroFLOW4.0的特点,包括如下一些优势:
(1)立体工作流为令牌驱动模型增添了主动行为能力。
(2)立体工作流表达能力增强。
(3)立体工作流提高了系统的交互性。
(4)商业产品的丰富的预设动作库,减轻了应用系统的开发量。
(5)使得更多的驻留在应用系统的程序可以独立出来,模块化,进而融入工作流引擎的运行中去。由工作流引擎处理预设动作,可以统一处理系统级的事情,比如事务、异常处理、性能等。
(6)满足了工作流系统与基于工作流的应用系统之间的松耦合要求。(T121)
<<上一页
1
2
3