1. 会签 即多人执行当前任务 设置判断数 通过 例如:设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5 即三人通过 看各位的判断值是如何书写 这个值是根据各位需求改变的
  2.  
  3. 以下是xml
  4.  
  5. <process id="living" name="MoreLiving" isExecutable="true">
  6. <documentation>测试flowable多实例</documentation>
  7. <startEvent id="Start"></startEvent>
  8. <userTask id="UserTask1" name="U1" flowable:assignee="${assignee}">
  9. <multiInstanceLoopCharacteristics isSequential="false" flowable:collection="assigneeList" flowable:elementVariable="assignee">
  10. <loopCardinality>4</loopCardinality>
  11. <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.50}</completionCondition>
  12. </multiInstanceLoopCharacteristics>
  13. </userTask>
  14. <userTask id="UserTask2" name="U2"></userTask>
  15. <endEvent id="End"></endEvent>
  16. <sequenceFlow id="U2-E" sourceRef="UserTask2" targetRef="End"></sequenceFlow>
  17. <sequenceFlow id="S-U1" sourceRef="Start" targetRef="UserTask1"></sequenceFlow>
  18. <sequenceFlow id="U1-U2" sourceRef="UserTask1" targetRef="UserTask2"></sequenceFlow>
  19. </process>
  20. <completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.50}</completionCondition>
  21. >=0.50 即通过数是>=人员数的50%
  22.  
  23. flowable:collection="assigneeList" ${assigneeList}即取的人员列表名称
  24.  
  25. 以下是java代码
  26.  
  27. //主体流程的开始
  28. //创建数据库链接信息
  29. ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
  30. .setJdbcUrl("jdbc:mysql://127.0.0.1:3306/自库名?characterEncoding=UTF-8")
  31. .setJdbcUsername("账号")
  32. .setJdbcPassword("密码")
  33. .setJdbcDriver("com.mysql.jdbc.Driver")
  34. .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
  35. // 通过数据库链接信息 创建Flowable流程引擎 Create Flowable process engine
  36. ProcessEngine processEngine = cfg.buildProcessEngine();
  37. // 获取Flowable服务 Get Flowable repositoryService
  38. RepositoryService repositoryService = processEngine.getRepositoryService();
  39. // 获取Flowable服务 Get Flowable runtimeService
  40. RuntimeService runtimeService = processEngine.getRuntimeService();
  41. // 获取taskService对象 Get the first task
  42. TaskService taskService = processEngine.getTaskService();
  43. //获取fromserver对象 操作from表单的东西
  44. FormService formService = processEngine.getFormService();
  45.  
  46. Deployment deploy = repositoryService.createDeployment().addClasspathResource("/MoreLiving.bpmn20.xml").deploy();
  47. System.out.println(deploy.getId());
  48.  
  49. HashMap<String, Object> map = new HashMap<>();
  50. //定义的人员列表4人
  51. String[] v = { "shareniu1", "shareniu2", "shareniu3", "shareniu4" };
  52. map.put("per", "bbb");
  53. map.put("money", "1111");
  54. map.put("assigneeList", Arrays.asList(v));
  55. ProcessInstance pi = runtimeService.startProcessInstanceByKey("living",map);
  56.  
  57. List<Task> list = taskService.createTaskQuery().processInstanceId(pi.getId()).list();
  58. System.out.println(list.size());
  59. int i=0;
  60.  
  61. for (Task task : list) {
  62. i=i+1;
  63. System.out.println("==========================所有节点name is = "+task.getName());
  64. System.out.println("==========================所有节点id is = "+task.getId());
  65. System.out.println("============ i ="+i);
  66. //变相判断已经二人提交 之后人员不提交
  67. if (i<3) {
  68. System.out.println("================== 提交 节点 id is="+task.getId());
  69. taskService.complete(task.getId());
  70. }
  71. }
  72. //判断值为 50% 所以提交人达到2人 会签节点即可通过
  73. Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
  74. System.out.println("====================================================================================");
  75. //验证是否已通过
  76. System.out.println("===================task id is="+task.getId());
  77. System.out.println("===================task name is="+task.getName());
  78.  
  79. 我的判断值为 50% 所以提交人达到2 会签节点即可通过

