Camunda java эквивалент для передачи всех переменных деятельности - PullRequest
4 голосов
/ 22 января 2020

У меня есть код, который создает фиктивную модель, подобную этой

BpmnModelInstance modelInstance = Bpmn.createExecutableProcess("onelongmodel")
                .name("onelongmodel")
                .startEvent()               
                .camundaAsyncBefore()
                .callActivity("oneactivity").name("oneactivity").calledElement("oneactivity")
                .endEvent()
                .done();

Я хотел бы передать все переменные в и из действия, которое я могу сделать, добавив в файл bpmn

  <extensionElements>
       <camunda:in variables="all" />
       <camunda:out variables="all" />
    </extensionElements>

Я хотел бы сделать этот шаг в java. Как изменить код java выше, чтобы добавить эту опцию?

1 Ответ

1 голос
/ 03 марта 2020

Я думаю, это то, что вы ищете

private void deployProcess(String eventName) {

 BpmnModelInstance modelInstance = Bpmn.createExecutableProcess(PROCESS_ID)
  .startEvent()
  .userTask(USER_TASK_ID)
  .endEvent()
  .done();

 ExtensionElements extensionElements = modelInstance.newInstance(ExtensionElements.class);

 ModelElementInstance taskListener = extensionElements.addExtensionElement(CAMUNDA_NS, "taskListener");

 taskListener.setAttributeValueNs(CAMUNDA_NS, "class", ModelExecutionContextTaskListener.class.getName());

 taskListener.setAttributeValueNs(CAMUNDA_NS, "event", eventName);

 UserTask userTask = modelInstance.getModelElementById(USER_TASK_ID);

 userTask.setExtensionElements(extensionElements);

 deploymentId = repositoryService.createDeployment().addModelInstance("process.bpmn", modelInstance).deploy().getId();
}

Ссылка здесь

...