flowable流程引擎多实例发起流程后代签事务本该有一条数据的结果展示两天数据

Blade 未结 1 528
bufeng
bufeng 剑圣 2022-10-27 16:41

一、该问题的重现步骤是什么?

1. 这是基础的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: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" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.flowable.org/processdef">

  <process id="Leave" name="请假流程" isExecutable="true">

    <documentation>请假流程</documentation>

    <startEvent id="start" name="开始" flowable:initiator="applyUser" />

    <userTask id="hrTask" name="部门负责人审批" flowable:candidateGroups="deptA">

      <extensionElements>

        <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">false</modeler:initiator-can-complete>

      </extensionElements>

      <outgoing>Flow_13685fs</outgoing>

      <multiInstanceLoopCharacteristics>

        <loopCardinality xsi:type="tFormalExpression">2</loopCardinality>

        <completionCondition xsi:type="tFormalExpression">${nrOfCompletedInstances/nrOfInstances &gt;= 1}</completionCondition>

      </multiInstanceLoopCharacteristics>

    </userTask>

    <endEvent id="end" name="结束">

      <incoming>Flow_13685fs</incoming>

    </endEvent>

    <sequenceFlow id="flow1" sourceRef="start" targetRef="hrTask" />

    <sequenceFlow id="Flow_13685fs" sourceRef="hrTask" targetRef="end" />

  </process>

  <bpmndi:BPMNDiagram id="BPMNDiagram_Leave">

    <bpmndi:BPMNPlane id="BPMNPlane_Leave" bpmnElement="Leave">

      <bpmndi:BPMNEdge id="Flow_13685fs_di" bpmnElement="Flow_13685fs">

        <omgdi:waypoint x="466" y="204" />

        <omgdi:waypoint x="583" y="204" />

        <omgdi:waypoint x="583" y="404" />

        <omgdi:waypoint x="705" y="404" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNEdge id="BPMNEdge_flow1" bpmnElement="flow1">

        <omgdi:waypoint x="330" y="150" />

        <omgdi:waypoint x="348" y="150" />

        <omgdi:waypoint x="348" y="204" />

        <omgdi:waypoint x="366" y="204" />

      </bpmndi:BPMNEdge>

      <bpmndi:BPMNShape id="BPMNShape_start" bpmnElement="start">

        <omgdc:Bounds x="300" y="135" width="30" height="30" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape id="BPMNShape_hrTask" bpmnElement="hrTask">

        <omgdc:Bounds x="366" y="164" width="100" height="80" />

      </bpmndi:BPMNShape>

      <bpmndi:BPMNShape id="BPMNShape_end" bpmnElement="end">

        <omgdc:Bounds x="705" y="390" width="28" height="28" />

      </bpmndi:BPMNShape>

    </bpmndi:BPMNPlane>

  </bpmndi:BPMNDiagram>

</definitions>

image.png

2. 然后发起流程其中候选组一个人员的代签事务列表会有两条数据,应该是一条数据吧?想要的也是一条数据

image.png



为什么会出现两条数据? 应该怎么配置节点信息

二、你期待的结果是什么?实际看到的又是什么?

待签任务数据正确

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex 商业版,win10 

1条回答
  • 在这个方法打断点排查一下,估计是你这个账号也有候选组的角色,所有才有两条。

    C{L3T08`TI{SX@[{EXPIMQU.png

    作者追问:2022-10-28 22:05

    1. 数据库deptA这个候选组有两个角色  分别是部门负责人正和部门负责人副,其中部门负责人正这个角色对应只有一个人员账号是zhangyong,其中部门负责人副这个角色对应只有一个人员账号是zhangyong1image.png

      image.png

    2. 按照上面xml提供的流程图 节点配置--审核配置选择的候选组为deptA,多实例配置并行 循环次数2次 完成条件百分之百image.png

    3. 我用admin发起了请假流程 ,同时后端代码注释掉了审批人这行代码。目前需求不需要第一步的审批人 。

      image.png


    4. 根据您提供的代码断点排查flowList在个人等待签收的任务和定制流程等待签收的任务构造数据时flowList的size为0,通用流程等待签收的任务构造数据flowList会有两条数据

    5. 然后登录zhangyong或者zhangyong1其中一个账号代签任务就会有两条 ,希望是zhangyong登录进去有一条zhangyong的数据,zhangyong1登录进去有一条zhangyong1的数据。其他的目前在这个框架中没有其他改动。希望指导一下如何配置节点信息或者修改排查



    作者追问:2022-10-30 10:23

    按照网上资料提供的思路进行多实例配置框架提示org.flowable.common.engine.api.FlowableIllegalArgumentException: Variable 'taskUserList' was not found ,是框架没有接收和设置taskUserList的数据吧?image.png

    作者追问:2022-10-30 14:02

    如何在节点配置可以使运行时任务这张表ASSIGNEE_字段有对应会签人员的id,如果ASSIGNEE_字段有对应会签人员的id就直接可以在代办列表看到了,不需要签收这一步骤了。目前就是不知道如何配置节点,使对应的会签人员看到自己的代办或者代签任务。image.png

    0 讨论(0)
提交回复