Activiti BPMN: как найти будущие задачи из текущей задачи - PullRequest
0 голосов
/ 21 ноября 2019

Я работаю над интеграцией Activiti BPMN с моим Java WebApp. Я успешно определил поток и выполнил его в соответствии с моим требованием, хотя я застрял в проблеме, которая требует, чтобы я нашел все возможные будущие задачи, которые могут возникнуть из текущей выполняемой задачи.

Предположим, в моемXML, у меня есть рабочий процесс с четырьмя задачами, такими как Задача A, а затем эксклюзивный шлюз и еще три задачи, идущие от него. Моя текущая выполняемая задача - задача A, и теперь Я хотел бы знать возможности будущих задач (которые являются этими тремя задачами после шлюза). Возможно ли это так или иначе?

Я застрял здесь и не смог найти никакого решения для этого. Буду признателен, если кто-нибудь сможет мне помочь с этим.

1 Ответ

0 голосов
/ 21 ноября 2019

См. Руководство пользователя Activiti . Задания, связанные с заданиями для процесса, создаются в определенные моменты, и все они не создаются одновременно. Фактическая точка создания работы будет отличаться. Поэтому запросы к таблице ACT_RU_JOB могут быть неэффективными. Один из способов получить задачи - обработать BPMN, привязанный к определению процесса. Определение BPMN можно получить из API Activiti или REST API ( ресурсы в развертывании ). Как только XML BPMN получен, нужно найти элемент задачи (пользовательская задача, задача обслуживания и т. Д.) И следовать потокам последовательности, чтобы определить, какие задачи идут в каком порядке. В качестве примера, обратитесь к приведенной ниже выдержке из BPMN:

<serviceTask id="servicetask1" 
             name="Process Init" 
             activiti:async="true" 
             activiti:class="ProcessInitDelegate"></serviceTask>

<serviceTask id="servicetask2" 
             name="Download Installed SW List" 
             activiti:async="true"
             activiti:class="EWSAttachmentDownloaderDelegate"></serviceTask>

 <sequenceFlow id="flow2" 
               sourceRef="servicetask1" 
               targetRef="servicetask2"></sequenceFlow>

. В вышеприведенном примере довольно просто найти поток (ы) последовательности, которые выходят из 'serviceTask1', и проследуйте до 'serviceTask2.

...