From 6379645483a508692261b3720a4c7bbebe3754c3 Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Fri, 25 Oct 2024 16:03:36 +0800 Subject: [PATCH] loop support reference parent variable --- packages/service/core/workflow/dispatch/loop/runLoop.ts | 4 +--- projects/app/src/web/core/workflow/utils.ts | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/service/core/workflow/dispatch/loop/runLoop.ts b/packages/service/core/workflow/dispatch/loop/runLoop.ts index 350ba6c681c9..d6c25b761e27 100644 --- a/packages/service/core/workflow/dispatch/loop/runLoop.ts +++ b/packages/service/core/workflow/dispatch/loop/runLoop.ts @@ -32,8 +32,6 @@ export const dispatchLoop = async (props: Props): Promise => { return Promise.reject('Input array length cannot be greater than 50'); } - const runNodes = runtimeNodes.filter((node) => childrenNodeIdList.includes(node.nodeId)); - const outputValueArr = []; const loopDetail: ChatHistoryItemResType[] = []; let assistantResponses: AIChatItemValueItemType[] = []; @@ -43,7 +41,7 @@ export const dispatchLoop = async (props: Props): Promise => { for await (const item of loopInputArray) { const response = await dispatchWorkFlow({ ...props, - runtimeNodes: runNodes.map((node) => + runtimeNodes: runtimeNodes.map((node) => node.flowNodeType === FlowNodeTypeEnum.loopStart ? { ...node, diff --git a/projects/app/src/web/core/workflow/utils.ts b/projects/app/src/web/core/workflow/utils.ts index 864b1cc65707..9e416f36794a 100644 --- a/projects/app/src/web/core/workflow/utils.ts +++ b/projects/app/src/web/core/workflow/utils.ts @@ -193,10 +193,11 @@ export const computedNodeInputReference = ({ if (!node) { return; } + const parentId = node.parentNodeId; let sourceNodes: FlowNodeItemType[] = []; // 根据 edge 获取所有的 source 节点(source节点会继续向前递归获取) const findSourceNode = (nodeId: string) => { - const targetEdges = edges.filter((item) => item.target === nodeId); + const targetEdges = edges.filter((item) => item.target === nodeId || item.target === parentId); targetEdges.forEach((edge) => { const sourceNode = nodes.find((item) => item.nodeId === edge.source); if (!sourceNode) return;