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