Элементы расширения

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

Кастомизированные элементы расширения — это стандартный способ расширения BPMN-модели. Элементы расширения от Camunda полностью реализованы в API BPMN-модели, но неизвестные элементы расширения могут быть подвергнуты оценке и добавлены без особого труда.

Каждый BaseElement в BPMN может иметь дочерние элементы типа extensionElements. Этот элемент может содержать все разновидности элементов расширения. Чтобы получить доступ к элементам расширения, вы должны будете вызвать метод getExtensionElements() и, если таких дочерних элементов не существует, вам для начала придется создать хотя бы один.

StartEvent startEvent = modelInstance.newInstance(StartEvent.class);
ExtensionElements extensionElements = startEvent.getExtensionElements();
if (extensionElements == null) {
  extensionElements = modelInstance.newInstance(ExtensionElements.class);
  startEvent.setExtensionElements(extensionElements);
}
Collection<ModelElementInstance> elements = extensionElements.getElements();

После этого вы можете добавлять элементы расширения в коллекцию или удалять их оттуда.

CamundaFormData formData = modelInstance.newInstance(CamundaFormData.class);
extensionElements.getElements().add(formData);
extensionElements.getElements().remove(formData);

Вы также можете получить доступ к интерфейсу, включающему запросы, чтобы отфильтровать элементы расширения.

extensionElements.getElementsQuery().count();
extensionElements.getElementsQuery().list();
extensionElements.getElementsQuery().singleResult();
extensionElements.getElementsQuery().filterByType(CamundaFormData.class).singleResult();

В дополнение, существуют несколько упрощенных путей для создания элементов расширения. Вы можете использовать namespaceUri и elementName, чтобы добавить ваши собственные элементы расширения. Либо вы можете использщовать class известного типа элемента расширения, например, элементы расширения от Camunda. Элемент расширения добавляется к BPMN элементу и возвращается, чтобы вы могли установить атрибуты или добавить дочерние элементы.

ModelElementInstance element = extensionElements.addExtensionElement("http://example.com/bpmn", "myExtensionElement");
CamundaExecutionListener listener = extensionElements.addExtensionElement(CamundaExecutionListener.class);

Существует и еще один вспомогательный метод для Fluent Builder API, который позволяет вам добавлять предварительно добавленные элементы расширения.

CamundaExecutionListener camundaExecutionListener = modelInstance.newInstance(CamundaExecutionListener.class);
camundaExecutionListener.setCamundaClass("io.openbpm.bpm.MyJavaDelegte");
startEvent.builder()
  .addExtensionElement(camundaExecutionListener);

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

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

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