今天,我花了一些时间来了解如何使用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版本的the Activiti User Guide中没有记录该参数(我使用的是6.0.0.beta1),并且在问题单中也没有提到该参数,正如我在问题中提到的那样.