今天我花了一些时间了解如何使用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)。
通过搜索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版的Activiti用户指南中没有记录(我使用的是6.0.0.beta1),我在问题中提到的票证中也没有关于它的词。