From 83db0daf8f914eccf5abfa5ca287a49831068483 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 Date: Mon, 23 Dec 2024 11:10:13 +0800 Subject: [PATCH] feat: Node execution conditions --- 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 f8e1931ebec..40fe97fbc5a 100644 --- a/apps/application/flow/workflow_manage.py +++ b/apps/application/flow/workflow_manage.py @@ -676,9 +676,17 @@ def get_next_node_list(self, current_node, current_node_result): 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 15f7ea58c80..6f388b0c15b 100644 --- a/ui/src/workflow/common/NodeContainer.vue +++ b/ui/src/workflow/common/NodeContainer.vue @@ -44,8 +44,8 @@ placement="bottom-start" > - - + +