初识jbpm(二)

在了解到jbpm的点和线后,接下来就要说说jbpm的内部结构和执行原理了。先来看看下面的整体图

初识jbpm(二)_第1张图片

内部结构:

1. ProcessDefinition

流程定义:定义流程规则。比如请假流程、办公流程、申报流程等。

2. ProcessInstance

流程实例:按照流程定义的规则来流转的具体信息。比如张三的请假单、张三的办公单或信息、张三的申报单等。

signal方法:按定义的流程流转工作,即将一节点流转到下一节点。

3. ContextInstance

流程实例变量容器:存放各种流程实例变量。比如某种请假单,请假人是张三,请假天数是“5”天等数据信息。

setVariable方法:设置实例变量。

getVariable方法:获取实例变量。

4. Token

令牌:流程流转的确定依据,当令牌由一个节点(A)指向到另一节点(B)(可抽象理解为令牌传递),便视为流程有一个节点(A)流转到下一节点(B

signal方法:按定义的流程流转工作,实际上ProcessInstance中的signal方法调用的就是Token中的signal方法,只不过在ProcessInstance中加了一些有关流程的判断,如判断流程是否结束(令牌是否指向endState节点)等。

5. Node

节点:工作流中的7(详细见上节讲述)。

 

执行原理:

我们知道工作流实质上为我们干了两件事:定义流程、执行流程。因此原理也是围绕这两点展开的。执行步骤如下:

1. 定义流程。即定义流程的规则,作出流程图,且是基于UML的活动图来定义流程。

2. 创建流程实例。该步意义类似传统编程将定义的对象实例化(因此流程定义流程实例的关系是一对多),但不同的是实例化后的变量并不保存在ProcessInstance里,而是存在ContextInstance中。因此在创建ProcessInstance后会同时创建一个响应的ContextInstance(二者关系是一对一)。

3. 创建流程实例的同时,也会创建该流程实例相应的Token(即rootToken)对象,这个Token一开始指向起点并且会跟某一节点相关联,调用该Token的signal方法即可实现流转。

4. 流转到节点,执行该节点本身性质的流程功能(不同的节点,执行的方法、效果都不同)。如流转到Fork节点,则该节点会创建多个(依Transition的数量而定)subToken,并分发给不同的节点;当所有subToken都流转到join节点,join节点会将其父节点流转到下一节点。

5. 若节点为taskNode节点,则会调用相应的task任务,执行业务等代码。

 

那么以上就是这节要讲的内容了,下一节会总结一些jbpm的具体实例。

你可能感兴趣的:(JOIN,工作,jbpm,token,transition,Signal)