原始需求
如图示例:节点1后面是并行网关,有两个节点,节点4需要驳回至并行网关,这样直接画线是不行的,节点走完后任务就没有了,不会走到节点2和节点3。看到别的文章说是并行网关只能有一个一条线进入。
改变思路,可以在并行网关前边增加一个“”虚拟“”节点,后台判断下一个节点是虚拟节点,就自动完成任务,这样就可以到达并行节点了。
//完成当前任务
actTaskService.complete(qmsZq8dProblem.getAct().getTaskId(), qmsZq8dProblem.getAct().getProcInsId(), comment, map);
//任务完成后,根据流程实例id查询最新任务
TaskEntity currentTask = actTaskService.getCurrentTask(qmsZq8dProblem.getAct().getProcInsId());
if(null!=currentTask)
{
//如果最新任务节点id是虚拟节点idi,则自动完成任务
if(currentTask.getTaskDefinitionKey().equals("虚拟节点id"))
{
actTaskService.complete(currentTask.getId(), qmsZq8dProblem.getAct().getProcInsId(), comment, map);
}
}
//根据流程实例获取最新task
public TaskEntity getCurrentTask(String procInsId)
{
return (TaskEntity)taskService.createTaskQuery().processInstanceId(procInsId).active().singleResult();
}