From b73ec87afcfbc7b7fdca29893d96b0116b292042 Mon Sep 17 00:00:00 2001 From: -LAN- Date: Mon, 17 Jun 2024 20:41:57 +0800 Subject: [PATCH] fix(core/workflow): Handle special values in node run result outputs (#5321) --- .../app/task_pipeline/workflow_iteration_cycle_manage.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/api/core/app/task_pipeline/workflow_iteration_cycle_manage.py b/api/core/app/task_pipeline/workflow_iteration_cycle_manage.py index 55e3e03173..19bb7788c9 100644 --- a/api/core/app/task_pipeline/workflow_iteration_cycle_manage.py +++ b/api/core/app/task_pipeline/workflow_iteration_cycle_manage.py @@ -17,6 +17,7 @@ from core.app.entities.task_entities import ( ) from core.app.task_pipeline.workflow_cycle_state_manager import WorkflowCycleStateManager from core.workflow.entities.node_entities import NodeType +from core.workflow.workflow_engine_manager import WorkflowEngineManager from extensions.ext_database import db from models.workflow import ( WorkflowNodeExecution, @@ -205,7 +206,7 @@ class WorkflowIterationCycleManage(WorkflowCycleStateManager): db.session.close() - def _handle_iteration_completed(self, event: QueueIterationCompletedEvent) -> WorkflowNodeExecution: + def _handle_iteration_completed(self, event: QueueIterationCompletedEvent): if event.node_id not in self._iteration_state.current_iterations: return @@ -215,9 +216,9 @@ class WorkflowIterationCycleManage(WorkflowCycleStateManager): ).first() workflow_node_execution.status = WorkflowNodeExecutionStatus.SUCCEEDED.value - workflow_node_execution.outputs = json.dumps(event.outputs) if event.outputs else None + workflow_node_execution.outputs = json.dumps(WorkflowEngineManager.handle_special_values(event.outputs)) if event.outputs else None workflow_node_execution.elapsed_time = time.perf_counter() - current_iteration.started_at - + original_node_execution_metadata = workflow_node_execution.execution_metadata_dict if original_node_execution_metadata: original_node_execution_metadata['steps_boundary'] = current_iteration.iteration_steps_boundary