会签 即多人执行当前任务 设置判断数 通过 例如:设置了是半数通过即可通过当前节点 如果当前是4人那就是2人即通过 如果是6人那就是三人即通过 如果是5人 即三人通过 看各位的判断值是如何书写 这个值是根据各位需求改变的
以下是xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef"><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="S-U1" sourceRef="Start" targetRef="UserTask1"></sequenceFlow><sequenceFlow id="U1-U2" sourceRef="UserTask1" targetRef="UserTask2"></sequenceFlow><sequenceFlow id="U2-E" sourceRef="UserTask2" targetRef="End"></sequenceFlow></process><bpmndi:BPMNDiagram id="BPMNDiagram_living"><bpmndi:BPMNPlane bpmnElement="living" id="BPMNPlane_living"><bpmndi:BPMNShape bpmnElement="Start" id="BPMNShape_Start"><omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="UserTask1" id="BPMNShape_UserTask1"><omgdc:Bounds height="80.0" width="100.0" x="315.0" y="138.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="UserTask2" id="BPMNShape_UserTask2"><omgdc:Bounds height="80.0" width="100.0" x="570.0" y="138.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="End" id="BPMNShape_End"><omgdc:Bounds height="28.0" width="28.0" x="810.0" y="164.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="S-U1" id="BPMNEdge_S-U1"><omgdi:waypoint x="129.94999970750393" y="178.0"></omgdi:waypoint><omgdi:waypoint x="314.99999999991076" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="U2-E" id="BPMNEdge_U2-E"><omgdi:waypoint x="669.9499999999294" y="178.0"></omgdi:waypoint><omgdi:waypoint x="810.0" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="U1-U2" id="BPMNEdge_U1-U2"><omgdi:waypoint x="414.9499999999562" y="178.0"></omgdi:waypoint><omgdi:waypoint x="570.0" y="178.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram>
</definitions>
${nrOfCompletedInstances/nrOfInstances >= 0.50}
>=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 engineProcessEngine processEngine = cfg.buildProcessEngine();// 获取Flowable服务 Get Flowable repositoryServiceRepositoryService repositoryService = processEngine.getRepositoryService();// 获取Flowable服务 Get Flowable runtimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();// 获取taskService对象 Get the first taskTaskService 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人 会签节点即可通过