Activiti 6部署的流程在使用过程中偶尔出现节点连接线消失问题
问题描述:
项目使用Activiti 6.0,部署的流程在使用过程中偶尔莫名出现流程节点连接线消失问题,(流程图查看时 个别节点之间连接线消失,流程处理时,节点过不去直接到结束节点了)
如图显示:
答
原因是 : 在节点跳转时出现了异常,但是没有进行处理,导致原本的线路没有恢复回来。
//记录原活动方向
List oriSequenceFlows = new ArrayList();
oriSequenceFlows.addAll(flowNode.getOutgoingFlows());
//清理活动方向
flowNode.getOutgoingFlows().clear();
//建立新方向
List newSequenceFlowList = new ArrayList();
SequenceFlow newSequenceFlow = new SequenceFlow();
newSequenceFlow.setId("newSequenceFlowId");
newSequenceFlow.setSourceFlowElement(flowNode);
newSequenceFlow.setTargetFlowElement(targetFlowNode);
newSequenceFlowList.add(newSequenceFlow);
flowNode.setOutgoingFlows(newSequenceFlowList);
try{
//完成任务
taskService.complete(task.getId(),map);
}catch (Exception e){
LOG.info("jumpToTargetNode错误信息 : " + e.getMessage());
return R.error("该节点已经处理过了, 错误信息为 : " + e.getMessage());
}finally {
//恢复原方向(之前没有捕获异常,所以没有恢复线路。 重启后台后线路又出现了)
flowNode.setOutgoingFlows(oriSequenceFlows);
}