#java #activiti
#java #activiti
Вопрос:
У меня в Activti есть ServiceTask с классом Java, который запускает класс
<serviceTask id="Initialisation" name="Initialisation" activiti:class="acoss.activiti.DelegateInitialisation"></serviceTask>
Сам класс реализует JavaDelegate следующим образом
public class DelegateInitialisation implements JavaDelegate
{
@Override
public void execute(DelegateExecution de) throws Exception
{
String processId = de.getProcessInstanceId();
TaskService tkService = de.getEngineServices().getTaskService();
List<Task> ltasks = tkService.createTaskQuery().processInstanceId(processId).list();
for (Task task : ltasks)
{
System.out.println(task.getId());
}
}
}
Проблема: он выдает мне пустой список задач. Кажется, что идентификатор процесса, который я получаю, не является «реальным» processInstanceId. Поэтому я не могу получить TaskService, runtimeService и т.д.
Лучше всего было бы получить текущий экземпляр processEngine, но я не вижу, как его получить. Большое вам спасибо, если вы видите решение.
Ответ №1:
Используя ваш запрос, вы получаете экземпляры задач, которые ожидают взаимодействия с пользователем, или задачи, которые уже завершены, а не все задачи, которые вы определили в процессе. Если у вас нет какой-либо задачи, которую ожидает процесс, или процесс прошел, вы получите пустой список.
Вам необходимо получить доступ к определению процесса и выполнить итерацию действий, чтобы получить то, что вы хотите.
Ответ №2:
Возможно, попробуйте использовать один из методов ProcessEngines, чтобы найти processEngine
экземпляр getProcessEngines()
.
Термины, используемые Activiti, могут вводить в заблуждение. Интерфейс задачи «представляет одну задачу для пользователя-человека». Возможно, вам действительно нужен список действий. Вы можете получить их, выполнив что-то вроде:
RuntimeService runtimeService = de.getEngineServices().getRuntimeService();
String procId = de.getProcessInstanceId();
List<String> activityIds = runtimeService.getActiveActivityIds(procId);
System.out.println("Active activity IDs = " activityIds);