From 1113e1ffecaf4e8cb9d386fa2f88da6a2362a040 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:11:28 +0800 Subject: [PATCH] feat: Node execution conditions (#1888) --- apps/application/flow/workflow_manage.py | 14 +++++++++++--- ui/src/workflow/common/NodeContainer.vue | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/apps/application/flow/workflow_manage.py b/apps/application/flow/workflow_manage.py index f8e1931eb..40fe97fbc 100644 --- a/apps/application/flow/workflow_manage.py +++ b/apps/application/flow/workflow_manage.py @@ -676,9 +676,17 @@ class WorkflowManage: self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId))) else: for edge in self.flow.edges: - if edge.sourceNodeId == current_node.id and self.dependent_node_been_executed(edge.targetNodeId): - node_list.append( - self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId))) + if edge.sourceNodeId == current_node.id: + next_node = [node for node in self.flow.nodes if node.id == edge.targetNodeId] + if len(next_node) == 0: + continue + if next_node[0].properties.get('condition', "AND") == 'AND': + if self.dependent_node_been_executed(edge.targetNodeId): + node_list.append( + self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId))) + else: + node_list.append( + self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId))) return node_list def get_reference_field(self, node_id: str, fields: List[str]): diff --git a/ui/src/workflow/common/NodeContainer.vue b/ui/src/workflow/common/NodeContainer.vue index 15f7ea58c..6f388b0c1 100644 --- a/ui/src/workflow/common/NodeContainer.vue +++ b/ui/src/workflow/common/NodeContainer.vue @@ -44,8 +44,8 @@ placement="bottom-start" > - - + +