Skip to content

Commit 83db0da

Browse files
committed
feat: Node execution conditions
1 parent a00af1e commit 83db0da

File tree

2 files changed

+25
-6
lines changed

2 files changed

+25
-6
lines changed

apps/application/flow/workflow_manage.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -676,9 +676,17 @@ def get_next_node_list(self, current_node, current_node_result):
676676
self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId)))
677677
else:
678678
for edge in self.flow.edges:
679-
if edge.sourceNodeId == current_node.id and self.dependent_node_been_executed(edge.targetNodeId):
680-
node_list.append(
681-
self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId)))
679+
if edge.sourceNodeId == current_node.id:
680+
next_node = [node for node in self.flow.nodes if node.id == edge.targetNodeId]
681+
if len(next_node) == 0:
682+
continue
683+
if next_node[0].properties.get('condition', "AND") == 'AND':
684+
if self.dependent_node_been_executed(edge.targetNodeId):
685+
node_list.append(
686+
self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId)))
687+
else:
688+
node_list.append(
689+
self.get_node_cls_by_id(edge.targetNodeId, self.get_up_node_id_list(edge.targetNodeId)))
682690
return node_list
683691

684692
def get_reference_field(self, node_id: str, fields: List[str]):

ui/src/workflow/common/NodeContainer.vue

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
placement="bottom-start"
4545
>
4646
<el-button text>
47-
<img src="@/assets/icon_or.svg" alt="" v-if="condition==='OR'">
48-
<img src="@/assets/icon_and.svg" alt="" v-if="condition==='AND'">
47+
<img src="@/assets/icon_or.svg" alt="" v-if="condition === 'OR'" />
48+
<img src="@/assets/icon_and.svg" alt="" v-if="condition === 'AND'" />
4949
</el-button>
5050
<template #dropdown>
5151
<div style="width: 280px" class="p-12-16">
@@ -152,8 +152,19 @@ const height = ref<{
152152
})
153153
const showAnchor = ref<boolean>(false)
154154
const anchorData = ref<any>()
155-
const condition = ref('AND')
156155
156+
const condition = computed({
157+
set: (v) => {
158+
set(props.nodeModel.properties, 'condition', v)
159+
},
160+
get: () => {
161+
if (props.nodeModel.properties.condition) {
162+
return props.nodeModel.properties.condition
163+
}
164+
set(props.nodeModel.properties, 'condition', 'AND')
165+
return true
166+
}
167+
})
157168
const showNode = computed({
158169
set: (v) => {
159170
set(props.nodeModel.properties, 'showNode', v)

0 commit comments

Comments
 (0)