Activiti第三篇【连接、排他网关、指定任务处理人、组任务】
连线
上面我们已将学过了流程变量了,可以在【任务服务、运行时服务、流程开始、完成某个任务时设置流程变量】,而我们的连接就是流程变量的实际应用了….
定义流程图
我们并不是所有的流程都是按一条的路径来走的,我们有的时候会根据条件来走不同的路。当然了,最终该流程是会一步步走完….
例子:
重要的信息交由老板来处理,不重要的信息交由经理来处理
表达式的结果必须是布尔型
- #{variable==’value’}
- ${variable==value}
测试
我在任务完成时设置流程变量为不重要,那么跳到下一个流程时就是经理来进行处理
当我设置为重要的时候,那么就是交由老板来处理
排他网关
上面我们使用连线的时候用了两个条件 : 要么条件是“重要”,要么条件是“不重要”….如果有另一种情况呢???就是用户把条件输入错了,写成“不知道重不重要”,那么我们的流程怎么走???岂不是奔溃了???
因此,我们要有一条默认的路来走,就是当该变量不符合任何的条件时,我们也有一条默认的路
值得注意的是:如果是在Eclipse中使用插件的BPMN流程图,如果使用了排他网关,那么在Idea下是解析不了的…
解决:
我们只要重新定义BPMN流程图的排他网关就行了,idea中的Activiti插件是不用制定默认流程的,只要我们不设置条件,那就是默认的连接线
测试
public class ExclusiveGetWay {private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();// 部署流程定义,资源来在bpmn格式@Testpublic void deployProcessDefi() {Deployment deploy = processEngine.getRepositoryService().createDeployment().name("排他网关流程").addClasspathResource("ExclusiveGateway.bpmn").deploy();System.out.println("部署名称:" + deploy.getName());System.out.println("部署id:" + deploy.getId());}// 执行流程,开始跑流程@Testpublic void startProcess() {String processDefiKey = "bankBill";// bpmn 的 process id属性ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefiKey);System.out.println("流程执行对象的id:" + pi.getId());// Execution 对象System.out.println("流程实例的id:" + pi.getProcessInstanceId());// ProcessInstance// 对象System.out.println("流程定义的id:" + pi.getProcessDefinitionId());// 默认执行的是最新版本的流程定义}// 查询正在运行任务@Testpublic void queryTask() {// 取得任务服务TaskService taskService = processEngine.getTaskService();// 创建一个任务查询对象TaskQuery taskQuery = taskService.createTaskQuery();// 办理人的任务列表List<Task> list = taskQuery.list();// 遍历任务列表if (list != null && list.size() > 0) {for (Task task : list) {System.out.println("任务的办理人:" + task.getAssignee());System.out.println("任务的id:" + task.getId());System.out.println("任务的名称:" + task.getName());}}}// 完成任务@Testpublic void compileTask() {String taskId = "2404";Map<String,Object> params=new HashMap<String, Object>();params.put("visitor", 6);// taskId:任务idprocessEngine.getTaskService().complete(taskId, params);
// processEngine.getTaskService().complete(taskId);System.out.println("当前任务执行完毕");}}
我们指定的值并不是VIP也不是后台,那么就会自动去普通窗口中处理
并行网关
等待活动
用户任务
使用流程变量指定处理人
我们在快速入门的例子中,是在定义流程图中硬性指定处理人,其实这么干是不够灵活的,我们学了流程变量之后,我们是可以灵活地指定处理人的….
@Testpublic void deployProcessDefi() {Deployment deploy = processEngine.getRepositoryService().createDeployment().name("用户任务指定流程").addClasspathResource("AppayBill.bpmn").deploy();System.out.println("部署名称:" + deploy.getName());System.out.println("部署id:" + deploy.getId());}// 执行流程,开始跑流程@Testpublic void startProcess() {String processDefiKey = "appayBill";// bpmn 的 process id属性Map<String,Object> params=new HashMap<String, Object>();params.put("userID", "王某某");ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefiKey, params);System.out.println("流程执行对象的id:" + pi.getId());// Execution 对象System.out.println("流程实例的id:" + pi.getProcessInstanceId());// ProcessInstance// 对象System.out.println("流程定义的id:" + pi.getProcessDefinitionId());// 默认执行的是最新版本的流程定义}// 查询正在运行任务@Testpublic void queryTask() {String assignee="王某某";//指定任务处理人// 取得任务服务TaskService taskService = processEngine.getTaskService();// 创建一个任务查询对象TaskQuery taskQuery = taskService.createTaskQuery();// 办理人的任务列表List<Task> list = taskQuery.taskAssignee(assignee).list();// 遍历任务列表if (list != null && list.size() > 0) {for (Task task : list) {System.out.println("任务的办理人:" + task.getAssignee());System.out.println("任务的id:" + task.getId());System.out.println("任务的名称:" + task.getName());}}}
使用类指定
组任务
直接指定办理人
使用流程变量
使用类
转载于:https://www.cnblogs.com/zhong-fucheng/p/7554366.html
Activiti第三篇【连接、排他网关、指定任务处理人、组任务】相关推荐
- Activiti 学习笔记八:排他网关(ExclusiveGateWay)
一.流程图 二.演示代码 package ExclusiveGateWayTest;import java.io.InputStream; import java.util.HashMap; impo ...
- Activiti进阶(七)——排他网关(ExclusiveGateWay)
转载地址:http://blog.csdn.net/zjx86320?viewmode=contents 上一篇博文我们简单介绍了一下连线,也分析了一种情况,就是在工作流中,用户任务下面有两个连线,如 ...
- 一年三篇IF大于7的牛人告诉你怎么写SCI
一.研究生必备四本 俗话说好记性不如烂笔头,所以一定要首先养成做笔记的好习惯!作为研究生下面这几个本子是必不可少的: 1. 实验记录本(包括试验准备本),这当然首当其冲必不可少,我就不多说了; ...
- activiti(7.0)排他网关
import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.acti ...
- 学校计算机老师关心学生的作文600字,老师关爱学生的作文三篇
老师关爱学生的作文三篇 引导语:相信很多人在学校都受过老师的关爱,而有关老师关爱学生的作文要怎么写呢?接下来是小编为你带来收集整理的文章,欢迎阅读! 老师关爱学生的作文一 世界上最伟大的当然是母爱,但 ...
- 第15篇: Flowable-BPMN操作流程之排他网关
接上一篇: 第14篇:Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章 ...
- java中activiti框架中的排他网关使用方法,多条件判断
当排他网关的判断条件中出现多个条件时,需要注意,设置判断条件时,可能遇到,流向相同的任务,而判断条件的变量个数不同 那么,必须在后面的运行任务时,将所有的涉及到的变量都设置进任务中,只不过,如果这个任 ...
- activiti学习之排他网关
写在前面 在一些场景中可能不同的条件就流转到不同的节点来执行,比如请假,当请假天数小于等于2天,则直属领导审批,当请假天数大于2天小于等于5天时就部门负责人审批,当请假天数大于5天 就董事长审批,这种 ...
- activiti学习(十六)——并行网关、排他网关、包含网关
网关和分支是流程图中相当重要的一环.毕竟不可能所有流程都是一条直线走到底的,可能需要并行处理,也可能需要根据条件的不同选择对应的路由,网关的作用正是在此.本文主要探索一下这几种网关的常用方法,以及一些 ...
- 学习如何看懂SQL Server执行计划(三)——连接查询篇
三.连接查询部分 --------------------嵌套循环-------------------- /* UserInfo表数据少.Coupon表数据多 嵌套循环可以理解为就是两层For循环, ...
最新文章
- IOS 中的MVC设计模式
- android 在同一activity切换layout,在 Android Studio 添加一个activity并实现跳转
- 数据库系统(一)——数据查询
- Android应用开发SharedPreferences存储数据的使用方法
- style 里引用php变量,在VUE style中使用data中的变量的方法详解
- 实现Android的消息通知栏
- java 军工_为什么军工行业不用java而是选择继续用c(对于业务系统Java是非常合适的而不带操作系统的板子甚至可以做到微秒级别的实时控制)...
- MySQL-(1)查看用户权限、(2)用户授权、(3)删除用户权限 语法格式总结
- [渝粤题库] 国家开放大学 人文英语4 资料
- pytorch 中 torch.optim.Adam
- java的hsf高速框架_分布式服务框架HSF - osc_n50eizn7的个人空间 - OSCHINA - 中文开源技术交流社区...
- 前端共享博客(前端导航,前端博客,前端博客推荐)
- 【深度相机系列五】脑补了和库克的对话后,我发现了iPhone X深度相机选择的秘诀和方法
- DlhSoft Kanban,WPF 的看板组件
- atcod D - Staircase Sequences
- azure服务器_如何使用Azure Functions和SendGrid构建无服务器报表服务器
- 千学计算机在线计算,压力单位在线换算
- android删除界面工具,Android手机添加/删除桌面图标和插件(图文)
- RNA-seq连特异性
- 不会英语计算机开车和,21世纪文盲标准,你中了吗?
热门文章
- python 复制列表内容_python 复制列表的六种方法
- NYOJ815三角形 细节
- juel java_Juel基本使用
- linux手动注入网络数据_大多数企业网络无法处理大数据负载 | Linux 中国
- mysql数据库文件结构同步,[数据库的表同步mysql]MySQL表结构同步
- 自动驾驶 9-4: 改进的 EKF - 错误状态扩展卡尔曼滤波器 An Improved EKF - The Error State Extended Kalman Filter
- golang 大数据平台_一文读懂数据平台、大数据平台、数据中台
- mysql--id主键列乱了之后,重新排序
- 反射的应用之动态代理,顺便复习静态代理
- 可视化修改SQL服务器名字,修改sql server服务器名称