提问者:小点点

如何在Activiti中获取正在运行的进程实例的先前任务局部变量


我正在开发一个以活动作为工作流引擎的Spring引导应用程序。活动-spring-boot-starter依赖版本是7.1.0。M6和spring-boot-starter-父版本是2.6.7。

我已经定义了一个BPMN 2.0图,我现在正在启动流程实例。完成一个任务后,我想在处理下一个任务时访问它的任务局部变量。我无法计算出它的api。

我尝试使用历史服务,如下所示,但没有成功。每次使用不同的apis(完成()未完成()等),我都会将结果列表设置为空

HistoricTaskInstance acceptMobile = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId(processInstanceId)
                .taskName("my-task1")
                .singleResult();

有人能指导我什么是正确的api来获取以前完成的任务的局部变量吗?

谢谢。


共1个答案

匿名用户

在任务之间传输变量的最佳方法是将执行变量与委托执行一起使用

执行变量是指向进程活动位置的特定指针,有关详细信息,请参阅apiVariables

假设您有具有不同侦听器的Task-ATask-B

以下是如何使用执行变量从Task-ATask-B

@Component("TaskListenerA")
public class TaskListenerA implements TaskListener {

    @Override
    public void notify(DelegateTask task) {
         DelegateExecution execution = task.getExecution();
         if("complete".equals(task.getEventName()) {
             String myTaskVar = (String) task.getVariable("taskAvariable")
             execution.setVariable("exeVariable", myTaskVar);
         }
    }
}
@Component("TaskListenerB")
public class TaskListenerB implements TaskListener {

    @Override
    public void notify(DelegateTask task) {
         DelegateExecution execution = task.getExecution();
         String myVariable = execution.get("exeVariable");
    }
}