flowable 实现多实例-会签-动态配置人员 参考demo
会签 即多人执行当前任务 设置判断数 通过 例如:设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5人 即三人通过 看各位的判断值是如何书写 这个值是根据各位需求改变的 以下是xml <process id="living" name="MoreLiving" isExecutable="true">
<documentation>测试flowable多实例</documentation>
<startEvent id="Start"></startEvent>
<userTask id="UserTask1" name="U1" flowable:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="false" flowable:collection="assigneeList" flowable:elementVariable="assignee">
<loopCardinality>4</loopCardinality>
<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.50}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<userTask id="UserTask2" name="U2"></userTask>
<endEvent id="End"></endEvent>
<sequenceFlow id="U2-E" sourceRef="UserTask2" targetRef="End"></sequenceFlow>
<sequenceFlow id="S-U1" sourceRef="Start" targetRef="UserTask1"></sequenceFlow>
<sequenceFlow id="U1-U2" sourceRef="UserTask1" targetRef="UserTask2"></sequenceFlow>
</process>
<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.50}</completionCondition>
>=0.50 即通过数是>=人员数的50% flowable:collection="assigneeList" ${assigneeList}即取的人员列表名称 以下是java代码 //主体流程的开始
//创建数据库链接信息
ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/自库名?characterEncoding=UTF-8")
.setJdbcUsername("账号")
.setJdbcPassword("密码")
.setJdbcDriver("com.mysql.jdbc.Driver")
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
// 通过数据库链接信息 创建Flowable流程引擎 Create Flowable process engine
ProcessEngine processEngine = cfg.buildProcessEngine();
// 获取Flowable服务 Get Flowable repositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
// 获取Flowable服务 Get Flowable runtimeService
RuntimeService runtimeService = processEngine.getRuntimeService();
// 获取taskService对象 Get the first task
TaskService taskService = processEngine.getTaskService();
//获取fromserver对象 操作from表单的东西
FormService formService = processEngine.getFormService(); Deployment deploy = repositoryService.createDeployment().addClasspathResource("/MoreLiving.bpmn20.xml").deploy();
System.out.println(deploy.getId()); HashMap<String, Object> map = new HashMap<>();
//定义的人员列表4人
String[] v = { "shareniu1", "shareniu2", "shareniu3", "shareniu4" };
map.put("per", "bbb");
map.put("money", "1111");
map.put("assigneeList", Arrays.asList(v));
ProcessInstance pi = runtimeService.startProcessInstanceByKey("living",map); List<Task> list = taskService.createTaskQuery().processInstanceId(pi.getId()).list();
System.out.println(list.size());
int i=0; for (Task task : list) {
i=i+1;
System.out.println("==========================所有节点name is = "+task.getName());
System.out.println("==========================所有节点id is = "+task.getId());
System.out.println("============ i ="+i);
//变相判断已经二人提交 之后人员不提交
if (i<3) {
System.out.println("================== 提交 节点 id is="+task.getId());
taskService.complete(task.getId());
}
}
//判断值为 50% 所以提交人达到2人 会签节点即可通过
Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
System.out.println("====================================================================================");
//验证是否已通过
System.out.println("===================task id is="+task.getId());
System.out.println("===================task name is="+task.getName()); 我的判断值为 50% 所以提交人达到2人 会签节点即可通过
flowable 实现多实例-会签-动态配置人员 参考demo的更多相关文章
- Linux平台oracle 11g单实例 安装部署配置 快速参考
1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 7 oinstall groupadd ...
- Quartz 在 Spring 中如何动态配置时间--转
原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...
- Spring动态配置多数据源
Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...
- Quartz动态配置表达的方法
在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间, ...
- Quartz实现分布式可动态配置的定时任务
关键词: 1. 定时任务 2. 分布式 3. 可动态配置触发时间 一般通过Quartz实现定时任务很简单.如果实现分布式定时任务需要结合分布式框架选择master节点触发也可以实现.但我们有个实际需求 ...
- Quartz实现JAVA定时任务的动态配置
什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...
- 基于Django+celery二次开发动态配置定时任务 ( 二)
一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...
- log4net日记文件路径动态配置
在项目开发过程中,部署的服务器越来越多,查看日记的时候需要每台服务器去找日记看,这对运维人员来说是一个很不友好的方式.在此基础上就提出将所有日记统一到一台服务器上进行存放,并按照产生日记的服务器分文件 ...
- Dubbo配置完全外部化实践,使用动态配置中心的注意事项
问题描述 近期开发项目,将Dubbo的配置全部外部化到动态配置中心.这里配置中心我使用的是Apollo. @Configuration public class DubboConfig { @Bean ...
随机推荐
- ios中关于系统定位CLLocationManager的使用解析
//1.添加定位管理委托协议 CLLocationManagerDelegate //2.初始化定位管理对象 self.locationManager=[[CLLocationManager allo ...
- 关于热力图的loss的一点感想
网络的输出的热力图和gt相减的差矩阵,求其最大特征值的平方作为loss. 若图像h w不相等,可以使用奇异值代替特征值.奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小正相关.每个矩阵A都可 ...
- 多k8s集群管理
多集群的切换是K8s运维中比不可少的问题,常见的基于多个集群进行切换的方法有三种: 切换config文件 通过context进行集群切换 用kubecm进行集群切换 切换config文件 我们先看看放 ...
- 【刷题笔记】DP优化-单调队列优化
单调队列优化 眼界极窄的ZZ之前甚至不会单调队列--(好丢人啊) 单调队列优化的常见情景: 转移可以转化成只需要确定一个维度,而且这个维度的取值范围在某个区间里 修剪草坪 这个题学长讲的好像是另外一个 ...
- Nginx配置https以及配置说明
示例 worker_processes 1; events { worker_connections 1024; } http { #均衡负载 upstream demo{ server localh ...
- cJSON的使用
1 安装cJSON github地址:https://github.com/DaveGamble/cJSON.git 下载完成后进入cJSON目录,执行下面命令生成Makefile文件 mkdir b ...
- 大数据-redis-redis启动出错
redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error 解决方法(1) 首先如果你是从官方redis官 ...
- linux搭建harbor与使用
条件:安装docker&docker-compose 如未安装,请看:linux离线安装docker + docker-compose harbor 1.下载 下载地址:https://git ...
- 第7.15节 Python中classmethod定义的类方法详解
第7.15节 Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一. 类方法的定义 在类中定 ...
- HTTP慢速拒绝服务攻击(Slow HTTP Dos)
HTTP慢速拒绝服务攻击简介 HTTP慢速攻击是利用HTTP合法机制,以极低的速度往服务器发送HTTP请求,尽量长时间保持连接,不释放,若是达到了Web Server对于并发连接数的上限,同时恶意占用 ...