|
|
|
@ -15,7 +15,14 @@ import { localNodeData } from '@/pages/flowEditor/sideBar/config/localNodeData';
|
|
|
|
import { useAlignmentGuidelines } from '@/hooks/useAlignmentGuidelines';
|
|
|
|
import { useAlignmentGuidelines } from '@/hooks/useAlignmentGuidelines';
|
|
|
|
import LocalNode from '@/components/FlowEditor/node/localNode/LocalNode';
|
|
|
|
import LocalNode from '@/components/FlowEditor/node/localNode/LocalNode';
|
|
|
|
import LoopNode from '@/components/FlowEditor/node/loopNode/LoopNode';
|
|
|
|
import LoopNode from '@/components/FlowEditor/node/loopNode/LoopNode';
|
|
|
|
import { updateCanvasDataMap, resetNodeStatus, updateIsRunning, updateEventListOld, addRuntimeLog, clearRuntimeLogs } from '@/store/ideContainer';
|
|
|
|
import {
|
|
|
|
|
|
|
|
updateCanvasDataMap,
|
|
|
|
|
|
|
|
resetNodeStatus,
|
|
|
|
|
|
|
|
updateIsRunning,
|
|
|
|
|
|
|
|
updateEventListOld,
|
|
|
|
|
|
|
|
addRuntimeLog,
|
|
|
|
|
|
|
|
clearRuntimeLogs
|
|
|
|
|
|
|
|
} from '@/store/ideContainer';
|
|
|
|
import {
|
|
|
|
import {
|
|
|
|
validateAllNodes,
|
|
|
|
validateAllNodes,
|
|
|
|
showValidationErrors,
|
|
|
|
showValidationErrors,
|
|
|
|
@ -148,6 +155,30 @@ export const useFlowCallbacks = (
|
|
|
|
// 创建带有事件信息的连接
|
|
|
|
// 创建带有事件信息的连接
|
|
|
|
const edgeParams = { ...params, type: 'custom' };
|
|
|
|
const edgeParams = { ...params, type: 'custom' };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 添加lineType字段,用于区分API连接和数据连接
|
|
|
|
|
|
|
|
edgeParams.data = {
|
|
|
|
|
|
|
|
...edgeParams.data,
|
|
|
|
|
|
|
|
lineType: sourceHandleType // 'api' 或 'data'
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 对于数据类型的边,需要额外验证dataIns和dataOuts中的数据类型是否一致
|
|
|
|
|
|
|
|
if (sourceHandleType === 'data') {
|
|
|
|
|
|
|
|
// 查找源节点的dataOuts中对应的数据
|
|
|
|
|
|
|
|
const sourceDataOut = (sourceParams.dataOuts || []).find((dataOut: any) =>
|
|
|
|
|
|
|
|
dataOut.name === params.sourceHandle || dataOut.id === params.sourceHandle);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 查找目标节点的dataIns中对应的数据
|
|
|
|
|
|
|
|
const targetDataIn = (targetParams.dataIns || []).find((dataIn: any) =>
|
|
|
|
|
|
|
|
dataIn.name === params.targetHandle || dataIn.id === params.targetHandle);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 验证数据类型是否一致
|
|
|
|
|
|
|
|
if (sourceDataOut && targetDataIn && sourceDataOut.dataType !== targetDataIn.dataType) {
|
|
|
|
|
|
|
|
console.warn('数据类型不匹配,源节点数据类型:', sourceDataOut.dataType, '目标节点数据类型:', targetDataIn.dataType);
|
|
|
|
|
|
|
|
Message.warning(`数据类型不匹配,源节点数据类型: ${sourceDataOut.dataType},目标节点数据类型: ${targetDataIn.dataType}`);
|
|
|
|
|
|
|
|
return edgesSnapshot; // 不创建连接
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 检查源节点和目标节点是否都有事件信息
|
|
|
|
// 检查源节点和目标节点是否都有事件信息
|
|
|
|
const sourceApi = (sourceParams.apiOuts || []).find((api: any) =>
|
|
|
|
const sourceApi = (sourceParams.apiOuts || []).find((api: any) =>
|
|
|
|
api.name === params.sourceHandle || api.id === params.sourceHandle);
|
|
|
|
api.name === params.sourceHandle || api.id === params.sourceHandle);
|
|
|
|
@ -159,6 +190,7 @@ export const useFlowCallbacks = (
|
|
|
|
// 如果目标节点的topic是**empty**或没有topic,则使用源节点的事件信息
|
|
|
|
// 如果目标节点的topic是**empty**或没有topic,则使用源节点的事件信息
|
|
|
|
if (!targetApi || !targetApi.topic || targetApi.topic.includes('**empty**')) {
|
|
|
|
if (!targetApi || !targetApi.topic || targetApi.topic.includes('**empty**')) {
|
|
|
|
edgeParams.data = {
|
|
|
|
edgeParams.data = {
|
|
|
|
|
|
|
|
...edgeParams.data,
|
|
|
|
displayData: {
|
|
|
|
displayData: {
|
|
|
|
name: sourceApi.name,
|
|
|
|
name: sourceApi.name,
|
|
|
|
eventId: sourceApi.eventId,
|
|
|
|
eventId: sourceApi.eventId,
|
|
|
|
@ -171,6 +203,7 @@ export const useFlowCallbacks = (
|
|
|
|
!sourceApi.topic.includes('**empty**') &&
|
|
|
|
!sourceApi.topic.includes('**empty**') &&
|
|
|
|
!targetApi.topic.includes('**empty**')) {
|
|
|
|
!targetApi.topic.includes('**empty**')) {
|
|
|
|
edgeParams.data = {
|
|
|
|
edgeParams.data = {
|
|
|
|
|
|
|
|
...edgeParams.data,
|
|
|
|
displayData: {
|
|
|
|
displayData: {
|
|
|
|
name: sourceApi.name,
|
|
|
|
name: sourceApi.name,
|
|
|
|
eventId: sourceApi.eventId,
|
|
|
|
eventId: sourceApi.eventId,
|
|
|
|
@ -182,6 +215,7 @@ export const useFlowCallbacks = (
|
|
|
|
// 如果源节点没有事件信息,但目标节点有
|
|
|
|
// 如果源节点没有事件信息,但目标节点有
|
|
|
|
else if (targetApi && targetApi.topic && !targetApi.topic.includes('**empty**')) {
|
|
|
|
else if (targetApi && targetApi.topic && !targetApi.topic.includes('**empty**')) {
|
|
|
|
edgeParams.data = {
|
|
|
|
edgeParams.data = {
|
|
|
|
|
|
|
|
...edgeParams.data,
|
|
|
|
displayData: {
|
|
|
|
displayData: {
|
|
|
|
name: targetApi.name,
|
|
|
|
name: targetApi.name,
|
|
|
|
eventId: targetApi.eventId,
|
|
|
|
eventId: targetApi.eventId,
|
|
|
|
@ -1256,7 +1290,7 @@ export const useFlowCallbacks = (
|
|
|
|
eventId: Array.from(new Set(item.eventId))
|
|
|
|
eventId: Array.from(new Set(item.eventId))
|
|
|
|
}));
|
|
|
|
}));
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
updateAppFlowData(appFlowParams);
|
|
|
|
updateAppFlowData(appEventParams);
|
|
|
|
if (appEventParams.length > 0) {
|
|
|
|
if (appEventParams.length > 0) {
|
|
|
|
for (const item of appEventParams) {
|
|
|
|
for (const item of appEventParams) {
|
|
|
|
await sleep(500);
|
|
|
|
await sleep(500);
|
|
|
|
|