如何在调用Camunda原生REST API接口时给多实例节点传入集合变量

本文介绍了Camunda工作流引擎中多实例节点的应用,包括人工任务和调用子流程的并行处理。通过XML配置展示了如何设置集合变量,如assigneeList和itemList,以实现并审和并行调用。同时,提供了启动流程的POST请求示例及响应,展示如何传入变量启动流程实例。最后,提到了在WebApp中验证任务实例的创建和执行。
摘要由CSDN通过智能技术生成

Camunda提供了多种类型的变量类型支持,详情请查看官方文档

多实例节点属性有集合变量,常用于并审或调用子流程节点,示例如下:

多实例节点-人工任务-并审-集合变量名:assigneeList

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_15civpn" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
  <bpmn:process id="Process_1fh6max" name="Process_1fh6max" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1" name="开始" camunda:initiator="starter">
      <bpmn:outgoing>Flow_1lqot0o</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1lqot0o" sourceRef="StartEvent_1" targetRef="Activity_0ykvu3n" />
    <bpmn:sequenceFlow id="Flow_0yuchf0" sourceRef="Activity_0ykvu3n" targetRef="Activity_0unwnbp" />
    <bpmn:endEvent id="Event_1uhis39" name="结束">
      <bpmn:incoming>Flow_0qdzfen</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_0qdzfen" sourceRef="Activity_0unwnbp" targetRef="Event_1uhis39" />
    <bpmn:userTask id="Activity_0ykvu3n" name="提交" camunda:assignee="${starter}">
      <bpmn:incoming>Flow_1lqot0o</bpmn:incoming>
      <bpmn:outgoing>Flow_0yuchf0</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:userTask id="Activity_0unwnbp" name="并审" camunda:assignee="${assignee}">
      <bpmn:incoming>Flow_0yuchf0</bpmn:incoming>
      <bpmn:outgoing>Flow_0qdzfen</bpmn:outgoing>
      <bpmn:multiInstanceLoopCharacteristics camunda:collection="assigneeList" camunda:elementVariable="assignee">
        <bpmn:completionCondition xsi:type="bpmn:tFormalExpression">${nrOfCompletedInstances==1}</bpmn:completionCondition>
      </bpmn:multiInstanceLoopCharacteristics>
    </bpmn:userTask>
  </bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1fh6max">
      <bpmndi:BPMNEdge id="Flow_1lqot0o_di" bpmnElement="Flow_1lqot0o">
        <di:waypoint x="215" y="117" />
        <di:waypoint x="270" y="117" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0yuchf0_di" bpmnElement="Flow_0yuchf0">
        <di:waypoint x="370" y="117" />
        <di:waypoint x="430" y="117" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0qdzfen_di" bpmnElement="Flow_0qdzfen">
        <di:waypoint x="530" y="117" />
        <di:waypoint x="592" y="117" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
        <dc:Bounds x="179" y="99" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="186" y="142" width="22" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_1uhis39_di" bpmnElement="Event_1uhis39">
        <dc:Bounds x="592" y="99" width="36" height="36" />
        <bpmndi:BPMNLabel>
          <dc:Bounds x="599" y="142" width="22" height="14" />
        </bpmndi:BPMNLabel>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_0aylr2v_di" bpmnElement="Activity_0ykvu3n">
        <dc:Bounds x="270" y="77" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_177sc21_di" bpmnElement="Activity_0unwnbp">
        <dc:Bounds x="430" y="77" width="100" height="80" />
      </bpmndi:BPMNShape>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

多实例节点-调用子流程-并行-集合变量名:itemList

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_0udywbt" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.12.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
  <bpmn:process id="Process_18oo3oq" isExecutable="true">
    <bpmn:startEvent id="StartEvent_1">
      <bpmn:outgoing>Flow_1kmyk0u</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:sequenceFlow id="Flow_1kmyk0u" sourceRef="StartEvent_1" targetRef="Activity_0i2olek" />
    <bpmn:callActivity id="Activity_0i2olek" name="调用子流程" calledElement="Process_1fh6max">
      <bpmn:incoming>Flow_1kmyk0u</bpmn:incoming>
      <bpmn:outgoing>Flow_0cmzdl8</bpmn:outgoing>
      <bpmn:multiInstanceLoopCharacteristics camunda:collection="itemList" camunda:elementVariable="item" />
    </bpmn:callActivity>
    <bpmn:endEvent id="Event_0hkadtg">
      <bpmn:incoming>Flow_0cmzdl8</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="Flow_0cmzdl8" sourceRef="Activity_0i2olek" targetRef="Event_0hkadtg" />
  </bpmn:process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_18oo3oq">
      <bpmndi:BPMNEdge id="Flow_1kmyk0u_di" bpmnElement="Flow_1kmyk0u">
        <di:waypoint x="215" y="117" />
        <di:waypoint x="270" y="117" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="Flow_0cmzdl8_di" bpmnElement="Flow_0cmzdl8">
        <di:waypoint x="370" y="117" />
        <di:waypoint x="432" y="117" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
        <dc:Bounds x="179" y="99" width="36" height="36" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Activity_09u6jrj_di" bpmnElement="Activity_0i2olek">
        <dc:Bounds x="270" y="77" width="100" height="80" />
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="Event_0hkadtg_di" bpmnElement="Event_0hkadtg">
        <dc:Bounds x="432" y="99" width="36" height="36" />
      </bpmndi:BPMNShape>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>

修改pom.xml文件,添加以下依赖:

    <dependency>
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-plugin-spin</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.spin</groupId>
      <artifactId>camunda-spin-dataformat-all</artifactId>
    </dependency>

重启服务,并部署模型,部署成功后,打开Postman或ApiPost等客户端,参考原生REST API Start Process Instance | docs.camunda.org 发起流程

请求报文:

{
    "variables":{
        "assigneeList":{
            "value":"[\"bx2\",\"bx3\"]",
            "type":"Object",
            "valueInfo":{
                "objectTypeName":"java.util.ArrayList",
                "serializationDataFormat":"application/json"
            }
        },
        "starter":{
            "value":"bx1",
            "type":"String"
        }
    },
    "businessKey":"myBusinessKey2",
    "withVariablesInReturn":true
}

响应报文:

{
    "links":[
        {
            "method":"GET",
            "href":"http://127.0.0.1:8080/engine-rest/process-instance/d593cf3e-8cac-11ec-b78f-8c1645647a47",
            "rel":"self"
        }
    ],
    "id":"d593cf3e-8cac-11ec-b78f-8c1645647a47",
    "definitionId":"Process_1fh6max:1:89fe12a3-8c7e-11ec-a02b-8c1645647a47",
    "businessKey":"myBusinessKey2",
    "caseInstanceId":null,
    "ended":false,
    "suspended":false,
    "tenantId":null,
    "variables":{
        "assigneeList":{
            "type":"Object",
            "value":"[\"bx2\",\"bx3\"]",
            "valueInfo":{
                "objectTypeName":"java.util.ArrayList",
                "serializationDataFormat":"application/json"
            }
        },
        "starter":{
            "type":"String",
            "value":"bx1",
            "valueInfo":{

            }
        }
    }
}

 登陆WebApp并切换到Tasklist执行提交节点任务到提交,检查是否可以正常提交,以及并审任务节点是否可以产生2个任务实例

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值