Отображение задачи Serivce / события завершения / события завершения в существующий поток исходящих последовательностей шлюза Exlusive Gateway динамически (Camunda) - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь добавить событие End или Terminate к существующему шлюзу в диаграмме BPMN, поскольку другой поток исходящей последовательности прагматично течет в Java во время выполнения. Какие шаги необходимо предпринять, чтобы достичь этого? Я следую этим примерам в качестве ссылки.

https://www.programcreek.com/java-api-examples/?class=org.camunda.bpm.model.bpmn.instance.camunda.CamundaExecutionListener&method=setCamundaEvent

BpmnModelInstance bpmn = execution.getBpmnModelInstance();
Collection<ExclusiveGateway> gateways = execution.getBpmnModelInstance().getModelElementsByType(ExclusiveGateway.class);

ExclusiveGateway gateway; // getting the instance of gateway from collection
SequenceFlow sequenceFlow = bpmn.newInstance(SequenceFlow.class);
sequenceFlow.setName("Sequence_flow_2");

ConditionExpression conditionExpression = bpmn.newInstance(ConditionExpression.class);
conditionExpression.setTextContent("${x == 2}");
sequenceFlow.setConditionExpression(conditionExpression);

CamundaExecutionListener executionListener = bpmn.newInstance(CamundaExecutionListener.class);
executionListener.setCamundaEvent("start");
executionListener.setCamundaDelegateExpression("Terminate");

EndEvent endEvent = bpmn.newInstance(EndEvent.class);
endEvent.setName("End error");
if (endEvent.getExtensionElements() == null) {
    ExtensionElements extensionElements =    bpmn.newInstance(ExtensionElements.class);
    endEvent.addChildElement(extensionElements);
}
endEvent.getExtensionElements().addChildElement(executionListener);

if (sequenceFlow.getExtensionElements() == null) {
    ExtensionElements extensionElements =     bpmn.newInstance(ExtensionElements.class);
    sequenceFlow.addChildElement(extensionElements);
}
sequenceFlow.getExtensionElements().addChildElement(endEvent);

if((gateway.getExtensionElements() == null) {
    ExtensionElements extensionElements =    bpmn.newInstance(ExtensionElements.class);
    gateway.addChildElement(extensionElements);
}
gateway.getExtensionElements().addChildElement(sequenceFlow);

//sequenceFlow.setSource(gateway);
//sequenceFlow.setTarget(endEvent);

bpmn.setDocumentElement(sequenceFlow);
gateway.getOutgoing().add(sequenceFlow);

Я приложил изображение для диаграммы bpmn ниже.

диаграмма в минуту

...