как получить taskId на основе processInstanceId в camunda - PullRequest
0 голосов
/ 06 августа 2020

Я хочу убедиться, что мое восприятие рабочего процесса camunda (WF) верное. например, у меня есть транзакция foo, тогда транзакция foo попадет в процесс запуска, выполнив метод «ProcessInstance startProcessInstanceByKey (String processDefinitionKey)», а взамен транзакция foo может получить processInstanceId из WF, тогда транзакция foo будет сохранена в транзакции DB. Для следующего утверждения транзакция foo должна нажать "void complete (String taskId, Map переменные); "чтобы выполнить задачу, как я могу получить taskId на основе processInstanceId?. Один processInstanceId имеет только один taskId?

Ответы [ 2 ]

1 голос
/ 19 августа 2020

Экземпляр процесса потенциально может создать несколько экземпляров задачи после его запуска в рамках своего выполнения. Вы можете запросить ожидающие (пользовательские) экземпляры задачи для данного идентификатора экземпляра процесса с помощью TaskQuery (примените фильтры по мере необходимости).

REST: https://docs.camunda.org/manual/7.13/reference/rest/task/get-query/

JAVA: https://docs.camunda.org/javadoc/camunda-bpm-platform/7.14/org/camunda/bpm/engine/TaskService.html#createTaskQuery -

RuntimeService runtimeService = engine.getRuntimeService();
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("MyProcess");

TaskService taskService = engine.getTaskService();
List<Task> taskList = taskService.createTaskQuery().processInstanceId(processInstance.getId()).list();

Task task = taskList.get(0);
Map<String, Object> inputData = new HashMap<String, Object>();
inputData.put("myInput", true);
taskService().complete(task.getId(), inputData);
0 голосов
/ 11 августа 2020

Что-то вроде этого processEngine .getManagementService () .createJobQuery () .executionId (executionId) .singleResult () .getId ()

...