转载地址:http://blog.csdn.net/zjx86320?viewmode=contents

上一篇博文我们简单介绍了一下连线,也分析了一种情况,就是在工作流中,用户任务下面有两个连线,如何选择工作流的进程。这一篇博文和上一篇博文讨论的主题类似,解决上一篇博文中有多个连线分支的情况,我们可以使用排他网管来解决。

一、流程图

图一 费用报销申请流程图

设置连线属性:

1.500≤费用金额≤1000

2.费用金额<500

3.费用金额>1000

4.设置排他网关的默认执行任务

5.设置【财务】审批为默认

二、部署和启动流程

[java] view plaincopy
  1. /**部署流程定义+启动流程实例*/
  2. @Test
  3. public void deployementAndStartProcess(){
  4. InputStream inputStreamBpmn = this.getClass().getResourceAsStream("exclusiveGateWay.bpmn");
  5. InputStream inputStreampng = this.getClass().getResourceAsStream("exclusiveGateWay.png");
  6. //部署流程定义
  7. Deployment deployment = processEngine.getRepositoryService()//
  8. .createDeployment()//创建部署对象
  9. .addInputStream("exclusiveGateWay.bpmn", inputStreamBpmn)//部署加载资源文件
  10. .addInputStream("exclusiveGateWay.png", inputStreampng)//
  11. .deploy();
  12. System.out.println("部署ID:"+deployment.getId());
  13. //启动流程实例
  14. ProcessInstance pi = processEngine.getRuntimeService()//
  15. .startProcessInstanceByKey("exclusiveGateWay");//使用流程定义的key的最新版本启动流程
  16. System.out.println("流程实例ID:"+pi.getId());
  17. System.out.println("流程定义的ID:"+pi.getProcessDefinitionId());
  18. }

三、查看个人任务

[java] view plaincopy
  1. /**查询我的个人任务*/
  2. @Test
  3. public void findPersonalTaskList(){
  4. //任务办理人
  5. String assignee = "王小五";
  6. List<Task> list = processEngine.getTaskService()//
  7. .createTaskQuery()//
  8. .taskAssignee(assignee)//个人任务的查询
  9. .list();
  10. if(list!=null && list.size()>0){
  11. for(Task task:list){
  12. System.out.println("任务ID:"+task.getId());
  13. System.out.println("任务的办理人:"+task.getAssignee());
  14. System.out.println("任务名称:"+task.getName());
  15. System.out.println("任务的创建时间:"+task.getCreateTime());
  16. System.out.println("流程实例ID:"+task.getProcessInstanceId());
  17. System.out.println("#######################################");
  18. }
  19. }
  20. }

四、完成任务

[java] view plaincopy
  1. /**完成任务*/
  2. @Test
  3. public void completeTask(){
  4. //任务ID
  5. String taskId = "3904";
  6. //完成任务的同时,设置流程变量,让流程变量判断连线该如何执行
  7. Map<String, Object> variables = new HashMap<String, Object>();
  8. variables.put("money", 800);
  9. processEngine.getTaskService()//
  10. .complete(taskId,variables);
  11. System.out.println("完成任务:"+taskId);
  12. }

总结

一个排他网关对应一个以上的顺序流,由排他网关流出的顺序流都有个conditionExpression元素,在内部维护

返回boolean类型的决策结果。决策网关只会返回一条结果。当流程执行到排他网关时,流程引擎会自动检索网关出

口,从上到下检索如果发现第一条决策结果为true或者没有设置条件的(默认为成立),则流出。如果没有任何一个出

口符合条件,则抛出异常使用流程变量,设置连线的条件,并按照连线的条件执行工作流,如果没有条件符合的条

件,则一默认的连线离开。

转载于:https://www.cnblogs.com/albert-think/p/6595030.html

