|
@@ -5,16 +5,10 @@ import com.zkqy.common.constant.BpmNodeTypeConstants;
|
|
|
import com.zkqy.common.utils.DateUtils;
|
|
|
import com.zkqy.common.utils.bpm.XmlDataParserUtils;
|
|
|
import com.zkqy.common.utils.uuid.IdUtils;
|
|
|
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNode;
|
|
|
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeForm;
|
|
|
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteNodeMiddle;
|
|
|
-import com.zkqy.execution.produce.dispersed.entity.BpmExecuteProcess;
|
|
|
+import com.zkqy.execution.produce.dispersed.entity.*;
|
|
|
import com.zkqy.execution.produce.dispersed.entity.runbpm.SysBpmNodeScriptVO;
|
|
|
import com.zkqy.execution.produce.dispersed.entity.runbpm.TriggerExceptionVO;
|
|
|
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeFormMapper;
|
|
|
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeMapper;
|
|
|
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteNodeMiddleMapper;
|
|
|
-import com.zkqy.execution.produce.dispersed.mapper.BpmExecuteProcessMapper;
|
|
|
+import com.zkqy.execution.produce.dispersed.mapper.*;
|
|
|
import com.zkqy.execution.produce.dispersed.service.IBpmExecuteNodeService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -37,6 +31,9 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
|
|
|
@Autowired
|
|
|
private BpmExecuteNodeMapper bpmExecuteNodeMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BpmExecuteNodeLogMapper bpmExecuteNodeLogMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private BpmExecuteProcessMapper bpmExecuteProcessMapper;
|
|
|
|
|
@@ -125,30 +122,50 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
|
|
|
String newUserTaskTagId = "Activity_" + IdUtils.fastUUID();
|
|
|
//select bpm_execute_process
|
|
|
BpmExecuteProcess bpmExecuteProcess = bpmExecuteProcessMapper.selectBpmExecuteProcessByTaskKey(vo.getTaskProcessKey());
|
|
|
- //sys_bpm_node_script info
|
|
|
+
|
|
|
+ //得到当前节点信息
|
|
|
+ BpmExecuteNode bpmExecuteNode = bpmExecuteNodeMapper.queryBpmExecuteNodeBytaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
|
|
|
+
|
|
|
+
|
|
|
+ //sys_bpm_node_script 得到异常脚本info
|
|
|
SysBpmNodeScriptVO sysBpmNodeScriptVO = vo.getSysBpmNodeScriptVO();
|
|
|
|
|
|
- //select bpm_execute_node_form
|
|
|
+ //select bpm_execute_node_form 查询节点表单(插入的异常节点所需的表单)
|
|
|
BpmExecuteNodeForm bpmExecuteNodeForm = new BpmExecuteNodeForm();
|
|
|
bpmExecuteNodeForm.setTaskProcessKey(vo.getTaskProcessKey());
|
|
|
- bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
|
|
|
+ String afterAnalysis;
|
|
|
+ //修改当前执行流程xml内容,在当前节点前增加异常节点,调整xml线指向
|
|
|
+ if (vo.getTaskNodeType().equals("exceptionTask")) { // 异常节点抛出异常节点,在当前异常节点后插入新的异常节点
|
|
|
+ afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNextNodeKey());
|
|
|
+
|
|
|
+ bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNextNodeKey()); // 追溯到正常节点抛出异常的节点key
|
|
|
+ // ?是否需要记录节点日志——》如不做记录管道展示不会展示没有执行过的异常!
|
|
|
+ if (true) {
|
|
|
+ // 新增节点日志记录
|
|
|
+ bpmExecuteNodeLogMapper.insertBpmExecuteNodeLog(new BpmExecuteNodeLog(bpmExecuteNode));
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNodeKey());
|
|
|
+ bpmExecuteNodeForm.setTaskNodeKey(vo.getTaskNodeKey());
|
|
|
+ }
|
|
|
bpmExecuteNodeForm.setTaskScriptKey(vo.getSysBpmNodeScriptVO().getScriptKey());
|
|
|
BpmExecuteNodeForm bpmExecuteNodeForm1 = bpmExecuteNodeFormMapper.selectBpmExecuteNodeFormInfo(bpmExecuteNodeForm);
|
|
|
- //insert bpm_execute_node_form
|
|
|
+ //insert bpm_execute_node_form 节点运行表单
|
|
|
bpmExecuteNodeForm1.setTaskNodeKey(newUserTaskTagId);
|
|
|
bpmExecuteNodeFormMapper.insertBpmExecuteNodeForm(bpmExecuteNodeForm1);
|
|
|
-
|
|
|
- //修改当前执行流程xml内容,当前节点下一节点信息
|
|
|
- String afterAnalysis = XmlDataParserUtils.addUserTaskTag(bpmExecuteProcess.getTaskProcessXmlContent(), newUserTaskTagId, sysBpmNodeScriptVO.getScriptName(), vo.getTaskNodeKey());
|
|
|
bpmExecuteProcess.setTaskProcessXmlContent(afterAnalysis);
|
|
|
- bpmExecuteProcess.setTaskNodeKey(newUserTaskTagId);
|
|
|
- bpmExecuteProcess.setTaskNodeNextKey(bpmExecuteProcess.getTaskNodeKey());
|
|
|
+
|
|
|
+// bpmExecuteProcess.setTaskNodeKey(newUserTaskTagId);
|
|
|
+// bpmExecuteProcess.setTaskNodeNextKey(bpmExecuteProcess.getTaskNodeKey());
|
|
|
+ bpmExecuteProcess.setTaskNodeNextKey(newUserTaskTagId);
|
|
|
+
|
|
|
bpmExecuteProcessMapper.updateBpmExecuteProcess(bpmExecuteProcess);
|
|
|
+
|
|
|
//生成虚拟角色编码
|
|
|
String taskNodeRolePermission = IdUtils.fastSimpleUUID();
|
|
|
|
|
|
- //得到当前节点信息,添加异常节点信息
|
|
|
- BpmExecuteNode bpmExecuteNode = bpmExecuteNodeMapper.queryBpmExecuteNodeBytaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
|
|
|
+ //添加异常节点信息
|
|
|
bpmExecuteNode.setId(null);
|
|
|
bpmExecuteNode.setTaskNodeKey(newUserTaskTagId);
|
|
|
bpmExecuteNode.setTaskNodeName(bpmExecuteNodeForm1.getTaskNodeName());
|
|
@@ -164,7 +181,6 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
|
|
|
bpmExecuteNode.setTaskNodeRolePermission(taskNodeRolePermission);
|
|
|
bpmExecuteNodeMapper.insertBpmExecuteNode(bpmExecuteNode);
|
|
|
|
|
|
-
|
|
|
//得到当前节点用户关联表信息,添加异常节点用户关联表信息
|
|
|
BpmExecuteNodeMiddle bpmExecuteNodeMiddle = bpmExecuteNodeMiddleMapper.queryBpmExecuteNodeMiddleByTaskNodeKey(vo.getTaskProcessKey(), vo.getTaskNodeKey());
|
|
|
List<String> list = Arrays.asList(bpmExecuteNodeMiddle.getTaskArtificialScriptKey().split(","));
|
|
@@ -172,7 +188,7 @@ public class BpmExecuteNodeServiceImpl implements IBpmExecuteNodeService {
|
|
|
bpmExecuteNodeMiddle.setTaskNodeKey(newUserTaskTagId);
|
|
|
bpmExecuteNodeMiddle.setTaskAutomaticScriptTriggerType(sysBpmNodeScriptVO.getScriptKey());
|
|
|
bpmExecuteNodeMiddle.setTaskVirtuallyRole(taskNodeRolePermission);
|
|
|
- bpmExecuteNodeMiddle.setTaskArtificialScriptKey(String.join(",",list.stream().filter(f -> !f.equals(vo.getSysBpmNodeScriptVO().getScriptKey())).collect(Collectors.toList())));
|
|
|
+ bpmExecuteNodeMiddle.setTaskArtificialScriptKey(String.join(",", list.stream().filter(f -> !f.equals(vo.getSysBpmNodeScriptVO().getScriptKey())).collect(Collectors.toList())));
|
|
|
return bpmExecuteNodeMiddleMapper.insertBpmExecuteNodeMiddle(bpmExecuteNodeMiddle);
|
|
|
}
|
|
|
}
|