假设有一个任务节点task1,有两条出线a和b,它们的条件表达式分别为${param1 == 'A'}和${param2 == 'B'},出线b连接任务节点task2,task2出线p1连接排他网关,p1条件表单式为${param1 == 'C1'},排他网关存在两条出线d1,d2,出线d1,条件参数为${param1 == 'D1'}进入任务节点task3,出线d2,条件参数为${param1 == 'D2'}进入任务节点task4,此时运行时任务由task1执行,如何使用taskService从task1到达进ask4
时间: 2024-02-29 08:55:10 浏览: 23
要从task1到达task4,需要按照以下步骤执行:
1. 使用taskService完成task1,设置参数param1为'A'和param2为'B'。
2. 根据task1的出线条件表达式,判断应该选择哪条出线。如果param1等于'A',则选择出线a;如果param1不等于'A',则不选择出线a,而是选择出线b。
3. 如果选择了出线a,则进入任务节点task2,执行task2,并根据param1的值判断应该选择哪条出线。如果param1等于'C1',则选择出线p1;如果param1不等于'C1',则不选择出线p1,而是结束流程。
4. 如果选择了出线p1,则进入排他网关,根据param1的值判断应该选择哪条出线。如果param1等于'D1',则选择出线d1;如果param1等于'D2',则选择出线d2。
5. 如果选择了出线d1,则进入任务节点task3,执行task3。
6. 如果选择了出线d2,则进入任务节点task4,执行task4。
这样就完成了从task1到达task4的流程执行。需要注意的是,在执行每一个任务节点时,都需要设置好对应的参数值,以便后续的条件判断。
相关问题
如果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么
根据题目描述,出线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的所有条件。
如果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么
根据题目描述,条件表达式分别为${param1 == 'A'}和${param2 == 'B'},其中仅有param1被设置为"A",param2并未被设置,因此只有出线a会被激活,进入任务节点task2。由于没有进入任务节点task3的出线被激活,因此无法从任务节点task1到达任务节点task3。因此执行taskService.complete(taskId,variables)也无法到达任务节点task3。