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 ...
随机推荐
- [BUGCASE]Phantom服务代码不健壮导致无法发送报表邮件
一.问题描述 广告平台中的发报表邮件功能偶尔会出现发送失败的情况,重启phantom服务之后就好了 查看phantom服务的日志发现,在2017-12-12 03:29:45有访问记录,并且参数是异常 ...
- sqli-labs-master 闯关前知识点学习
1).前期准备.知识点 开始之前,为了方便查看sql注入语句,我在sqli-labs-master网页源码php部分加了两行代码,第一行意思是输出数据库语句,第二行是换行符 一.Mysql 登录 1. ...
- FlashCache初体验
注意: 测试用的是CentOS6.5 内核版本2.6.32-431.el6.x86_64 步骤: 上传CentOS6.5做本地yum源,安装以下包. yum install gcc yum insta ...
- 思维导图学 Kotlin
前言 最近做了<Kotlin实战>的思维导图笔记,Kotlin真香-- 目录 基础 函数 类.对象 λ表达式 类型 约定 高阶函数.泛型 公众号 coding 笔记.点滴记录,以后的文章也 ...
- java42
1.Random类 随机生成某个整数 Random r = new Random(); System.out.println(r.nextInt()); 伪随机数:第一次打印为随机,再次运行,数字将保 ...
- javascript开发后端程序的神器nodejs
目录 简介 nodejs的历史 nodejs简介 nodejs的运行环境 process 终止进程 env argv CLI交互 exports模块 nodejs API nodejs的框架 简介 j ...
- vue--axios分装
封装: import axios from 'axios' axios.defaults.baseURL="http://127.0.0.1:8000/" axios.defaul ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- edusrc电子科技大学证书
- 算法——单词拆分 II
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 链接: leetcode. 解题思路 ...