有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在完成方法后获取taskid

我的工作流程如下:StarteEvent->;任务1(受让人:Tom)——>;选择顺序流“同意”->;任务2(受让人:Jerry)>;选择顺序流“不同意”->;任务1

当流到达task1时,我想再次将Assignment设置为“Tom”

现在我有一个想法:

当流到达task1时,我使用complete方法,在complete方法之后,在task2中设置一个局部变量“pre_task_id(task1的taskid)”,以便我可以使用task1的taskid在“act_hi_taskinst”表中搜索受让人(Tom),但是这个方法taskService.setVariableLocal(taskId, variableName, value)需要task2的taskid,在complete方法之后我如何获得task2的taskid

@Test
public void testCompleteTask() {
    Task task = taskService.createTaskQuery().taskAssignee("Tom").singleResult();
    if (task == null) {
        System.out.println("no task!!!");
        return;
    }
    String preTaskId = task.getId();
    HashMap <String,Object> variables = new HashMap<>();
    variables.put("userId", "Jerry");
    variables.put("oper", "saolu");
    taskService.complete(task.getId(),variables);
    //don't konw how to get the taskId 
    //taskService.setVariableLocal(taskId, "pre_task_id", preTaskId);
}

我正在使用activiti6

或者请告诉我是否有更好的解决方案

workflow.png


共 (2) 个答案

  1. # 1 楼答案

    在过去,我一直为此使用流程变量,从未尝试过上面建议的“推送”操作,但如果多个并行流程同时推送/拉送堆栈,我会担心返回正确的值。过程变量很简单,我知道它是有效的

  2. # 2 楼答案

    如果我理解正确的话。您需要跟踪最近执行的任务。 在这种情况下,可以使用堆栈。执行任何任务时,只需使用任务id调用推送。 当您调用pop时,它将为您提供最近执行的任务的任务id。 只是要注意如何清除堆栈。 我建议在调用push之前总是调用pop