关键词: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节点跳转相关推荐

  1. flowable 并行节点跳转以及驳回

    bpmn流程图 <?xml version="1.0" encoding="UTF-8"?> <definitions xmlns=" ...

  2. activiti节点跳转

    分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) activiti使用的时候,通常需要跟业务紧密的结合在一起,有些业 ...

  3. flowable节点的自定义属性扩展_03

    文章目录 新增一个节点属性 新增一个package: 把我们新增的这个package添加节点属性中 编写angularJS脚本 在properties.js 配置模板: 编写js控制器 配置引用 后台 ...

  4. activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转)

    activitiy学习 动态加签,动态流程图,指定节点跳转,指定多人节点跳转 POM.XML 部署流程 启动流程 查询待执行任务 查询任务历史 完成任务 多人会签节点的退回指定节点 退回到指定多人会签 ...

  5. activity任意节点跳转

    前言 在实际业务中,总会碰到一些特殊的需求,比如要实现任意两个审批节点之间的跳转,举例来说,某个审批流程有3级审批,来了这么个需求,一级审批完结之后在满足特定的条件下,可以直接进入到3级审批,即跳过中 ...

  6. ue4缓存位置怎么改_怎么从蓝图节点跳转到C++源码?

    在以前的虚幻编辑器版本上,通常是这样打开C++代码的:双击蓝图节点,或者在蓝图节点上右键,再点击Goto Definition,这样就自动打开VS,跳出C++代码来了. 但是,从某个版本开始,这样忽然 ...

  7. 全亮半亮爆闪三功能LED车灯驱动IC方案 H7230无电流节点跳变 惠海半导体

    车灯远近光切换的原理: 远近光灯的切换原理,首先要分这个远近光灯的类型,其有两种情况:一是远近光灯一体(也就是远近光灯被集合在一个模组中),它的远近光灯切换又分为两种.1是控制光源数量,2是控制遮光板 ...

  8. flowable工作流节点总是自动跳过

    在监听器中的代码已经查询到审批人, 但是节点还是会跳过 这是啥情况啊? flowable总会出现第一节点跳过的情况 重启服务器后就没这个情况了

  9. 工作流-flowable 之驳回 多实例驳回 并行网关驳回 普通节点驳回到多实例

    6.4.0 新增加了驳回的方式,真是对中国式流程的一种福音呀,感谢flowable创始人. 再也不为开发驳回流程发愁了,网上那些视频和修改源码真的是demo级别的,不能商业用. 只有心如流水的学习才是 ...

最新文章

  1. 计算机科学家证明,为什么更大的神经网络可以做得更好
  2. nsdata是java什么类型_Swift中基本数据类型与NSData转换
  3. 专访4秒源码商城CTO陈杰:扎根互联网的“不安的心”
  4. 对python乱序字符串检查算法研究
  5. 摄像机投射投影模型_综述及详解
  6. (7)MySQL的事务
  7. 基于zookeeper实现分布式配置中心(一)
  8. c 语言转换成php语言,C++_C 语言进制之间的转换,二进制、八进制和十六进制向 - phpStudy...
  9. PHP5.3下加速器ZendGuardLoader安装及故障处理
  10. android 焦点动画,在一个视图/imageview上获得焦点时,实现android缩放动画?_animation_开发99编程知识库...
  11. 在mysql 使用binlog日志
  12. 智能图形开发板SmartGLCD
  13. 基础:用android开发的ASCII码转换器
  14. 算法导论答案(第一章)
  15. XMLSpy的主要功能介绍
  16. R-CNN文章详细解读
  17. 库存遮羞布被揭开,高通提前发布骁龙8G2,国产手机已无路可走
  18. 求一个数的整数分化问题(python)实现
  19. 【FFmpeg视频播放器开发】解封装解码流程、常用API和结构体简介(一)
  20. html 键盘按键与按钮功能关联

热门文章

  1. JSTL函数标签库 fn标签
  2. 关于Static控件背景透明时文本覆盖重影的问题
  3. Resin禁止目录访问
  4. matlab中调用cplex 以及使用 Yalmip 工具箱
  5. Mediasoup简介及其基本概念
  6. MFC中在picture control中显示图像的方法
  7. C/C++协程库libco:微信怎样漂亮地完成异步化改造
  8. 【Bash百宝箱】shell内建命令之echo、printf
  9. python包里面的dll是什么_Python中的包ImportError
  10. 判断ipv6地址_#网络工程师#5分钟教你搞懂IPV6如何发现邻居