Получение диаграммы экземпляра процесса в Camunda

Я пытался получить диаграмму экземпляра процесса из движка Camunda. Все методы JAVA и REST связаны с получением развернутой схемы процесса. Итак, мне ближе всего этот метод.

InputStream getProcessDiagram(String processDefinitionId) 

Но мне это бесполезно, так как я хочу получить текущее состояние конкретного экземпляра процесса.

Диаграмму процесса, представляющую текущее состояние, можно просмотреть в списке задач Camunda, но я понятия не имею, как ее получить.

Спасибо!


person Varda    schedule 01.07.2015    source источник


Ответы (1)


Диаграмма с ее состоянием не просто взята из REST API как есть. Вместо этого собираются данные из двух источников:

  • GET /process-definition/{id}/xml предоставляет диаграмму BPMN (которую вы уже нашли) [1]
  • GET /process-instance/{id}/activity-instances предоставляет состояние экземпляра процесса в древовидной структуре [2]

В списке задач есть некоторая логика на стороне клиента, которая отображает XML BPMN с помощью bpmn.io и размещает маркеры поверх него на основе дерево экземпляров активности.

person thorben    schedule 01.07.2015
comment
Спасибо, разобрался с рендерингом через библиотеку bpmn.js! Но второй метод возвращает дерево экземпляра действия, но как получить из него текущий идентификатор действия? как «Service task3» в моем случае. В результате я вижу его как листовой узел, но как его извлечь, чтобы отобразить диаграмму? - person Varda; 07.07.2015
comment
Листовые узлы дерева экземпляров действий — это активные в данный момент действия. Таким образом, вам придется обработать дерево, чтобы определить все листья перед рендерингом. Имейте в виду, что существует различие между экземплярами перехода и экземплярами активности. Оба могут представлять беговые действия; экземпляры перехода всегда являются листьями. - person thorben; 07.07.2015
comment
@thorben Могу ли я получить список всех завершенных действий для экземпляра процесса вместе с текущим активным экземпляром действия? - person Vinod Louis; 17.03.2017
comment
Я получил ответ, обратившись к службам истории с помощью запроса createHistoricActivityInstanceQuery с помощью запроса processInstance. - person Vinod Louis; 17.03.2017