How to retrieve process extension properties?

@dirkw65 based on activity type, you can get extension properties from DelegateTask/Delegate Execution or by parsing the whole process definition xml itself.

Example to get extension properties from DelegateTask/DelegateExecution:

UserTask:

UserTaskImpl userTaskImpl = bpmnModelElementInstance.getModelInstance().getModelElementById(modelElementId);
ExtensionElements userTaskExtensionElements = userTaskImpl.getExtensionElements();
Collection<CamundaProperty> userTaskProperties = userTaskExtensionElements.getElementsQuery()
              .filterByType(CamundaProperties.class).singleResult().getCamundaProperties();

StartEvent:

StartEventImpl startEventImpl = bpmnModelElementInstance.getModelInstance().getModelElementById(modelElementId);
ExtensionElements startEventExtensionElements = startEventImpl.getExtensionElements();
Collection<CamundaProperty> startEventProperties = startEventExtensionElements.getElementsQuery()
          .filterByType(CamundaProperties.class).singleResult().getCamundaProperties();

Parsing whole bpmn file:

public Collection<CamundaProperty> parseBpmn(String xml) {
  try (InputStream bpmn20XMLStream = new ByteArrayInputStream(bpmn20XML.getBytes(StandardCharsets.UTF_8))) {
    BpmnModelInstance bpmnModelInstance = Bpmn.readModelFromStream(xml);
    Collection<UserTask> userTasks = bpmnModelInstance.getModelElementsByType(UserTask.class);
    userTasks.stream().forEach(userTask -> {
    if (userTask instanceof UserTask) {
      return userTask.getExtensionElements().getElementsQuery()
        .filterByType(CamundaProperties.class).singleResult().getCamundaProperties();
  });
 }}
2 Likes