Flowable节点跳转
关键词:Flowable任务节点跳转,Flowable节点跳转,Flowable任意节点跳转。
在使用Flowable或者Activiti的时候,有时候我们并不期望他按照模板的定义进行运转,比如如下的一个流程图:
正常的流程应该是shareniu1-->shareniu2-->shareniu3-->shareniu4。
如果现在打算让shareniu1跳转到shareniu3,这个时候就需要绘制一根连线,并在连线中配置一些条件。其他的节点场景相似,但是实际项目开发,可能我们不想绘制太多的连线,就期望流程实例可以随便的跳转,这个问题也是我们本文重点要讲解。
1.将上述的流程进行部署。
数据库的变化如下所示:
2.启动流程实例:
@Test
public void start1() {
runtimeService.startProcessInstanceByKey("jump");
}
act_ru_task表的数据如下:
这个时候,我们打算让shareniu1直接跳转到shareniu3,能跳转过去吗?我们不妨写一个命令类试一下。
3.任意节点跳转实现代码:
/*** * @author 分享牛 http://www.shareniu.com/*/
public class ShareniuCommonJumpTaskCmd implements Command<Void> {protected String taskId;protected String target;public ShareniuCommonJumpTaskCmd(String taskId, String target) {this.taskId = taskId;this.target = target;}public Void execute(CommandContext commandContext) {ExecutionEntityManager executionEntityManager = CommandContextUtil.getExecutionEntityManager();TaskEntityManager taskEntityManager = CommandContextUtil.getTaskEntityManager();TaskEntity taskEntity = taskEntityManager.findById(taskId);ExecutionEntity ee = executionEntityManager.findById(taskEntity.getExecutionId());Process process = ProcessDefinitionUtil.getProcess(ee.getProcessDefinitionId());FlowElement targetFlowElement = process.getFlowElement(target);ee.setCurrentFlowElement(targetFlowElement);FlowableEngineAgenda agenda = CommandContextUtil.getAgenda();agenda.planContinueProcessInCompensation(ee);taskEntityManager.delete(taskId);return null;}}
4.测试代码:
接下来,开始测试,实例代码如下:
@Test
public void jump() {ManagementService managementService = processEngine.getManagementService();managementService.executeCommand(new ShareniuCommonJumpTaskCmd("2505","shareniu3"));
}
act_ru_task表的数据如下:
通过这里可以看出,我们的命令类已经生效了。那我们再次执行下上述代码让 shareniu3跳转到shareniu2试下,实例代码如下:
@Test
public void jump() {ManagementService managementService = processEngine.getManagementService();managementService.executeCommand(new ShareniuCommonJumpTaskCmd("5002","shareniu2"));
}
act_ru_task表的数据如下:
上述的命令类确实很好用的。
5.上述跳转命令类的缺陷:
1.上述的命令类只适用于6.x版本的引擎。包括模板以及实例都是6.x版本。
2.只适用于常规节点的跳转。(关于分支节点的跳转、多实例节点的跳转以及并行节点的跳转后续文章会详细说明)。
3.上述的代码适用于flowable6.1.2以后的版本。关于flowable6.1.2之前的版本思路一样,只是代码要稍微微调一下,部分代码如下所示:
ExecutionEntityManager executionEntityManager = commandContext.getExecutionEntityManager();
TaskEntityManager taskEntityManager = commandContext.getTaskEntityManager();
注意:flowable6.1.2只是对代码所在的包进行了调整,核心思想并没有变化。
Flowable节点跳转相关推荐
- flowable 并行节点跳转以及驳回
bpmn流程图 <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns=" ...
- activiti节点跳转
分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业 ...
- flowable节点的自定义属性扩展_03
文章目录 新增一个节点属性 新增一个package: 把我们新增的这个package添加节点属性中 编写angularJS脚本 在properties.js 配置模板: 编写js控制器 配置引用 后台 ...
- activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转)
activitiy学习 动态加签,动态流程图,指定节点跳转,指定多人节点跳转 POM.XML 部署流程 启动流程 查询待执行任务 查询任务历史 完成任务 多人会签节点的退回指定节点 退回到指定多人会签 ...
- activity任意节点跳转
前言 在实际业务中,总会碰到一些特殊的需求,比如要实现任意两个审批节点之间的跳转,举例来说,某个审批流程有3级审批,来了这么个需求,一级审批完结之后在满足特定的条件下,可以直接进入到3级审批,即跳过中 ...
- ue4缓存位置怎么改_怎么从蓝图节点跳转到C++源码?
在以前的虚幻编辑器版本上,通常是这样打开C++代码的:双击蓝图节点,或者在蓝图节点上右键,再点击Goto Definition,这样就自动打开VS,跳出C++代码来了. 但是,从某个版本开始,这样忽然 ...
- 全亮半亮爆闪三功能LED车灯驱动IC方案 H7230无电流节点跳变 惠海半导体
车灯远近光切换的原理: 远近光灯的切换原理,首先要分这个远近光灯的类型,其有两种情况:一是远近光灯一体(也就是远近光灯被集合在一个模组中),它的远近光灯切换又分为两种.1是控制光源数量,2是控制遮光板 ...
- flowable工作流节点总是自动跳过
在监听器中的代码已经查询到审批人, 但是节点还是会跳过 这是啥情况啊? flowable总会出现第一节点跳过的情况 重启服务器后就没这个情况了
- 工作流-flowable 之驳回 多实例驳回 并行网关驳回 普通节点驳回到多实例
6.4.0 新增加了驳回的方式,真是对中国式流程的一种福音呀,感谢flowable创始人. 再也不为开发驳回流程发愁了,网上那些视频和修改源码真的是demo级别的,不能商业用. 只有心如流水的学习才是 ...
最新文章
- 计算机科学家证明,为什么更大的神经网络可以做得更好
- nsdata是java什么类型_Swift中基本数据类型与NSData转换
- 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心”
- 对python乱序字符串检查算法研究
- 摄像机投射投影模型_综述及详解
- (7)MySQL的事务
- 基于zookeeper实现分布式配置中心(一)
- c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...
- PHP5.3下加速器ZendGuardLoader安装及故障处理
- android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
- 在mysql 使用binlog日志
- 智能图形开发板SmartGLCD
- 基础:用android开发的ASCII码转换器
- 算法导论答案(第一章)
- XMLSpy的主要功能介绍
- R-CNN文章详细解读
- 库存遮羞布被揭开,高通提前发布骁龙8G2,国产手机已无路可走
- 求一个数的整数分化问题(python)实现
- 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)
- html 键盘按键与按钮功能关联