Код делегирования

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Если вы используете код делегирования, вы можете получить доступ к экземпляру BPMN-модели и к текущему элементу исполняемого процесса. Если вы обратились к BPMN-модели, она будет закеширована, чтобы избежать лишних запросов к базе данных.

Java Delegate

Если ваш класс реализует интерфейс io.openbpm.bpm.engine.delegate.JavaDelegate, вы можете получить доступ к экземпляру BPMN-модели и к текущему элементу потока. В следующем примере JavaDelegate был добавлен к сервисной задаче в BPMN-модели. Таким образом, возвращаемый элемент потока может получить преобразование типа в ServiceTask.

public class ExampleServiceTask implements JavaDelegate {

  public void execute(DelegateExecution execution) throws Exception {
    BpmnModelInstance modelInstance = execution.getBpmnModelInstance();
    ServiceTask serviceTask = (ServiceTask) execution.getBpmnModelElementInstance();
  }
}

Execution Listener

Если ваш класс реализует интерфейс io.openbpm.bpm.engine.delegate.ExecutionListener, вы можете получить доступ к экземпляру BPMN-модели и текущему элементу потока. Поскольку Execution Listener (слушатель выполнений) может добавляться к нескольким элементам? а именно к процессам, событиям, задачам, шлюзам и потокам последовательностей, нельзя сказать с увереностью, какого типа будет элемент потока.

public class ExampleExecutionListener implements ExecutionListener {

  public void notify(DelegateExecution execution) throws Exception {
    BpmnModelInstance modelInstance = execution.getBpmnModelInstance();
    FlowElement flowElement = execution.getBpmnModelElementInstance();
  }
}

Task Listener

Если ваш класс реализует интерфейс io.openbpm.bpm.engine.delegate.TaskListener, вы можете получить доступ к экземпляру BPMN-модели и текущей польщовательской задачеБ так как Task Listener (слушатель задачи) может быть добавлен только к пользовательской задаче.

public class ExampleTaskListener implements TaskListener {

  public void notify(DelegateTask delegateTask) {
    BpmnModelInstance modelInstance = delegateTask.getBpmnModelInstance();
    UserTask userTask = delegateTask.getBpmnModelElementInstance();
  }
}

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org