Элементы расширения
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Кастомизированные элементы расширения являются стандартным способом расширить CMMN-модель. Элементы расширения от Camunda полностью реализованы в API CMMN-моделей, но доселе неизвестные элементы расширения могут быть оценены и добавлены без особого труда.
Каждый CmmnElement от CMMN может иметь дочерний элемент типа extensionElements. Этот элемент может содержать все разновидности элементов расширения. Чтобы обратиться к элементам расширения, вам необходимо вызвать метод getExtensionElements() и, если такого дочернего элемента не существует, вам придется сначала создать его.
HumanTask humanTask = modelInstance.newInstance(HumanTask.class);
ExtensionElements extensionElements = humanTask.getExtensionElements();
if (extensionElements == null) {
extensionElements = modelInstance.newInstance(ExtensionElements.class);
humanTask.setExtensionElements(extensionElements);
}
Collection<ModelElementInstance> elements = extensionElements.getElements();
После этого вы можете добавлять элементы расширения в коллекцию или удалять их оттуда.
CamundaCaseExecutionListener listener = modelInstance.newInstance(CamundaCaseExecutionListener.class);
extensionElements.getElements().add(listener);
extensionElements.getElements().remove(listener);
Вы также можете получить доступ к интерфейсу, включающему запросы, чтобы отфильтровать элементы расширения.
extensionElements.getElementsQuery().count();
extensionElements.getElementsQuery().list();
extensionElements.getElementsQuery().singleResult();
extensionElements.getElementsQuery().filterByType(CamundaCaseExecutionListener.class).singleResult();
В дополнение к сказанному, существуют более простые и короткие способы добавления новых элементов расширения. Вы можете использовать namespaceUri и elementName для добавления ваших собственных элементов расширения. Или вы можете воспользоваться class известного типа элемента, например, элементов расширения от Camunda. Элемент расширения добавляется к элементу CMMN и возвращается, чтобы вы могли установить атрибуты или добавить дочерние элементы.
ModelElementInstance element = extensionElements.addExtensionElement("http://example.com/cmmn", "myExtensionElement");
CamundaCaseExecutionListener listener = extensionElements.addExtensionElement(CamundaCaseExecutionListener.class);
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org