flowable 实现多实例-会签-动态配置人员 参考demo的更多相关文章

  1. Linux平台oracle 11g单实例 安装部署配置 快速参考

    1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 7 oinstall groupadd ...

  2. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

  3. Spring动态配置多数据源

    Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不同于常见的单一数据实例的方案,这就要程序在运行时根据当时 ...

  4. Quartz动态配置表达的方法

    在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度.有关调度的实现我就第一就想到了Quartz这个开源调度组件,因为很多项目使用过,Spring结合Quartz静态配置调度任务时间, ...

  5. Quartz实现分布式可动态配置的定时任务

    关键词: 1. 定时任务 2. 分布式 3. 可动态配置触发时间 一般通过Quartz实现定时任务很简单.如果实现分布式定时任务需要结合分布式框架选择master节点触发也可以实现.但我们有个实际需求 ...

  6. Quartz实现JAVA定时任务的动态配置

    什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...

  7. 基于Django+celery二次开发动态配置定时任务 ( 二)

    一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...

  8. log4net日记文件路径动态配置

    在项目开发过程中,部署的服务器越来越多,查看日记的时候需要每台服务器去找日记看,这对运维人员来说是一个很不友好的方式.在此基础上就提出将所有日记统一到一台服务器上进行存放,并按照产生日记的服务器分文件 ...

  9. Dubbo配置完全外部化实践,使用动态配置中心的注意事项

    问题描述 近期开发项目,将Dubbo的配置全部外部化到动态配置中心.这里配置中心我使用的是Apollo. @Configuration public class DubboConfig { @Bean ...

随机推荐

  1. 关于深度学习之中Batch Size的一点理解(待更新)

    batch 概念:训练时候一批一批的进行正向推导和反向传播.一批计算一次loss mini batch:不去计算这个batch下所有的iter,仅计算一部分iter的loss平均值代替所有的. 以下来 ...

  2. 网骗欺诈?网络裸奔?都是因为 HTTP?

    先跟大家讲个故事,我初恋是在初中时谈的,我的后桌的后桌.那个时候没有手机这类的沟通工具,上课交流有三宝,脚踢屁股.笔戳后背以及传纸条,当然我只能是那个屁股和后背,还不是能让初恋踢到的后背. 但是说实话 ...

  3. bypass disable_function

    windows 1.com组件绕过 <?php$command=$_POST['a'];$wsh = new COM('WScript.shell'); // 生成一个COM对象 Shell.A ...

  4. kali修改配置文件后并保存

    vim是进入配置文件并修改 修改完按Esc进入控制模式,再:w保存 :wq是保存并退出

  5. 冲刺随笔——Day_Five

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  6. 0001_20190327_使用frp搭建内网穿透

    1. 环境 a)         公网服务器为阿里云的ECS  Windows  2008 R2服务器, 有公网IP地址; 这个作为frp的服务器 b)         内网是开发服务器, Cento ...

  7. charles解决乱码

    1.点击help ssl proxying ,install Charles Root Certificate 2.点击安装证书按钮 3:点击下一步按钮 4:选中将所有的证书都放入下列存储 点击浏览按 ...

  8. 第12.6节 Python标准库其他内置模块导览

    一. 文本处理服务 string模块 : 常见的字符串操作 difflib模块: 计算差异的辅助工具 textwrap模块: 文本自动换行与填充,能够格式化文本段落,以适应给定的屏幕宽度: unico ...

  9. linux进程管理(linux命令安装、进程生命周期、进程状态)

    1 linux下如何杀掉进程 1)找到包名所占用的端口: ps aux | grep cbs_portal-1.0.1.jar(包名) 2)杀掉进程: kill 10942(端口号) PS: //-- ...

  10. 安装centos出现的问题

    1.配置好之后,点击完成,如果出现"无法创建新虚拟机,无法打开配置文件,D:/... ,拒绝访问" 的错误时: 关闭虚拟机,重新以管理员身份打开.