From c9634f995027ca9948c59f551b11dc1acc37f0d1 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Mon, 22 Sep 2025 15:06:04 +0800 Subject: [PATCH] fix: Judgment execution logic (#4072) --- apps/application/flow/workflow_manage.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/application/flow/workflow_manage.py b/apps/application/flow/workflow_manage.py index 7ac65d1ea..554b0b75f 100644 --- a/apps/application/flow/workflow_manage.py +++ b/apps/application/flow/workflow_manage.py @@ -680,10 +680,16 @@ class WorkflowManage: return None @staticmethod - def dependent_node(up_node_id, node): + def dependent_node(edge, node): + up_node_id = edge.sourceNodeId if not node.node_chunk.is_end(): return False if node.id == up_node_id: + if node.context.get('branch_id', None): + if edge.sourceAnchorId == f"{node.id}_{node.context.get('branch_id', None)}_right": + return True + else: + return False if node.type == 'form-node': if node.context.get('form_data', None) is not None: return True @@ -696,9 +702,11 @@ class WorkflowManage: @param node_id: 需要判断的节点id @return: """ - up_node_id_list = [edge.sourceNodeId for edge in self.flow.edges if edge.targetNodeId == node_id] - return all([any([self.dependent_node(up_node_id, node) for node in self.node_context]) for up_node_id in - up_node_id_list]) + up_edge_list = [edge for edge in self.flow.edges if edge.targetNodeId == node_id] + return all( + [any([self.dependent_node(edge, node) for node in self.node_context if node.id == edge.sourceNodeId]) for + edge in + up_edge_list]) def get_up_node_id_list(self, node_id): up_node_id_list = [edge.sourceNodeId for edge in self.flow.edges if edge.targetNodeId == node_id]