java排他_Activiti之排他网关
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之排他网关相关推荐
- android 排他button,javascript排他思想
排他思想: 干掉所有人,设置我自己,先将所有人全设置为"",然后再设置当前的值 1.含义: 关于排他思想,我的理解就是先排除掉其他的(包括自己) ,最后再给自己(this)加想要的 ...
- Java超级流量架构之网关设计分析思路
本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...
- mysql 事务排他锁_mysql排他锁
1.排他锁示范: 排他锁:x锁,加完排他锁,事务不释放或者不提交,其他事务无法进行对应数据的操作(其他事务无法拿到对应的排他锁) -- 新建一个连接 select @@autocommit; set ...
- JAVA开发者大会-Spring Cloud网关分享
新书购买:单本75折包邮 转载于:https://www.cnblogs.com/yinjihuan/p/10508859.html
- mysql 排他,mysql 共享锁 排他锁 防插入锁
试验1 事务1: #!/usr/bin/python import time import MySQLdb; conn = MySQLdb.connect(host="localhost&q ...
- SELECT... FOR UPDATE 排他锁
SELECT- FOR UPDATE 排他锁 1. SELECT-FOR UPDATE 是什么?作用是什么? select for update 即排他锁,排他锁又称为写锁,简称X锁,顾名思义,排他锁 ...
- JavaScript排他思想
什么是排他思想? 排他思想是为一组同类型元素中的某一个元素设置样式时,采用的一种特定顺序.首先将所有元素的样式设置为一般样式(包括特定的某个元素),再为特定元素设置特定样式. 排他思想的优势 排他思想 ...
- JavaScript之排他思想详述
在前面的博客中,小熊更新了相关操作元素的方法,但是如果有同一组元素,我们想要某一个元素实现某种样式,这时需要怎么办呢? 这里就要用到循环的排他思想. 排他思想的算法就是: 排除掉其他的(包括自己),然 ...
- InnoDB锁-共享锁、排他锁与意向锁
InnoDB锁-共享锁.排他锁与意向锁 1.锁的分类 锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制.之前MyISAM锁章节已经讲过锁分类,而InnoDB锁按照粒度分为锁定整 ...
最新文章
- 语义分割--Full-Resolution Residual Networks for Semantic Segmentation in Street Scenes
- inotify-tools使用方法介绍
- linux下udp多线程编程
- Linux下的Notepad++编辑器——Notepadqq
- L1-028 判断素数 (10 分)—团体程序设计天梯赛
- Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满
- Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume
- 实现微信支付宝收款到账语音提醒
- 什么是 VXLAN 技术?
- 第三章 隐藏通信隧道技术
- Springboot实现发送邮箱
- 谭宁计算机组装与维护,计算机组装与维护论文
- STM32驱动新西达电调和无刷电机
- 平台币继续拉升,短期仍看涨
- 超棒的HTML5/CSS3单页面响应式模板(支持Bootstrap)
- Unity+SteamVR开发——获取按键事件
- 欢迎来我的岛玩!当动森、王者峡谷、刺激战场成为“真实生活”……
- Linux安装JMeter进行压力测试
- 图书馆管理系统C语言代码
- 计算机内存多大够用,内存多大才够用?谈谈内存占用的那些秘密