流程定义语言.docx
- 文档编号:25334370
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:43
- 大小:39.88KB
流程定义语言.docx
《流程定义语言.docx》由会员分享,可在线阅读,更多相关《流程定义语言.docx(43页珍藏版)》请在冰豆网上搜索。
流程定义语言
一JPDL
流程定义
1.1process-definition(流程定义)
流程定义的根节点,是所有节点的父节点
名称
类型
数量
描述
name
属性
可选的
流程的名称。
swimlane
元素
[0..*]
流程中使用的泳道。
泳道表示流程角色,它们被用于任务分配。
start-state
元素
[0..1]
流程起始状态。
注意,没有起始状态的流程是合法的,但是不能被执行。
end-state|state|node|task-node|process-state|super-state|fork|join|decision
元素
[0..*]
流程定义的节点。
注意,没有节点的流程是合法的,但是不能被执行。
event
元素
[0..*]
作为一个容器服务于动作的流程事件。
action|script|create-timer|cancel-timer
元素
[0..*]
全局定义的的动作,可以在事件和转换中引用。
注意,为了被引用,这些动作必须指定名称。
task
元素
[0..*]
全局定义的任务,可以在动作中使用。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程定义中的委托类所抛出的所有异常。
1.2node(自动节点)
这种节点和State相反,也称自动节点。
当业务程序实例执行到这个节点,不会停止执行。
而是会继续往下执行。
如果该节点存在多个离开转向。
那么,就会执行其中的第一个离开转向,在Node状态中,不需要外部参与者的参与,业务流程的这个部分是自动的、即时完成的。
名称
类型
数量
描述
action|script|create-timer|cancel-timer
事件
1
用于表示这个节点行为的定制动作。
普通节点元素
请参考普通节点元素。
1.3start-state(开始状态)
start-state是我们整个流程的开始节点,所有的流程实例从这里开始。
名称
类型
数量
描述
Name
属性
可选的
节点的名称。
Task
元素
[0..1]
起始一个流程实例的任务,或者用来捕获流程发起者
Event
元素
[0..*]
支持的事件类型:
{node-leave}。
transition
元素
[0..*]
离开转换,每个离开节点的转换必须有一个不同的名称。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
1.4end-state(结束节点)
对于每一个流程定义都会有一个结束节点,与开始节点对应
名称
类型
数量
描述
Name
属性
必需的
结束状态的名称。
event
元素
[0..*]
支持的事件类型:
{node-enter}。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
1.5state(状态)
State节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。
直到系统外参与者发起继续执行的命令,即调用signal或end方法,业务程序实例的执行才能够继续下去。
名称
类型
数量
描述
name
属性
必需的
节点的名称。
async
属性
{true|false},默认是false
如果设置为true,这个节点将会异步执行。
请参考”异步执行”章节。
transition
元素
[0..*]
离开转换。
每个离开节点的转换必须有一个不同的名称,最多只允许所有离开转换中的一个没有名称。
第一个转换被指定为默认转换,当离开节点而没有指定转换时,默认转换发生。
event
元素
[0..*]
支持的事件类型:
{node-enter|node-leave}。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
timer
元素
[0..*]
指定一个定时器,用来监视节点中的一个执行所持续的时间。
1.6task-node(任务节点)
其性质和node节点一样,在没有task的时候,也都是自动执行,不等待。
task-node被归类为一个等待节点,是指在task-node中的task列表中的task没有全部执行完之前,它会一直等待。
Task可以在task-node节点下定义,也可以挂在process-definition节点下。
最普遍的方式是在task-node节点下定义一个或多个任务。
默认情况下,流程在task-node节点会处于等待状态,直到所有的任务被执行完毕。
Task的执行是按顺序执行的,任务都完成后,token仍然不会指向后面的节点;需要自己手动调用()才会驱动流程到下面的节点。
名称
类型
数量
描述
signal
属性
可选的
{unsynchronized|never|first|first-wait|last|last-wait},默认是last。
signal指定了任务的完成对流程执行继续的影响。
create-tasks
属性
可选的
{yes|no|true|false},默认是true。
当需要在运行时通过计算来决定哪个任务将被创建时,可以设置为false,如果这样的话,在node-enter事件上加一个动作,在动作中创建任务,并且把create-tasks设置为false。
end-tasks
属性
可选的
{yes|no|true|false},默认是false。
如果设置end-tasks为true,在离开节点时,所有打开的任务将被结束。
task
元素
[0..*]
当执行到达本节点时所应被创建的任务。
请参考。
为了帮助读者理解task-node节点的signal属性,这里举例如下:
对于这样的流程定义:
a)这里没有定义signal属性的值,这就表明当节点中的三个任务都完成后,流程才进入后面的节点
b)当
c)当
d)当
e)当
f)当
g)当
当a这个任务节点没有任务被建立时,任务节点等待直到任务被建立。
1.7fork(分支)
一个fork把一个执行路线分割成多个执行路线.默认分支的行为是为每个离开分支转换建立一个子令牌,在令牌要到达的分支之间建立一个父母-子女关系
名称
类型
数量
描述
name
属性
必需的
节点的名称。
async
属性
{true|false},默认是false
如果设置为true,这个节点将会异步执行。
请参考”异步执行”章节。
transition
元素
[0..*]
离开转换。
每个离开节点的转换必须有一个不同的名称,最多只允许所有离开转换中的一个没有名称。
第一个转换被指定为默认转换,当离开节点而没有指定转换时,默认转换发生。
event
元素
[0..*]
支持的事件类型:
{node-enter|node-leave}。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
timer
元素
[0..*]
指定一个定时器,用来监视节点中的一个执行所持续的时间。
1.8join(联合)
默认联合(join)假设所有来自同一个父母的子令牌联合,当在上使用fork(分支)这个情形就出现了并且所有令牌分支建立,并且到达同一个联合(join)。
当全部令牌都进入联合的时候联合就结束了,然后联合将检查父母-子女,当所有兄弟令牌到达联合(join),父母令牌将传播(唯一的)离开转换,当还有兄弟令牌活动时,联合的行为将作为等待状态。
名称
类型
数量
描述
name
属性
必需的
节点的名称。
async
属性
{true|false},默认是false
如果设置为true,这个节点将会异步执行。
transition
元素
[0..*]
离开转换。
每个离开节点的转换必须有一个不同的名称,最多只允许所有离开转换中的一个没有名称。
第一个转换被指定为默认转换,当离开节点而没有指定转换时,默认转换发生。
event
元素
[0..*]
支持的事件类型:
{node-enter|node-leave}。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
timer
元素
[0..*]
指定一个定时器,用来监视节点中的一个执行所持续的时间。
对于Join节点,我们知道默认是要等到所有分支都到了流程才能往下继续走,要改变这一情况,我们可以通过给该节点加Action的方法改变该Join节点的Discriminator,就可以使只要有一个分支到达流程就可以继续执行的效果了
1.9decision(决策)
一个decision用以决定在多个执行路径中哪个才可以被执行。
如果你是一个程序员,把它可以理解成switchcase结构即可,一个decision能够具有许多离开的transition。
名称
类型
数量
描述
handler
元素
要么指定“handler”元素,或者在转换上指定条件。
一个的实现名称。
transition
元素
[0..*]
离开转换。
决策的离开转换可以被扩展为拥有一个条件,决策会查找条件计算为true的第一个转换,没有条件的转换被认为计算为true(为了建模“otherwise”分支)。
请参考。
请参考。
Handler所指定的DecisionHandler的实现类里的decide方法返回一个字符串,表示要执行哪个transition
1.10transition(转换)
转换用来指定节点之间的连接。
transition元素放在node里面,那么这个transition就会从这个节点出离开。
名称
类型
数量
描述
name
属性
可选的
转换的名称。
注意,每个节点的离开转换必须有一个不同的名称。
to
属性
必需的
目标节点的分级名称,表示将要达到的那个节点名称.
action|script
|create-timer
|cancel-timer
元素
[0..*]
发生转换时将要执行的动作。
注意,转换的动作无需放入事件(因为只有一个事件)。
exception-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
1.11event(事件)
JBPM定义了一系列与工作流节点元素相关联的事件,例如,流程实例运行过程中,可以触发节点进入(node-enter)、节点离开(node-leave)、流程启动(process-start)、流程结束(process-end)、任务创建(task-create)、任务分派(task-assign)、任务启动(task-start)等事件。
在流程定义时,JBPM的事件均与action绑定。
事件的触发将导致相应actions的执行。
名称
类型
数量
描述
type
属性
必需的
表示相对于事件要放置的元素事件类型。
action|script|create-timer|
cancel-timer
元素
[0..*]
在这个事件上将要执行的动作列表。
1.12action(动作)
一个action是一段java代码。
在流程执行期间在一些事件之上定义,这样会在相关事件触发时自动在工作流引擎上执行。
名称
类型
数量
描述
name
属性
必需的
动作的名称。
当动作被指定名称后,它们可以在流程定义中被查出,这对于运行时动作以及仅一次声明动作是有用的。
class
属性
或者用ref-name,或者用expression。
实现接口的类的全名。
ref-name
属性
或者用class。
所引用动作的名称。
如果指定一个引用动作,则本动作不需要再做处理。
expression
属性
或者指定一个class,或者ref-name。
一个解决一个方法的jPDL表达式。
accept-
propagated-events
属性
可选的
{yes|no|true|false},默认是yes|true。
如果设置为false,则动作仅在本动作元素的触发事件上被执行。
更多信息,请参考“”。
config-type
属性
可选的
{|||}。
指定动作对象将被怎样创建以及本元素的内容怎样象配置信息那样被动作对象所使用。
async
属性
{true|false}
默认false,这意味着动作将在当前执行的线程中被执行。
如果设置为true,一个消息将被发送到命令执行器,并且执行器组件将在一个独立的事务中同步执行动作。
请参考”异步执行”章节。
{内容}
可选的
action的内容可以被作为你定制动作实现的配置信息,这是考虑到可重用的委托类的创建。
有关委托配置的更多信息,请参考“”。
1.13script(脚本)
Script里是动作执行的beanshell脚本.
名称
类型
数量
描述
name
属性
可选的
脚本动作的名称。
当动作被指定名称后,它们可以在流程定义中被查出,这对于运行时动作以及仅一次声明动作是有用的。
Accept
-propagated
-events
属性
可选的[0..*]
{yes|no|true|false},默认是yes|true。
如果设置为false,则动作仅在本动作元素的触发事件上被执行.
expression
元素
[0..1]
beanshell脚本。
如果你没有指定元素,可以写表达式作为脚本元素的内容(忽略expression元素标签)。
variable
元素
[0..*]
脚本所需变量。
如果没有指定变量,则当前令牌的所有变量将被装载到脚本,当你想要限制装载到脚本中的变量数量时使用variable。
1.14expression(表达式)
Expression里可书写Beanshell脚本
名称
类型
数量
描述
{内容}
一个beanshell脚本。
1.15variable(变量)
一个是变量是一种key-value对。
它与过程实例(一次过程执行)相关联。
Key是,value是任何java类型的任何pojo。
所以任何是java类型,即使不给jbpm知道也能被应用到变量中。
JBPM的流程变量在尽量模仿的语义。
这一点可以通过JBPM的API来了解。
也就是说一个变量只能当它被插入时被赋值,任何java类型都可以作为变量中的value。
名称
类型
数量
描述
name
属性
必需的
流程变量的名称。
access
属性
可选的
默认是read,write,用逗号分割的一个访问列表。
迄今为止,使用的访问仅为read,write和required。
mapped-name
属性
可选的
默认是变量的名称。
用来指定变量名称被映射的名称,mapped-name的含义依赖于这个元素所被使用的上下文。
对于一个脚本,将是一个脚本变量名称;对于一个任务控制器,将是任务表单参数的标签;对于一个process-state,将是在子流程中使用的变量名称。
1.16handler(句柄)
Handler是在定义一个decision时需要为其定义一个DecisionHandler时采用。
名称
类型
数量
描述
expression
属性
或者用class
一个jPDL表达式,返回结果被用toString()方法转换为字符串,结果字符串应该与某个离开转换匹配。
class
属性
或者用ref-name
实现了接口的类的全名。
Config
-type
属性
可选的
{|||}。
指定动作对象将被怎样创建以及本元素的内容怎样象配置信息那样被动作对象所使用。
{内容}
可选的
Action里的内容可以用来帮助结合我们的业务来处理我们的流程,同时我们可以在Action里加上业务处理逻辑,以更好的利用流程.
1.17timer(定时器)
定时器timer可以被用于decisionforkjoinnodeprocess-statestatesuper-statetask-node,可以设置开始时间duedate和频率repeat,定时器动作可以是所支持的任何动作元素,如action或script。
timer还有一个很重要的属性cancel-event,这个是timer和task结合时使用的,任务定时器的cancel-event可以被定制。
默认情况下,当任务被结束时(=完成)任务上的定时器将被取消,这是通过在定时器上使用cancel-event属性,流程开发者可以定制诸如task-assign或task-start。
cancel-event支持多个事件,通过在属性中指定一个用逗号分割的列表,可以组合cancel-event的类型。
名称
类型
数量
描述
name
属性
可选的
定时器的名称。
如果没有指定名称,则采用外部的节点名称。
注意,每个定时器应该有一个唯一的名称。
duedate
属性
必需的
所指定的定时器创建到定时器执行之间的期限(可以用业务时间来表示)。
repeat
属性
可选的
{duration|yes|true}当一个定时器在预期时间执行后,“repeat”可选项指定了在离开节点之前重复的执行定时器之间的期限。
如果指定为true或false,则与duedate相同的期限被使用。
transition
属性
可选的
当定时器执行、定时器事件触发后以及执行动作时时所使用的转换名称。
cancel-event
属性
可选的
这个属性只用在任务的定时器中,它指定了定时器将被取消的事件。
默认是task-end事件,但是也可以被设置为如task-assign或task-start。
cancel-event的类型也可以通过指定一个用逗号分割的列表被组合。
action|script|
create-timer|
cancel-timer
元素
[0..*]
当定时器被触发时所应被执行的动作。
1.18create-timer(创建定时器)
Create-timer是定时器的创建
名称
类型
数量
描述
name
属性
可选的
定时器的名称。
这个名称可被用于用一个cancel-timer动作取消定时器。
duedate
属性
必需的
所指定的定时器创建到定时器执行之间的期限(可以用业务时间来表示)。
请参考“”中的语法。
repeat
属性
可选的
{duration|’yes’|’true’}当一个定时器在预期时间执行后,“repeat”可选项指定了在离开节点之前重复的执行定时器之间的期限。
如果指定为true或yese,则与duedate相同的期限被使用。
请参考“”的语法。
transition
属性
可选的
当定时器执行、定时器事件触发后以及执行动作时时(如果要)所获取的转换名称。
1.19cancel-timer(取消定时器)
Cancel-timer是定时器的取消
名称
类型
数量
描述
name
属性
可选的
要被取消的定时器的名称。
1.20task(任务)
Task是是流程定义里的一部分,它决定了taskinstance的创建和分配
名称
类型
数量
描述
name
属性
可选的
任务的名称。
命名的任可以被引用并且可以通过TaskMgmtDefinition被查出。
blocking
属性
可选的
{yes|no|true|false}如果blocking设置为true,当任务没有结束时节点不能被离开(必须要通过()方法离开节点);如果设置为false(默认),允许用户通过signal继续执行和离开节点。
默认设置为false,因为通常是由用户接口来强制阻塞。
signalling
属性
可选的
{yes|no|true|false},默认是true。
如果设置signalling为false,则任务没有触发令牌继续的能力。
duedate
属性
可选的
延迟时间(任务执行的的延迟时间)。
请见业务日历中的解释。
swimlane
属性
可选的
引用一个,如果在任务上指定了一个swimlane,则assignment将被忽略。
priority
属性
可选的
{highest,high,normal,low,lowest}之一。
作为选择,可以为priority指定任何整数,供参考:
(highest=1,lowest=5)。
元素
可选的
描写一个,该委托将在任务被创建时把任务分配给一个参与者。
event
元素
[0..*]
支持的事件类型:
{task-create|task-start|task-assign|task-end}。
为了任务分配,我们特别的为TaskInstance添加了一个非持久化的属性previousActorId。
exception
-handler
元素
[0..*]
一个异常处理器列表,用于这个流程节点中的委托类所抛出的所有异常。
timer
元素
[0..*]
指定一个监视本任务执行期限的一个定时器。
对于任务定时器特殊的是可以指定cancel-event,cancel-event默认是task-end,但是它可以被自定义如task-assign或task-st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 流程 定义 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)