【问题标题】:How to create a multi instance camunda subprocess with fluent builder api如何使用 fluent builder api 创建多实例 camunda 子进程
【发布时间】:2021-08-03 19:55:58
【问题描述】:

我正在尝试开发一个 camunda 进程,但我不知道如何实现一个多实例子进程来遍历一个集合。

例如:

SubProcess subProcess = modelInstance.getModelElementById("elementVersionId-" + element.getId().toString());

subProcess.builder().multiInstance().multiInstanceDone() //Cant add a start event after multinstance done

向子进程添加 multiInstanceDone 后,我无法使用 startEvent 启动子进程。

有没有人有想法,可以帮助我的例子?

【问题讨论】:

    标签: java camunda camunda-modeler


    【解决方案1】:

    希望这会有所帮助:

    import lombok.extern.slf4j.Slf4j;
    import org.camunda.bpm.model.bpmn.Bpmn;
    import org.camunda.bpm.model.bpmn.BpmnModelInstance;
    import org.camunda.bpm.model.bpmn.builder.MultiInstanceLoopCharacteristicsBuilder;
    import org.camunda.bpm.model.bpmn.instance.*;
    
    import java.io.File;
    
    @Slf4j
    public class MultiInstanceSubprocess {
    
      public static final String MULTI_INSTANCE_PROCESS = "myMultiInstanceProcess";
    
      // @see https://docs.camunda.org/manual/latest/user-guide/model-api/bpmn-model-api/fluent-builder-api/
      public static void main(String[] args) {
    
        BpmnModelInstance modelInst;
        try {
          File file = new File("./src/main/resources/multiInstance.bpmn");
          modelInst = Bpmn.createProcess()
              .id("MyParentProcess")
              .executable()
              .startEvent("ProcessStarted")
              .subProcess(MULTI_INSTANCE_PROCESS)
              //first create sub process content
              .embeddedSubProcess()
              .startEvent("subProcessStartEvent")
              .userTask("UserTask1")
              .endEvent("subProcessEndEvent")
              .subProcessDone()
              .endEvent("ParentEnded").done();
    
          // Add multi-instance loop characteristics to embedded sub process
          SubProcess subProcess = modelInst.getModelElementById(MULTI_INSTANCE_PROCESS);
          subProcess.builder()
              .multiInstance()
              .camundaCollection("myCollection")
              .camundaElementVariable("myVar")
              .multiInstanceDone();
    
          log.info("Flow Elements - Name : Id : Type Name");
          modelInst.getModelElementsByType(FlowNode.class).forEach(e -> log.info("{} : {} : {}", e.getName(), e.getId(), e.getElementType().getTypeName()));
    
          Bpmn.writeModelToFile(file, modelInst);
    
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多