Activiti之排他网关

所谓排他网关 顾名思义 执行到该网关,根据条件只能走一条执行线路;

在右侧 palette中 的Gateway 有个 ExclusiveGateway 即为默认网关;

我们绘制新的流程定义图标:

这里我们规定  根据请假天数,来具体让谁来审批,

请假天数小于3天,班长审批;

请假天数小于7天,大于等于3天,班主任审批;

请假天数大于等于7天,校长审批;

这里我们依然用表达式来实现;

班长审批连线表达式;

班主任审批连线表达式;

至于校长审批,我们不需要再设置表达式了,排他网关可以指定默认的执行线路;

我们找到校长审批的id;

是flow11;

然后我们选中 排他网关,设置默认执行的线路;

我们给下执行代码:package com.java1234.gateway;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngines;

import org.activiti.engine.repository.Deployment;

import org.activiti.engine.runtime.ProcessInstance;

import org.activiti.engine.task.Task;

import org.junit.Test;

public class ExclusiveGatewayTest {

/**

* 获取默认流程引擎实例,会自动读取activiti.cfg.xml文件

*/

private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();

/**

* 部署流程定义

*/

@Test

public void deploy(){

Deployment deployment=processEngine.getRepositoryService() // 获取部署相关Service

.createDeployment() // 创建部署

.addClasspathResource("diagrams/StudentLeaveProcess3.bpmn") // 加载资源文件

.addClasspathResource("diagrams/StudentLeaveProcess3.png") // 加载资源文件

.name("学生请假流程3") // 流程名称

.deploy(); // 部署

System.out.println("流程部署ID:"+deployment.getId());

System.out.println("流程部署Name:"+deployment.getName());

}

/**

* 启动流程实例

*/

@Test

public void start(){

ProcessInstance pi=processEngine.getRuntimeService() // 运行时Service

.startProcessInstanceByKey("studentLevaeProcess3"); // 流程定义表的KEY字段值

System.out.println("流程实例ID:"+pi.getId());

System.out.println("流程定义ID:"+pi.getProcessDefinitionId());

}

/**

* 查看任务

*/

@Test

public void findTask(){

List taskList=processEngine.getTaskService() // 任务相关Service

.createTaskQuery() // 创建任务查询

.taskAssignee("赵六") // 指定某个人

.list();

for(Task task:taskList){

System.out.println("任务ID:"+task.getId());

System.out.println("任务名称:"+task.getName());

System.out.println("任务创建时间:"+task.getCreateTime());

System.out.println("任务委派人:"+task.getAssignee());

System.out.println("流程实例ID:"+task.getProcessInstanceId());

}

}

/**

* 完成任务

*/

@Test

public void completeTask(){

processEngine.getTaskService() // 任务相关Service

.complete("237504");

}

@Test

public void completeTask2(){

Map variables=new HashMap();

variables.put("days", 8);

processEngine.getTaskService() // 任务相关Service

.complete("235004", variables); //完成任务的时候,设置流程变量

}

}

视频教程第12讲有完整源码,大家自行下载;

java排他_Activiti之排他网关相关推荐

  1. android 排他button,javascript排他思想

    排他思想: 干掉所有人,设置我自己,先将所有人全设置为"",然后再设置当前的值 1.含义: 关于排他思想,我的理解就是先排除掉其他的(包括自己) ,最后再给自己(this)加想要的 ...

  2. Java超级流量架构之网关设计分析思路

    本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...

  3. mysql 事务排他锁_mysql排他锁

    1.排他锁示范: 排他锁:x锁,加完排他锁,事务不释放或者不提交,其他事务无法进行对应数据的操作(其他事务无法拿到对应的排他锁) -- 新建一个连接 select @@autocommit; set ...

  4. JAVA开发者大会-Spring Cloud网关分享

    新书购买:单本75折包邮 转载于:https://www.cnblogs.com/yinjihuan/p/10508859.html

  5. mysql 排他,mysql 共享锁 排他锁 防插入锁

    试验1 事务1: #!/usr/bin/python import time import MySQLdb; conn = MySQLdb.connect(host="localhost&q ...

  6. SELECT... FOR UPDATE 排他锁

    SELECT- FOR UPDATE 排他锁 1. SELECT-FOR UPDATE 是什么?作用是什么? select for update 即排他锁,排他锁又称为写锁,简称X锁,顾名思义,排他锁 ...

  7. JavaScript排他思想

    什么是排他思想? 排他思想是为一组同类型元素中的某一个元素设置样式时,采用的一种特定顺序.首先将所有元素的样式设置为一般样式(包括特定的某个元素),再为特定元素设置特定样式. 排他思想的优势 排他思想 ...

  8. JavaScript之排他思想详述

    在前面的博客中,小熊更新了相关操作元素的方法,但是如果有同一组元素,我们想要某一个元素实现某种样式,这时需要怎么办呢? 这里就要用到循环的排他思想. 排他思想的算法就是: 排除掉其他的(包括自己),然 ...

  9. InnoDB锁-共享锁、排他锁与意向锁

    InnoDB锁-共享锁.排他锁与意向锁 1.锁的分类 锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制.之前MyISAM锁章节已经讲过锁分类,而InnoDB锁按照粒度分为锁定整 ...

最新文章

  1. 语义分割--Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes
  2. inotify-tools使用方法介绍
  3. linux下udp多线程编程
  4. Linux下的Notepad++编辑器——Notepadqq
  5. L1-028 判断素数 (10 分)—团体程序设计天梯赛
  6. Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满
  7. Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume
  8. 实现微信支付宝收款到账语音提醒
  9. 什么是 VXLAN 技术?
  10. 第三章 隐藏通信隧道技术
  11. Springboot实现发送邮箱
  12. 谭宁计算机组装与维护,计算机组装与维护论文
  13. STM32驱动新西达电调和无刷电机
  14. 平台币继续拉升,短期仍看涨
  15. 超棒的HTML5/CSS3单页面响应式模板(支持Bootstrap)
  16. Unity+SteamVR开发——获取按键事件
  17. 欢迎来我的岛玩!当动森、王者峡谷、刺激战场成为“真实生活”……
  18. Linux安装JMeter进行压力测试
  19. 图书馆管理系统C语言代码
  20. 计算机内存多大够用,内存多大才够用?谈谈内存占用的那些秘密

热门文章

  1. Vulkan规范笔记(一) 第一章至第六章
  2. 【C语言学习】C语言入门
  3. python练手项目
  4. 汇编之EBP的认识。
  5. 人脸识别客户端应用程序_如何在应用程序中使用功能识别设置人脸检测
  6. 高考试题管理系统出题模块——C语言课程设计
  7. java学习:模拟KTV点歌系统
  8. Artiely Vue Admin - 基于蚂蚁金服Ant Design构建的高颜值开源管理后台UI框架
  9. 华为回应出售手机业务传闻:假消息;微软将ChatGPT整合到更多工具中:不用写代码就能开发应用;苹果更新Mac产品线|极客头条
  10. 【操作系统】进程、线程、协程和并发、并行