From e072d61ca9a7c4db7bc32ced4b0de5a624b5159c Mon Sep 17 00:00:00 2001 From: -LAN- Date: Tue, 31 Dec 2024 15:49:49 +0800 Subject: [PATCH] fix: ensure workflow_run_id is always set and improve handling in WorkflowAppGenerateEntity Signed-off-by: -LAN- --- api/core/app/apps/workflow/app_generator.py | 1 + api/core/app/entities/app_invoke_entities.py | 2 +- api/core/app/task_pipeline/workflow_cycle_manage.py | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/api/core/app/apps/workflow/app_generator.py b/api/core/app/apps/workflow/app_generator.py index 42bc17277fd7c5..0c532f47cf6800 100644 --- a/api/core/app/apps/workflow/app_generator.py +++ b/api/core/app/apps/workflow/app_generator.py @@ -221,6 +221,7 @@ def single_iteration_generate( single_iteration_run=WorkflowAppGenerateEntity.SingleIterationRunEntity( node_id=node_id, inputs=args["inputs"] ), + workflow_run_id=str(uuid.uuid4()), ) contexts.tenant_id.set(application_generate_entity.app_config.tenant_id) diff --git a/api/core/app/entities/app_invoke_entities.py b/api/core/app/entities/app_invoke_entities.py index 16dc91bb777a9b..7cb4e590326257 100644 --- a/api/core/app/entities/app_invoke_entities.py +++ b/api/core/app/entities/app_invoke_entities.py @@ -195,7 +195,7 @@ class WorkflowAppGenerateEntity(AppGenerateEntity): # app config app_config: WorkflowUIBasedAppConfig - workflow_run_id: Optional[str] = None + workflow_run_id: str class SingleIterationRunEntity(BaseModel): """ diff --git a/api/core/app/task_pipeline/workflow_cycle_manage.py b/api/core/app/task_pipeline/workflow_cycle_manage.py index e21475271a03d7..885b341196d04b 100644 --- a/api/core/app/task_pipeline/workflow_cycle_manage.py +++ b/api/core/app/task_pipeline/workflow_cycle_manage.py @@ -102,7 +102,8 @@ def _handle_workflow_run_start( inputs = dict(WorkflowEntry.handle_special_values(inputs) or {}) # init workflow run - workflow_run_id = str(self._workflow_system_variables.get(SystemVariableKey.WORKFLOW_RUN_ID, uuid4())) + # TODO: This workflow_run_id should always not be None, maybe we can use a more elegant way to handle this + workflow_run_id = str(self._workflow_system_variables.get(SystemVariableKey.WORKFLOW_RUN_ID) or uuid4()) workflow_run = WorkflowRun() workflow_run.id = workflow_run_id