Node 类型祥解: <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

  任务结点( task-node 任务结点是代表由人介入的一个或多个任务。因此当流程运行到一个任务结点时,会生成任务实例对象( task instances ,并添加到参与人的任务列表中,之后结点会处于等待状态,直到参与人完成他们的任务,并激活流程继续向下执行。

 

状态结点( state

状态结点是一个典型的等待状态。同任务结点不同的是,状态结点不会向任务列表添加任务实例。当业务进程需要等待外部系统的干预时,这种结点是很有用的。假设如下情况:在进入该结点时,通过 node-enter 事件向外部系统发送一个消息,然后结点进入等待状态;当外部系统完成处理,并回送一个消息,这将导致触发一个 token.signal() 方法的运行,该方法重新激活正在等待的流程继续下行。

 

  判定结点( decision 判定节点的作用就同它的命名一样,用来决定业务流程的走向。有两个不同裁决模式,两者的区别在来做决定:是由流程内部的变量,还是由外部实体来提供决定的依据。当需要对流程执行方向做判定时,就要使用判定结点( decision 。有两种方法来指定判定条件。最简单的是在转向( transitions )中添加条件元素,条件可以是能返回 boolean 值的 EL 表达式或者 beanshell 脚本。在运行过程中,判定结点将首先轮训有条件设定的转向( leaving transitions ),轮训的顺序是按照 XML 文件中指定的。当找到第一个条件返回为 true 的转向时,该出口将被选中。如果所有的表换中的条件判定都是 false ,则选择 XML 文件中排在第一位的转向作为出口。还有一种途径是在判定结点上定义一个返回转向名称的表达式,通过表达式计算返回的名称,决定选择哪个 transition. 另一方式是在结点上设定处理( handle 元素。在结点上指定一个实现了 DecisionHandler 接口的 Java 处理类,该类通过返回选定的 transition 的名称来决定流程的出口方向。

当判定结点的出口是由外部程序来给出的时候,建议使用多个 transition 或者具有等待状态的结点。可以通过外部的触发器结束一个等待状态并提供一个 transition 的判定。

 

  分支结点( fork

         分支结点的作用是将单个执行流程分裂成多个并发的执行流程。默认的行为是为每个子流程生成一个子令牌,并建立子令牌和主流程根令牌之间的父子关系。

 

  合并结点( join

         相对于 fork 结点的分支, join 结点将分支收拢。默认的行为模式是当所有的分支(由同一个 fork 衍生出来的分支)都到达该结点的时候, join 结点将结束这些分支上的子 token ,并通过 token 上的父子关系找到上一级流程的 token ,将此 token 通过唯一的 transition 传播下去。如果只有分支中的部分 token 到达时, join 结点将处于等待状态。

 

  普通结点( node 普通类结点主要用于提供用户定制自己的程序代码。普通结点拥有一个 action 子元素,当流程到达该结点时,这个 action 就会被执行。可以通过实现 ActionHandler 接口来执行你想要的任何代码。此外普通结点也一样要负责流程的延续。

 

         在流程图上,普通结点用来表达一个用户关心的、与业务相关的处理逻辑;相比而言Action(下文中将会提到)则允许添加业务逻辑以外的程序处理,这些程序处理在流程图上是不可见的,也是业务流程分析所不用关心的。

 

 

编号

PD-003

对象

流程转向( Transitions

描述

流程转向是描述流程中从一个结点到另一个结点的状态转换过程,因此一个转向一定有一个源结点和一个目标结点。 jPDL transition 的命名是通产是唯一的,结点依靠 transition 的命名来区别到下一结点的路径,当一个 Node 中存在有多个同名的 transition 的时候,第一个 transition 将会被选中。结点转向的过程中,排在 transition 列表第一位置的即是默认的 transition

Java 对象

org.jbpm.graph.def.Transition

数据库表

JBPM_TRANSITION 该表存储流程定义中的转向对象。

表关联说明

JBPM_TRANSITION 表中,每条记录有自己的数据库流水号

 

ID_JBPM_TRANSITION 的外键( Foreign Keys ):

  • processdefinition_ - 该外键指向transition所属的流程定义对象ID

  • from_ - 该外键指向transition的源结点ID

  • to_ -该外键指向transition的目标结点ID

 

编号

PD-004

对象

动作( Actions

描述

Actions 是指一系列的在流程事件中运行的 Java 代码。流程图是软件需求的传达的重要手段,但它只是软件需求的一个投影,隐藏了很多技术实现的细节。 Actions 则是向流程图添加技术实现细节的一种机制,它可以很好的补充和修饰流程图。这意味着在不改变流程图结构的情况下,可以将 Java 的代码与之关联。 Actions 通过事件( Events )同流程绑定,常用的主要事件包括:进入结点、离开结点、进行转向。请注意,同 Events 关联的 Actions 和处于 Node 中的 Actions 是有不同的。处于 Events 中的 Actions 是通过事件触发执行的,它是典型的观察者模式,是无法影响流程控制的流向。而处于 Node 中的 Action 则要承担起流程传递的责任。此外, Actions 是可以命名的。可以通过 Actions 的命名在任何地方引用该 Actions 。命名的 Actions 可以作为主流程定义的公用子元素。这个功能可以提高对 Actions 定义的复用。

Java 对象

org.jbpm.graph.def.Action

数据库表

JBPM_ACTION 该表存储流程定义中的动作对象。

表关联说明

JBPM_ACTION 表中,每条记录有自己的数据库流水号 ID_

 

JBPM_ACTION 的外键( Foreign Keys ):

  • processdefinition_ - 指明action所属的流程定义ID

  • event_ - 指明action绑定的event ID

  • actiondelegation_ - 指明action的委派对象ID

  • exceptionhandler_ - 指定action的异常处理ID

  • referencedaction_ - 指向当前action引用的actionID

  • timeraction_ - 指向当前action引用的计时器action

 

编号

PD-005

对象

事件( Events

描述

事件表示流程执行中的某个特定的时刻。在流程执行的过程中,通过 jBPM 的引擎触发事件,这通常发生在 jbpm 计算后续状态的时候。事件总是和流程中的元素绑定,这些元素包括:流程定义( process definition )、流程结点( node )、流程转向( transition )和任务( task )。不同的元素会触发不同的事件,拿 node 元素来说,有 node-enter 事件和 node-leave 事件。事件是 action 的钩子,一个事件可以回调一系列的 action 。当 jBPM 引擎触发事件的时候,事件中绑定的 action 就会被执行。在 jBPM 中,事件模型是可传播的。一个子元素触发的事件,将逐层向上传播到顶层的流程定义元素。这样的设计使得事件可以被集中化处理。

Java 对象

org.jbpm.graph.def. Event

数据库表

JBPM_EVENT 该表存储流程定义中的事件对象,这些事件与相关的 action 绑定。

表关联说明

JBPM_EVENT 表中,每条记录有自己的数据库流水号 ID_

 

  • JBPM_EVENT的外键(Foreign Keys):

  • processdefinition_  - 指向event所属的流程定义ID

  • node_  - 指向event所属的node ID

  • transition_  - 指向event所属的transition ID

  • task_  -  指向event所属的任务ID