Activiti第三篇【连接、排他网关、指定任务处理人、组任务】
来源:互联网 发布:iphone6s数据漫游 编辑:程序博客网 时间:2024/05/20 23:31
连线
上面我们已将学过了流程变量了,可以在【任务服务、运行时服务、流程开始、完成某个任务时设置流程变量】,而我们的连接就是流程变量的实际应用了….
定义流程图
我们并不是所有的流程都是按一条的路径来走的,我们有的时候会根据条件来走不同的路。当然了,最终该流程是会一步步走完….
例子:
重要的信息交由老板来处理,不重要的信息交由经理来处理
表达式的结果必须是布尔型
- #{variable==’value’}
- ${variable==value}
测试
我在任务完成时设置流程变量为不重要,那么跳到下一个流程时就是经理来进行处理
当我设置为重要的时候,那么就是交由老板来处理
排他网关
上面我们使用连线的时候用了两个条件 : 要么条件是“重要”,要么条件是“不重要”….如果有另一种情况呢???就是用户把条件输入错了,写成“不知道重不重要”,那么我们的流程怎么走???岂不是奔溃了???
因此,我们要有一条默认的路来走,就是当该变量不符合任何的条件时,我们也有一条默认的路
值得注意的是:如果是在Eclipse中使用插件的BPMN流程图,如果使用了排他网关,那么在Idea下是解析不了的…
解决:
我们只要重新定义BPMN流程图的排他网关就行了,idea中的Activiti插件是不用制定默认流程的,只要我们不设置条件,那就是默认的连接线
测试
public class ExclusiveGetWay { private ProcessEngine processEngine = ProcessEngines .getDefaultProcessEngine(); // 部署流程定义,资源来在bpmn格式 @Test public void deployProcessDefi() { Deployment deploy = processEngine.getRepositoryService() .createDeployment().name("排他网关流程") .addClasspathResource("ExclusiveGateway.bpmn") .deploy(); System.out.println("部署名称:" + deploy.getName()); System.out.println("部署id:" + deploy.getId()); } // 执行流程,开始跑流程 @Test public 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());// 默认执行的是最新版本的流程定义 } // 查询正在运行任务 @Test public 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()); } } } // 完成任务 @Test public void compileTask() { String taskId = "2404"; Map<String,Object> params=new HashMap<String, Object>(); params.put("visitor", 6); // taskId:任务id processEngine.getTaskService().complete(taskId, params);// processEngine.getTaskService().complete(taskId); System.out.println("当前任务执行完毕"); }}
我们指定的值并不是VIP也不是后台,那么就会自动去普通窗口中处理
并行网关
等待活动
用户任务
使用流程变量指定处理人
我们在快速入门的例子中,是在定义流程图中硬性指定处理人,其实这么干是不够灵活的,我们学了流程变量之后,我们是可以灵活地指定处理人的….
@Test public void deployProcessDefi() { Deployment deploy = processEngine.getRepositoryService() .createDeployment().name("用户任务指定流程") .addClasspathResource("AppayBill.bpmn") .deploy(); System.out.println("部署名称:" + deploy.getName()); System.out.println("部署id:" + deploy.getId()); } // 执行流程,开始跑流程 @Test public 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());// 默认执行的是最新版本的流程定义 } // 查询正在运行任务 @Test public 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()); } } }
使用类指定
组任务
直接指定办理人
使用流程变量
使用类
阅读全文
1 0
- Activiti第三篇【连接、排他网关、指定任务处理人、组任务】
- Activiti排他网关
- Activiti Designer实现排他网关
- activiti学习--09 排他网关
- activiti 用户任务分配指定
- activiti 任务节点 处理人设置
- activiti 任务节点 处理人设置
- Activiti基础教程--09排他网关,并行网关
- Activiti基础教程--09排他网关,并行网关
- Activiti的排他网关、并行网关、
- activiti 组任务指定办理人三种方式(十一)
- 【入门篇】Activiti完成指定流程定义下任务
- activiti实战系列 排他网关(ExclusiveGateWay)
- Activiti进阶七-----排他网关(ExclusiveGateway)
- activiti 快速入门--排他网关(3)
- activiti之排他网关,流程变量
- 9.activiti工作流-排他网关(ExclusiveGateWay)
- activiti 工作流动态设置指定节点任务人、责任人、组的实现方式
- PHP 变量
- python 运行js代码
- workerman-statistics分布式统计监控系统
- 移动端的网络优化
- token防重复提交
- Activiti第三篇【连接、排他网关、指定任务处理人、组任务】
- uva11478差分约束
- 最简单的IOS
- leetcode--Decode Ways
- mybatis pageHelper + 通用mapper的使用
- php-curl获取接口图片地址,在php拼接img中无法访问,报403错误,在浏览器url中直接可以访问,html页面里img也可以访问
- java新手上路(六):分形的艺术
- Logger---使你的日志更简单漂亮强大!
- 互不侵犯King