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 ...
随机推荐
- Nginx配置Https(详细、完整)
Nginx配置Https(详细.完整) 原文链接:请支持原创 前置条件: 在配置https之前请确保下面的步骤已经完成 服务器已经安装nginx并且通过http可以正常访问 不会安装nginx的可以参 ...
- JZOJ2020年8月11日提高组T3 页
JZOJ2020年8月11日提高组T3 页 题目 Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场 ...
- 20200315_python3.6去除标点符号
line = "python3.6下进行去!@#$%^&*()除标点测试,:!大家好,:!&>啥都不是!@#¥%--&*(-.||" # python ...
- 第十二章 Python标准库内置模块和包简介
在<第十章 Python的模块和包>老猿详细介绍了Python模块和包的相关概念,模块和包是Python功能扩展的重要手段,也是Python开放的重要特征.为了提供强大的能力,Python ...
- PyQt(Python+Qt)学习随笔:Model/View中的枚举类 Qt.MatchFlag的取值及含义
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 枚举类 Qt.MatchFlag描述在模型中搜索项时可以使用的匹配类型,它可以在QStandardI ...
- PyQt(Python+Qt)学习随笔:快速理解Qt 中Action是什么
一.引言 Qt中Action这个词接触很久了,一直以来没去学习,今天终于准备学习了,查了些资料,初步总结为: Action为界面操作的抽象,应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命 ...
- flask中的return、过滤器详解
之前吧一直学习flask的时候,一直不明白response是怎么产生,今天是明白了.retrun 哎呀,这个地方看着挺小心的东西, 蕴含的能量可不小啊.今天我详细总结总结. 先来写jinjia2语法 ...
- 移动端H5测试调试利器 chrome://inspect/#devices
使用 chrome://inspect/#devices,可以使安卓手机里的WebView也能和chrome一样审查元素,调试和测试移动端H5页面. 我使用的是三星S6 (该功能支持安卓系统4.4及以 ...
- ASP自动刷新页面的实现方法总结
1) <meta http-equiv="refresh" content="10"> 10表示间隔10秒刷新一次 2) <script> ...
- 题解-洛谷P5410 【模板】扩展 KMP(Z 函数)
题面 洛谷P5410 [模板]扩展 KMP(Z 函数) 给定两个字符串 \(a,b\),要求出两个数组:\(b\) 的 \(z\) 函数数组 \(z\).\(b\) 与 \(a\) 的每一个后缀的 L ...