Activiti进阶(七)——排他网关(ExclusiveGateWay)相关推荐

  1. activiti学习之排他网关

    写在前面 在一些场景中可能不同的条件就流转到不同的节点来执行,比如请假,当请假天数小于等于2天,则直属领导审批,当请假天数大于2天小于等于5天时就部门负责人审批,当请假天数大于5天 就董事长审批,这种 ...

  2. activiti(7.0)排他网关

    import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.acti ...

  3. Activiti进阶

    一.流程实例 1.1.什么是流程实例 流程实例(ProcessInstance)代表流程定义的执行实例. 例如:用户或程序按照流程定义内容发起一个流程,这就是一个流程实例. 1.2.启动流程实例 并添 ...

  4. Activiti 学习笔记八:排他网关(ExclusiveGateWay)

    一.流程图 二.演示代码 package ExclusiveGateWayTest;import java.io.InputStream; import java.util.HashMap; impo ...

  5. 排他网关(ExclusiveGateWay)

    网关(ExclusiveGateWay) 作者:邓家海 2018年3月11日 00:13:25 情景: 某一家公司最近在给一个单位做一个财务审批的OA.具体需求是这样的:当部门申请的金额小于一万块的时 ...

  6. activiti学习(十六)——并行网关、排他网关、包含网关

    网关和分支是流程图中相当重要的一环.毕竟不可能所有流程都是一条直线走到底的,可能需要并行处理,也可能需要根据条件的不同选择对应的路由,网关的作用正是在此.本文主要探索一下这几种网关的常用方法,以及一些 ...

  7. java中activiti框架中的排他网关使用方法,多条件判断

    当排他网关的判断条件中出现多个条件时,需要注意,设置判断条件时,可能遇到,流向相同的任务,而判断条件的变量个数不同 那么,必须在后面的运行任务时,将所有的涉及到的变量都设置进任务中,只不过,如果这个任 ...

  8. Flowable进阶学习(六)网关(排他网关、并行网关、包容网关、事件网关)

    文章目录 排他网关 案例: 并行网关 案例: 包容网关 案例: 事件网关 1. 定时事件 1.1 定时器启动事件 案例 网关(gateway)用来控制流程的流向.来实现复杂的审批流程. 网关的分类包括 ...

  9. 第15篇: Flowable-BPMN操作流程之排他网关

    接上一篇: 第14篇:Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章 ...

最新文章

  1. linux之find -regex 使用正则表达式
  2. python语言介绍-Python这门语言的大概介绍
  3. 使用原生 Java 玩转验证码【含 DATA-URIS 介绍】
  4. border-collapse:collapse;清除表格中单元格的空隙
  5. 支持驱动最好的linux软件,Linux平台设备和驱动
  6. window.showModalDialog介绍
  7. LVS+Keepalived实现负载均衡和双机热备
  8. uniapp自定义条件编译-定制化产品
  9. mysql导出bacpac_在 Azure 中备份应用
  10. mysql 临时索引_MYSQL临时表创建索引
  11. Django之模型层
  12. 《解密并行和分布式深度学习:深度并发分析》摘要记录
  13. ubuntu16.04中运行orb-slam2_with_semantic_labelling-master
  14. 企业微信开发实战(三、OA审批之回调通知、获取审批单号、审批详情)
  15. 某程序员上线原谅宝:抓取全球不可描述网站和社交平台10万渣女
  16. utf8字符集中漢字默認占三個字節
  17. 虚拟机01--Mac安装Centos虚拟机
  18. 7-35 英文字母的大小写转换
  19. 金庸小说人物知识图谱构建——获取共现关系
  20. 在word文档中,解决求和符号的上下标变成右标.

热门文章

  1. 想旷工被单位开除领取失业金,可是单位不但不开除还给交社保,该怎么办?
  2. 专治月薪不过万的副业大全
  3. 世界上最贵的车是直通车吗?
  4. 卖酒真的这么赚钱吗?
  5. 为了运行内存多两G,多花几百块值不值?
  6. hashmap hashtable concurrenthashmap区别
  7. uni-app目录结构介绍
  8. 坑了我一个小时的脚本执行
  9. SQL Server中的执行计划
  10. 德鲁伊 oltp oltp_内存中OLTP系列–表创建和类型