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 ...
随机推荐
- 关于深度学习之中Batch Size的一点理解(待更新)
batch 概念:训练时候一批一批的进行正向推导和反向传播.一批计算一次loss mini batch:不去计算这个batch下所有的iter,仅计算一部分iter的loss平均值代替所有的. 以下来 ...
- 网骗欺诈?网络裸奔?都是因为 HTTP?
先跟大家讲个故事,我初恋是在初中时谈的,我的后桌的后桌.那个时候没有手机这类的沟通工具,上课交流有三宝,脚踢屁股.笔戳后背以及传纸条,当然我只能是那个屁股和后背,还不是能让初恋踢到的后背. 但是说实话 ...
- bypass disable_function
windows 1.com组件绕过 <?php$command=$_POST['a'];$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.A ...
- kali修改配置文件后并保存
vim是进入配置文件并修改 修改完按Esc进入控制模式,再:w保存 :wq是保存并退出
- 冲刺随笔——Day_Five
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...
- 0001_20190327_使用frp搭建内网穿透
1. 环境 a) 公网服务器为阿里云的ECS Windows 2008 R2服务器, 有公网IP地址; 这个作为frp的服务器 b) 内网是开发服务器, Cento ...
- charles解决乱码
1.点击help ssl proxying ,install Charles Root Certificate 2.点击安装证书按钮 3:点击下一步按钮 4:选中将所有的证书都放入下列存储 点击浏览按 ...
- 第12.6节 Python标准库其他内置模块导览
一. 文本处理服务 string模块 : 常见的字符串操作 difflib模块: 计算差异的辅助工具 textwrap模块: 文本自动换行与填充,能够格式化文本段落,以适应给定的屏幕宽度: unico ...
- linux进程管理(linux命令安装、进程生命周期、进程状态)
1 linux下如何杀掉进程 1)找到包名所占用的端口: ps aux | grep cbs_portal-1.0.1.jar(包名) 2)杀掉进程: kill 10942(端口号) PS: //-- ...
- 安装centos出现的问题
1.配置好之后,点击完成,如果出现"无法创建新虚拟机,无法打开配置文件,D:/... ,拒绝访问" 的错误时: 关闭虚拟机,重新以管理员身份打开.