Код делегирования
|
Этот раздел перенесён из документации 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