2.1 前台定义
Micro-workflow有自己的定义语言,即本文所称的前台定义,它的关键抽象是过程(Procedure),一颗由过程组成的层次树便定义了一个工作流程。图1就是定义树的元模型,这里主要有两种类型的过程:图1 micro-workflow前台定义元模型
(1)简单过程(Simple Procedure)——这些过程表示树(指定义树,非元模型)中的叶子节点,它既可以是一个代表软件服务的过程,也可以是一个代表用户必须完成的工作过程。 (2)复合过程(Composite Procedure)——复合过程用于表示对控制流(序列、条件等)的管理结构,是树中的非叶子节点。
2.2 后台定义
采用基础数据结构中的有向图来进行后台定义,其中节点代表活动步骤,节点之间的连接代表流(数据流或控制流)。控制流建立了节点的执行顺序,数据流定义了从一个活动传递到另一个活动的数据,任何图都有一个开始节点和终止节点。2.3 前台定义到后台定义的翻译
要完成从前台到后台的翻译,前台定义模型与后台定义模型之间必须有一个完备的映射。前台定义模型提供编译规则从而生成后台定义,micro-workflow中的编译是按照自顶向下的方式完成的,它从前台定义的根部开始,递归进行,每个复合过程编译它的子节点作为其相应后台定义图中的表示。每个简单过程编译成图中的一个节点,而复合过程中的信息则成节点之间的连接,生成的结果图就是工作流引擎可任意处理的后台定义,定义编译算法时要考虑所有存在的规则,如控制流、数据流以及发送给各个节点的消息类型等。图2大体描述了一个前台到后台的映射。图2 micro-workflow的前台/后台定义
3 工作原型修改
一个灵活的工作流管理系统应该具备WFT的修改功能,即便是已经有实例运行在WFT上,它也可以被修改,下面将解决这个问题。首先介绍WFT版本化的概念并给出图1的扩展,然后介绍修改操作(modification operation)的概念。3.1 WFT版本化
WFT版本化的主要思想是创建WFT的新版本而不是直接修改原有的WFT。WFT的行为信息保留在它的各个版本中,图3是图1元模型的扩展,提供了WFT版本化支持。 一个WFT由一个或多个版本组成,并且某一版本只唯一隶属于一个WFT,也就说一个版本可以有多个子孙,但只能有一个父亲,每个版本都有一个版本号作为唯一标识。当一个新的WFT加入到工作流模型中时,便建立了此WFT的根版本。如果要施加任何修改操作,则先创建此版本的一个子孙版本,然后在新版本上进行修改操作。一个版本可处于三种状态中:临时状态、发布状态及过时状态。一个版本一旦创建便置于临时状态中,处于临时状态的版本可以进行修改或移除,但不能进行实例化也不能产生子孙版本;一旦修改操作完成则变为发布状态,处于此状态的版本不能修改或移除,但可产生新版本;最后,当发布状态的版本变失效时,它的状态被置为过时。图3 支持版本化的工作流定义元模型