|
|
@@ -1,13 +1,18 @@
|
|
|
package com.fs.company.service.impl;
|
|
|
|
|
|
+import com.fs.company.domain.CompanyAiWorkflowExec;
|
|
|
+import com.fs.company.domain.CompanyWorkflowEdge;
|
|
|
+import com.fs.company.domain.CompanyWorkflowNode;
|
|
|
+import com.fs.company.mapper.CompanyAiWorkflowExecLogMapper;
|
|
|
+import com.fs.company.mapper.CompanyAiWorkflowExecMapper;
|
|
|
+import com.fs.company.mapper.CompanyWorkflowEdgeMapper;
|
|
|
+import com.fs.company.mapper.CompanyWorkflowNodeMapper;
|
|
|
import com.fs.company.param.ExecutionContext;
|
|
|
-import com.fs.company.service.IWorkflowNode;
|
|
|
+import com.fs.company.service.*;
|
|
|
import com.fs.company.vo.ExecutionResult;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* @author MixLiu
|
|
|
@@ -15,7 +20,32 @@ import java.util.Map;
|
|
|
* @description 工作节点基类
|
|
|
*/
|
|
|
@Slf4j
|
|
|
-public abstract class AbstractWorkflowNode implements IWorkflowNode {
|
|
|
+public abstract class AbstractWorkflowNode implements HasCompanyWorkflowNodeMapper, IWorkflowNode, HasCompanyAiWorkflowExecMapper, HasCompanyWorkflowEdgeMapper, HasCompanyAiWorkflowExecLogMapper {
|
|
|
+
|
|
|
+ CompanyAiWorkflowExecMapper workflowExecMapper;
|
|
|
+ CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper;
|
|
|
+ CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper;
|
|
|
+ CompanyWorkflowNodeMapper companyWorkflowNodeMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setCompanyWorkflowNodeMapper(CompanyWorkflowNodeMapper mapper) {
|
|
|
+ this.companyWorkflowNodeMapper = mapper;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void setCompanyAiWorkflowExecMapper(CompanyAiWorkflowExecMapper workflowExecMapper) {
|
|
|
+ this.workflowExecMapper = workflowExecMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setCompanyWorkflowEdgeMapper(CompanyWorkflowEdgeMapper companyWorkflowEdgeMapper) {
|
|
|
+ this.companyWorkflowEdgeMapper = companyWorkflowEdgeMapper;
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void setCompanyAiWorkflowExecLogMapper(CompanyAiWorkflowExecLogMapper companyAiWorkflowExecLogMapper) {
|
|
|
+ this.companyAiWorkflowExecLogMapper = companyAiWorkflowExecLogMapper;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
protected String nodeKey;
|
|
|
protected String nodeName;
|
|
|
protected Map<String, Object> properties; // 节点配置属性
|
|
|
@@ -92,4 +122,30 @@ public abstract class AbstractWorkflowNode implements IWorkflowNode {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据流程配置& 条件判定 获取下一个执行节点
|
|
|
+ * @param workflowInstanceId
|
|
|
+ * @param nodeKey
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getNextNodeKey(String workflowInstanceId, String nodeKey){
|
|
|
+
|
|
|
+ CompanyAiWorkflowExec companyAiWorkflowExec = workflowExecMapper.selectByWorkflowInstanceId(workflowInstanceId);
|
|
|
+
|
|
|
+ List<CompanyWorkflowEdge> companyWorkflowEdges =
|
|
|
+ companyWorkflowEdgeMapper.selectListByWorkflowIdAndNodeKey(companyAiWorkflowExec.getWorkflowId(), nodeKey);
|
|
|
+
|
|
|
+ //todo 判定条件满足
|
|
|
+
|
|
|
+ return companyWorkflowEdges.get(new Random().nextInt(companyWorkflowEdges.size())).getTargetNodeKey();
|
|
|
+ }
|
|
|
+
|
|
|
+ public CompanyWorkflowNode getNodeByKey(String nodeKey){
|
|
|
+ CompanyWorkflowNode companyWorkflowNode = companyWorkflowNodeMapper.selectNodeByNodeKey(nodeKey);
|
|
|
+ if(null == companyWorkflowNode){
|
|
|
+ throw new RuntimeException("节点不存在");
|
|
|
+ }
|
|
|
+ return companyWorkflowNode;
|
|
|
+ }
|
|
|
+
|
|
|
}
|