|
|
@@ -1,6 +1,7 @@
|
|
|
package com.ruoyi.interfaces.service.impl;
|
|
|
|
|
|
import java.util.Collections;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -10,6 +11,10 @@ import com.agentsflex.core.chain.ChainNode;
|
|
|
import com.agentsflex.core.chain.event.NodeEndEvent;
|
|
|
import com.agentsflex.core.chain.listener.ChainEventListener;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
+import com.ruoyi.common.utils.JsonUtils;
|
|
|
+import com.ruoyi.common.utils.StringUtils;
|
|
|
+import com.ruoyi.framework.websocket.WebSocketUsers;
|
|
|
+import com.ruoyi.interfaces.domain.vo.MdAppFlowVo;
|
|
|
import com.ruoyi.interfaces.tinyflow.TinyflowUtil;
|
|
|
import com.ruoyi.interfaces.tinyflow.parser.PrintNodeParser;
|
|
|
import dev.tinyflow.core.Tinyflow;
|
|
|
@@ -19,94 +24,96 @@ import com.ruoyi.interfaces.mapper.MdAppFlowMapper;
|
|
|
import com.ruoyi.interfaces.domain.MdAppFlow;
|
|
|
import com.ruoyi.interfaces.service.IMdAppFlowService;
|
|
|
|
|
|
+import javax.websocket.Session;
|
|
|
+
|
|
|
/**
|
|
|
* 模型应用流程Service业务层处理
|
|
|
- *
|
|
|
+ *
|
|
|
* @author 朱得糠
|
|
|
* @date 2025-08-19
|
|
|
*/
|
|
|
@Service
|
|
|
-public class MdAppFlowServiceImpl implements IMdAppFlowService
|
|
|
-{
|
|
|
+public class MdAppFlowServiceImpl implements IMdAppFlowService {
|
|
|
@Autowired
|
|
|
private MdAppFlowMapper mdAppFlowMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询模型应用流程
|
|
|
- *
|
|
|
+ *
|
|
|
* @param flowId 模型应用流程主键
|
|
|
* @return 模型应用流程
|
|
|
*/
|
|
|
@Override
|
|
|
- public MdAppFlow selectMdAppFlowByFlowId(Long flowId)
|
|
|
- {
|
|
|
+ public MdAppFlow selectMdAppFlowByFlowId(Long flowId) {
|
|
|
return mdAppFlowMapper.selectMdAppFlowByFlowId(flowId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询模型应用流程列表
|
|
|
- *
|
|
|
+ *
|
|
|
* @param mdAppFlow 模型应用流程
|
|
|
* @return 模型应用流程
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<MdAppFlow> selectMdAppFlowList(MdAppFlow mdAppFlow)
|
|
|
- {
|
|
|
+ public List<MdAppFlow> selectMdAppFlowList(MdAppFlow mdAppFlow) {
|
|
|
return mdAppFlowMapper.selectMdAppFlowList(mdAppFlow);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 新增模型应用流程
|
|
|
- *
|
|
|
+ *
|
|
|
* @param mdAppFlow 模型应用流程
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int insertMdAppFlow(MdAppFlow mdAppFlow)
|
|
|
- {
|
|
|
+ public int insertMdAppFlow(MdAppFlow mdAppFlow) {
|
|
|
mdAppFlow.setCreateTime(DateUtils.getNowDate());
|
|
|
return mdAppFlowMapper.insertMdAppFlow(mdAppFlow);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改模型应用流程
|
|
|
- *
|
|
|
+ *
|
|
|
* @param mdAppFlow 模型应用流程
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateMdAppFlow(MdAppFlow mdAppFlow)
|
|
|
- {
|
|
|
+ public int updateMdAppFlow(MdAppFlow mdAppFlow) {
|
|
|
mdAppFlow.setUpdateTime(DateUtils.getNowDate());
|
|
|
return mdAppFlowMapper.updateMdAppFlow(mdAppFlow);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 批量删除模型应用流程
|
|
|
- *
|
|
|
+ *
|
|
|
* @param flowIds 需要删除的模型应用流程主键
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteMdAppFlowByFlowIds(Long[] flowIds)
|
|
|
- {
|
|
|
+ public int deleteMdAppFlowByFlowIds(Long[] flowIds) {
|
|
|
return mdAppFlowMapper.deleteMdAppFlowByFlowIds(flowIds);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除模型应用流程信息
|
|
|
- *
|
|
|
+ *
|
|
|
* @param flowId 模型应用流程主键
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
- public int deleteMdAppFlowByFlowId(Long flowId)
|
|
|
- {
|
|
|
+ public int deleteMdAppFlowByFlowId(Long flowId) {
|
|
|
return mdAppFlowMapper.deleteMdAppFlowByFlowId(flowId);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Map<String, Object> runFlow(MdAppFlow appFlow) {
|
|
|
+ public Map<String, Object> runFlow(MdAppFlowVo appFlow) {
|
|
|
+ Session session;
|
|
|
+ if (StringUtils.isNotNull(appFlow.getWebSocketId())) {
|
|
|
+ session = WebSocketUsers.getUsers().get(appFlow.getWebSocketId());
|
|
|
+ } else {
|
|
|
+ session = null;
|
|
|
+ }
|
|
|
+
|
|
|
String flowGraph = appFlow.getFlowGraph();
|
|
|
Tinyflow tinyflow = TinyflowUtil.getTinyflow(flowGraph);
|
|
|
//tinyflow.getChainParser().addNodeParser("printNode",new PrintNodeParser());
|
|
|
@@ -115,18 +122,20 @@ public class MdAppFlowServiceImpl implements IMdAppFlowService
|
|
|
@Override
|
|
|
public void onEvent(ChainEvent event, Chain chain) {
|
|
|
if (event instanceof NodeEndEvent) {
|
|
|
- NodeEndEvent nodeEndEvent = (NodeEndEvent) event;
|
|
|
- ChainNode completedNode = nodeEndEvent.getNode();
|
|
|
- Map<String, Object> executeResult = nodeEndEvent.getResult();
|
|
|
- // 节点执行完毕的回调逻辑
|
|
|
- System.out.println("节点执行完毕: " + completedNode.getName());
|
|
|
- System.out.println("节点ID: " + completedNode.getId());
|
|
|
- System.out.println("执行结果: " + executeResult);
|
|
|
+ if (StringUtils.isNotNull(session)) {
|
|
|
+ NodeEndEvent nodeEndEvent = (NodeEndEvent) event;
|
|
|
+ ChainNode completedNode = nodeEndEvent.getNode();
|
|
|
+ Map<String, Object> executeResult = nodeEndEvent.getResult();
|
|
|
+ HashMap<String, Object> nodeMap = new HashMap<>();
|
|
|
+ nodeMap.put("id", completedNode.getId());
|
|
|
+ nodeMap.put("name", completedNode.getName());
|
|
|
+ nodeMap.put("result", executeResult);
|
|
|
+ WebSocketUsers.sendMessageToUserByText(session, JsonUtils.objectToJson(nodeMap));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-
|
|
|
return chain.executeForResult(appFlow.getParams());
|
|
|
}
|
|
|
}
|