feat(ide): 添加运行ID以支持运行实例追踪

master
钟良源 3 months ago
parent fec2dd2af9
commit 6faa206b8a

@ -21,7 +21,8 @@ import {
updateIsRunning, updateIsRunning,
updateEventListOld, updateEventListOld,
addRuntimeLog, addRuntimeLog,
clearRuntimeLogs clearRuntimeLogs,
updateRuntimeId
} from '@/store/ideContainer'; } from '@/store/ideContainer';
import { import {
validateAllNodes, validateAllNodes,
@ -1307,21 +1308,24 @@ export const useFlowCallbacks = (
}, [nodes, edges, initialData?.appId]); }, [nodes, edges, initialData?.appId]);
// 运行处理函数 // 运行处理函数
const handleRun = useCallback(async (running: boolean) => { const handleRun = useCallback(async (running: boolean) => {
const { currentAppData, socketId } = store.getState().ideContainer; const { currentAppData, socketId, appRuntimeData } = store.getState().ideContainer;
if (running) { if (running) {
// 启动运行 // 启动运行
const params = { const params = {
appId: currentAppData.id, appId: currentAppData.id,
socketId socketId
}; };
runMainFlow(params); const res: any = await runMainFlow(params);
if (res.code === 200) {
// 设置运行状态为true // 设置运行状态为true
dispatch(updateIsRunning(true)); dispatch(updateIsRunning(true));
// 重置节点状态 // 重置节点状态
dispatch(resetNodeStatus()); dispatch(resetNodeStatus());
// 更新运行ID
dispatch(updateRuntimeId(res.data));
// 开始运行时动画 // 开始运行时动画
setEdges((eds) => eds.map(edge => ({ setEdges((eds) => eds.map(edge => ({
...edge, ...edge,
@ -1332,11 +1336,17 @@ export const useFlowCallbacks = (
} }
}))); })));
} }
else {
Message.error(res.message);
}
}
else { else {
// 设置运行状态为false // 设置运行状态为false
dispatch(updateIsRunning(false)); dispatch(updateIsRunning(false));
stopApp(currentAppData.id); await stopApp(appRuntimeData[currentAppData.id].runId);
// 更新运行ID
dispatch(updateRuntimeId(''));
// 停止运行 // 停止运行
setEdges((eds) => eds.map(edge => ({ setEdges((eds) => eds.map(edge => ({

@ -20,6 +20,7 @@ interface IDEContainerState {
nodeStatusMap: Record<string, string>; nodeStatusMap: Record<string, string>;
isRunning: boolean; isRunning: boolean;
logs: any[]; logs: any[];
runId: string;
}>; }>;
} }
@ -38,7 +39,7 @@ const initialState: IDEContainerState = {
socketId: '', // 工程的socketId socketId: '', // 工程的socketId
nodeStatusMap: {}, // 初始化节点状态映射 nodeStatusMap: {}, // 初始化节点状态映射
isRunning: false, // 默认未运行 isRunning: false, // 默认未运行
appRuntimeData: {}, // 按应用ID隔离的应用运行状态和日志数据 appRuntimeData: {} // 按应用ID隔离的应用运行状态和日志数据
}; };
// 创建切片 // 创建切片
@ -85,7 +86,8 @@ const ideContainerSlice = createSlice({
// 如果是运行时更新,不记录到历史记录中 // 如果是运行时更新,不记录到历史记录中
if (actionType !== 'RUNTIME_UPDATE') { if (actionType !== 'RUNTIME_UPDATE') {
state.nodeStatusMap[nodeId] = status; state.nodeStatusMap[nodeId] = status;
} else { }
else {
// 对于运行时更新,我们仍然更新状态但标记为运行时状态 // 对于运行时更新,我们仍然更新状态但标记为运行时状态
state.nodeStatusMap[nodeId] = status; state.nodeStatusMap[nodeId] = status;
} }
@ -97,7 +99,8 @@ const ideContainerSlice = createSlice({
state.appRuntimeData[appId] = { state.appRuntimeData[appId] = {
nodeStatusMap: {}, nodeStatusMap: {},
isRunning: false, isRunning: false,
logs: [] logs: [],
runId: ''
}; };
} }
state.appRuntimeData[appId].nodeStatusMap[nodeId] = status; state.appRuntimeData[appId].nodeStatusMap[nodeId] = status;
@ -124,12 +127,26 @@ const ideContainerSlice = createSlice({
state.appRuntimeData[appId] = { state.appRuntimeData[appId] = {
nodeStatusMap: {}, nodeStatusMap: {},
isRunning: false, isRunning: false,
logs: [] logs: [],
runId: ''
}; };
} }
state.appRuntimeData[appId].isRunning = payload; state.appRuntimeData[appId].isRunning = payload;
} }
}, },
// 添加运行id
updateRuntimeId: (state, { payload }) => {
const appId = state.currentAppData?.id;
if (!state.appRuntimeData[appId]) {
state.appRuntimeData[appId] = {
nodeStatusMap: {},
isRunning: false,
logs: [],
runId: ''
};
}
state.appRuntimeData[appId].runId = payload;
},
// 添加运行日志 // 添加运行日志
addRuntimeLog: (state, { payload }) => { addRuntimeLog: (state, { payload }) => {
const { log, appId } = payload; const { log, appId } = payload;
@ -137,7 +154,8 @@ const ideContainerSlice = createSlice({
state.appRuntimeData[appId] = { state.appRuntimeData[appId] = {
nodeStatusMap: {}, nodeStatusMap: {},
isRunning: false, isRunning: false,
logs: [] logs: [],
runId: ''
}; };
} }
state.appRuntimeData[appId].logs.push(log); state.appRuntimeData[appId].logs.push(log);
@ -168,6 +186,7 @@ export const {
updateNodeStatus, updateNodeStatus,
resetNodeStatus, resetNodeStatus,
updateIsRunning, updateIsRunning,
updateRuntimeId,
addRuntimeLog, addRuntimeLog,
clearRuntimeLogs clearRuntimeLogs
} = ideContainerSlice.actions; } = ideContainerSlice.actions;

Loading…
Cancel
Save