今天我花了一些时间来了解如何使用Activiti的skipExpression功能。我希望我找到了这样一个问题,这就是为什么我会把它放在这里并自己回答。
我尝试在UserTask中使用activiti:skipExpression,如下所示:
<userTask id="usertask1" name="Order Book" activiti:assignee="myTestUser1"
activiti:skipExpression="${skip == 1}">
</userTask>
根据https://activiti.atlassian.net/browse/ACT-2176,这应该是自5.18以来可能的。但我无法使其发挥作用。
我希望跳过任务并创建以下任务,但是流程的行为就好像跳过表达式不存在(任务1已创建,任务2未创建)。 / p>
答案 0 :(得分:3)
从搜索Activiti的源代码中获取。在我的测试中,我发现我必须为每个想要使用跳过功能的流程实例添加一个额外的变量:
Map<String, Object> params = new HashMap<String, Object>();
params.put("_ACTIVITI_SKIP_EXPRESSION_ENABLED", true);
params.put("skip", 1);
此外,测试将表达式写入进程XML的userTask中,如下所示:
activiti:skipExpression="${execution.getVariable('skip') == 1}"
那个参数在版本5.19的the Activiti User Guide中没有记录(我使用的是6.0.0.beta1),并且在故障单中也没有关于它的说法,我在问题中提到过。