初识jbpm(二)

news/2024/5/18 5:51:10 标签: jbpm, signal, token, transition, 工作, join

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

内部结构:

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的具体实例。


http://www.niftyadmin.cn/n/1661438.html

相关文章

简单几步在 Windows 10 上尝鲜 Chrome 的黑暗模式

百度智能云 云生态狂欢季 热门云产品1折起>>> 日前有报道称谷歌的 Chrome 团队正专门针对 macOS Mojave 系统开发黑暗模式(Dark Mode),提升夜间上网的舒适程度。前几日 Chromium 团队成员兼高级 Chrome 工程师 Peter Kasting 表示:“契合 Win…

com.android.ide.common.process.ProcessException:Return code 2 for dex process

Return code 2 for dex process报错原因解决方法报错原因 我在老Android studio项目中加入单元测试,并引入了相应的依赖,引发了此问题。是由于配置方法数超过 64K ,Android做了此限制,需要执行文件分包,以规避 64K 限…

gradlew检查命令

gradlew compileDebug --stacktrace -info 在命令行中进入项目的根目录,或者可以在Android studio的Terminal中直接操作也可以,然后敲入一个命令: gradlew compileDebug --stacktrace -info 或者: gradlew compileDebug --stac…

Java图片比对算法(直方图原理)

采用直方图原理算法比对图片的细微差别效果比较好,以下两张区别很小的图片识别效果如下: 1.png3.png识别结果: 主要代码如下: import javax.imageio.*; import java.awt.image.*; import java.awt.*; import java.io.*;public cl…

c#基础思维导图

转载于:https://www.cnblogs.com/net-sky/p/10218841.html

腾讯用户行为收集使用

1.介绍 1、腾讯移动分析是腾讯公司为移动应用的开发者提供应用活跃的、用户行为、渠道推广效果等精确数据统计,助开发者提高产品质量、优化产品策略、延长产品生命周期的开发平台。 2、用户行为分析功能可以实时统计用户访问的页面频率、停留时间及页面跳转关系&am…

【跃迁之路】【686天】程序员高效学习方法论探索系列(实验阶段443-2019.1.5)...

(收集箱(每日一记,每周六整理))专栏 实验说明 从2017.10.6起,开启这个系列,目标只有一个:探索新的学习方法,实现跃迁式成长实验期2年(2017.10.06 - 2019.10.06)我将以自己…

Android网络编程(一):网络基础知识

1、两台计算机是如何通讯的? 简单地说,两台计算机之间连上通讯介质,也就是电缆或者光纤,A计算机把要发送的类容转换成二进制代码,然后再根据二进制码发送对应的电流脉冲,电流脉冲通过电缆传播到B计算机&am…