如果task1有两条出线a和b,它们的条件表达式分别为${param1 == 'A'}和${param2 == 'B'}, 出线b连接排他网关,排他网关存在两条出线d1,d2,出线d1,条件参数为${param3 == 'D1'}进入任务节点task3, 出线d2,条件参数为${param4 == 'D2'}进入任务节点task4,此时运行时任务Id为taskId,由task1运行 现在设置 Map<String, Object> variables = new HashMap<>(); variables.put("param1", "A"); variables.put("param3","D1"); 请问执行taskService.complete(taskId,variables)能到从任务节点task1到达任务节点task3么
时间: 2024-02-29 10:55:02 浏览: 51
多个线程到达后才能执行某个任务,并且只能执行一次
根据题目描述,出线b连接着排他网关,而且出线d1和d2的条件表达式互斥,只有一个可以被激活。变量设置为`variables.put("param1", "A"); variables.put("param3","D1");`,这样只满足了出线a和d1的条件表达式,而出线b的条件表达式${param2 == 'B'}并未满足,因此无法激活出线b的任何一条分支,也就无法进入任务节点task3或task4。
因此,执行taskService.complete(taskId,variables)无法到达任务节点task3。如果要到达任务节点task3,可以将变量设置为`variables.put("param1", "A"); variables.put("param2","B"); variables.put("param3","D1");`,这样既满足了出线a和b的条件表达式,又满足了出线d1的条件表达式,满足进入任务节点task3的所有条件。
阅读全文