android应用
This commit is contained in:
@@ -1936,11 +1936,29 @@ class WorkflowEngine:
|
||||
# 如果是条件节点,根据分支结果过滤边
|
||||
if node.get('type') == 'condition':
|
||||
branch = result.get('branch', 'false')
|
||||
logger.info(f"[rjb] 条件节点分支过滤: node_id={next_node_id}, branch={branch}")
|
||||
# 移除不符合条件的边
|
||||
active_edges = [
|
||||
edge for edge in active_edges
|
||||
if not (edge['source'] == next_node_id and edge.get('sourceHandle') != branch)
|
||||
]
|
||||
# 只保留:1) 不是从条件节点出发的边,或 2) 从条件节点出发且sourceHandle匹配分支的边
|
||||
edges_to_remove = []
|
||||
edges_to_keep = []
|
||||
for edge in active_edges:
|
||||
if edge['source'] == next_node_id:
|
||||
# 这是从条件节点出发的边
|
||||
edge_handle = edge.get('sourceHandle')
|
||||
if edge_handle == branch:
|
||||
# sourceHandle匹配分支,保留
|
||||
edges_to_keep.append(edge)
|
||||
logger.info(f"[rjb] 保留边: {edge.get('id')} (sourceHandle={edge_handle} == branch={branch})")
|
||||
else:
|
||||
# sourceHandle不匹配或为None,移除
|
||||
edges_to_remove.append(edge)
|
||||
logger.info(f"[rjb] 移除边: {edge.get('id')} (sourceHandle={edge_handle} != branch={branch})")
|
||||
else:
|
||||
# 不是从条件节点出发的边,保留
|
||||
edges_to_keep.append(edge)
|
||||
|
||||
active_edges = edges_to_keep
|
||||
logger.info(f"[rjb] 条件节点过滤后: 保留{len(active_edges)}条边,移除{len(edges_to_remove)}条边")
|
||||
|
||||
# 如果是循环节点,跳过循环体的节点(循环体已在节点内部执行)
|
||||
if node.get('type') in ['loop', 'foreach']:
|
||||
|
||||
Reference in New Issue
Block a user