|
@@ -22,6 +22,7 @@ import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author hanzihang
|
|
@@ -50,7 +51,8 @@ public class VerifyExecutionProcess {
|
|
|
private Sending sending;
|
|
|
|
|
|
/*
|
|
|
- 判断是否有开始结束节点,有,循环判断每一个节点是否包含自动执行脚本,并且脚本是否存在,
|
|
|
+ 判断开始节点结束节点是否存在、脚本是否存在
|
|
|
+ 判断是否有其他节点,有,循环判断每一个节点是否包含自动执行脚本,并且脚本是否存在,
|
|
|
节点是否绑定角色权限,真实角色下是否存在可处理用户,虚拟角色下用户是否都真实存在
|
|
|
node_form_type类型为拖拽表单类型,查看该表单信息是否存在;为组合表单类型查看该表格组信息是否存在;
|
|
|
为自定义表单类型时,判断节点脚本关联表查看script_node_name该字段是否存在及该字段是否有“-”,"-"前是否有内容。
|
|
@@ -64,38 +66,99 @@ public class VerifyExecutionProcess {
|
|
|
int startNode = 0;
|
|
|
int endNode = 0;
|
|
|
for (BpmProcessConfiguration b : bpmProcessConfigurationList) {
|
|
|
+
|
|
|
+ if (b.getNodeType().equals("startEvent")) {
|
|
|
+ startNode++;
|
|
|
+ //校验正常节点存不存在
|
|
|
+ BpmNodeScriptRelevance bpmNodeScriptRelevance = new BpmNodeScriptRelevance();
|
|
|
+ bpmNodeScriptRelevance.setNodeKey(b.getNodeKey());
|
|
|
+ bpmNodeScriptRelevance.setScriptTriggerType(1L);
|
|
|
+ BpmNodeScriptRelevance bpmNodeScriptRelevance1 = bpmNodeScriptRelevanceService.selectBpmNodeScriptRelevanceInfo(bpmNodeScriptRelevance);
|
|
|
+ if(bpmNodeScriptRelevance1 != null){
|
|
|
+ ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance1.getScriptKey());
|
|
|
+ if(responseEntity.getStatusCodeValue() != 200L){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ AjaxResult ajaxResult = responseEntity.getBody();
|
|
|
+ if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!ajaxResult.containsKey("data")){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
|
|
|
+ if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+ }else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (b.getNodeType().equals("endEvent")) {
|
|
|
+ endNode++;
|
|
|
+ //校验正常节点存不存在
|
|
|
+ BpmNodeScriptRelevance bpmNodeScriptRelevance = new BpmNodeScriptRelevance();
|
|
|
+ bpmNodeScriptRelevance.setNodeKey(b.getNodeKey());
|
|
|
+ bpmNodeScriptRelevance.setScriptTriggerType(1L);
|
|
|
+ BpmNodeScriptRelevance bpmNodeScriptRelevance1 = bpmNodeScriptRelevanceService.selectBpmNodeScriptRelevanceInfo(bpmNodeScriptRelevance);
|
|
|
+ if(bpmNodeScriptRelevance1 != null){
|
|
|
+ ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance1.getScriptKey());
|
|
|
+ if(responseEntity.getStatusCodeValue() != 200L){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ AjaxResult ajaxResult = responseEntity.getBody();
|
|
|
+ if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!ajaxResult.containsKey("data")){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
|
|
|
+ if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ }else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
//判断节点前后是否执行自动脚本,并且脚本是否存在
|
|
|
if (b.getNodeBefore().equals("true") || b.getNodeAfter().equals("true")) {
|
|
|
// 查询自动执行脚本
|
|
|
BpmNodeScriptRelevance bpmNodeScriptRelevance = bpmNodeScriptRelevanceService.selectAutoScriptByNodeKey(b.getNodeKey());
|
|
|
if (bpmNodeScriptRelevance != null) {
|
|
|
// 获取执行脚本名称,判断脚本是否存在
|
|
|
- Map<String,Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("scriptKey",bpmNodeScriptRelevance.getScriptKey());
|
|
|
- ResponseEntity responseEntity = sending.sendGetNodeScript(paramMap);
|
|
|
+ ResponseEntity<AjaxResult> responseEntity = sending.sendGetNodeScript(bpmNodeScriptRelevance.getScriptKey());
|
|
|
if(responseEntity.getStatusCodeValue() != 200L){
|
|
|
return false;
|
|
|
}
|
|
|
- Map<String,Object> map = JSON.parseObject(responseEntity.getBody().toString());
|
|
|
- if(Long.valueOf(map.get("code").toString()) != 200L){
|
|
|
+ AjaxResult ajaxResult = responseEntity.getBody();
|
|
|
+ if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!ajaxResult.containsKey("data")){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ Map<String,Object> dataMap = (Map<String,Object>)ajaxResult.get("data");
|
|
|
+ if(!runImplementationClass.isVerificationMethod(dataMap.get("scriptKey").toString())){
|
|
|
return false;
|
|
|
}
|
|
|
- Map<String,Object> dataMap = (Map<String,Object>)map.get("data");
|
|
|
- runImplementationClass.isVerificationMethod(dataMap.get("scriptFunctionName").toString());
|
|
|
}else {
|
|
|
return false;
|
|
|
}
|
|
|
}else {
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
//判断节点是否绑定角色权限,真实角色下是否存在可处理用户,虚拟角色下用户是否都真实存在
|
|
|
if (StringUtils.isNotEmpty(b.getNodeRolePermission())) {
|
|
|
BpmNodeHandleUser bpmNodeHandleUser = bpmNodeHandleUserService.selectBpmNodeHandleUserByVirtuallyRole(b.getNodeRolePermission());
|
|
|
// 真实角色不为空查询真实角色下是否存在可处理用户
|
|
|
if (StringUtils.isNotEmpty(bpmNodeHandleUser.getRealRole())) {
|
|
|
- Map<String,Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("userIds",Arrays.asList(bpmNodeHandleUser.getRealRole().split(",")));
|
|
|
- ResponseEntity responseEntity = sending.sendQueryUserExistsByRoleKey(paramMap);
|
|
|
+ ResponseEntity responseEntity = sending.sendQueryUserExistsByRoleKey(bpmNodeHandleUser.getRealRole());
|
|
|
if (responseEntity.getStatusCodeValue() != 200){
|
|
|
return false;
|
|
|
}
|
|
@@ -109,17 +172,15 @@ public class VerifyExecutionProcess {
|
|
|
}
|
|
|
// 虚拟角色下用户是否都真实存在
|
|
|
if(StringUtils.isNotEmpty(bpmNodeHandleUser.getExecuteUserNo())){
|
|
|
- Map<String,Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("userIds",Arrays.asList(bpmNodeHandleUser.getExecuteUserNo().split(",")));
|
|
|
- ResponseEntity responseEntity = sending.sendQueryUserExistsByUserIds(paramMap);
|
|
|
+ ResponseEntity<AjaxResult> responseEntity = sending.sendQueryUserExistsByUserIds(bpmNodeHandleUser.getExecuteUserNo());
|
|
|
if (responseEntity.getStatusCodeValue() != 200){
|
|
|
return false;
|
|
|
}
|
|
|
- Map<String,Object> map = JSON.parseObject(responseEntity.getBody().toString());
|
|
|
- if(Long.valueOf(map.get("code").toString()) != 200L){
|
|
|
+ AjaxResult ajaxResult= responseEntity.getBody();
|
|
|
+ if(Long.valueOf(ajaxResult.get("code").toString()) != 200L){
|
|
|
return false;
|
|
|
}
|
|
|
- if (Long.valueOf(map.get("data").toString()) <= 0L){
|
|
|
+ if (Long.valueOf(ajaxResult.get("data").toString()) <= 0L){
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
@@ -166,8 +227,6 @@ public class VerifyExecutionProcess {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
- if (b.getNodeType().equals("startEvent")) startNode++;
|
|
|
- if (b.getNodeType().equals("endEvent")) endNode++;
|
|
|
}
|
|
|
if(startNode <= 0 || endNode <= 0){
|
|
|
return false;
|