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
):
|
编号
|
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
):
|
编号
|
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_
|
转载于:https://blog.51cto.com/haidao/235205