From 5c95c77604b8472657459cae570db1d86179f77c Mon Sep 17 00:00:00 2001 From: Harry Date: Wed, 29 Oct 2025 01:04:25 +0800 Subject: [PATCH] refactor(trigger): streamline workflow argument handling in DraftWorkflowTriggerNodeApi - Simplified retrieval of workflow arguments by directly accessing event.workflow_args. - Removed unnecessary conditional checks for user inputs, ensuring cleaner code. - Enhanced TriggerEventNode to use deepcopy for user inputs to prevent unintended mutations. --- api/controllers/console/app/workflow.py | 9 ++------- api/core/trigger/debug/event_bus.py | 1 - .../workflow/nodes/trigger_plugin/trigger_event_node.py | 3 ++- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/api/controllers/console/app/workflow.py b/api/controllers/console/app/workflow.py index 89d6a3aa11..62d50303cd 100644 --- a/api/controllers/console/app/workflow.py +++ b/api/controllers/console/app/workflow.py @@ -1057,19 +1057,14 @@ class DraftWorkflowTriggerNodeApi(Resource): if not event: return jsonable_encoder({"status": "waiting", "retry_in": LISTENING_RETRY_IN}) - workflow_args = dict(event.workflow_args or {}) - raw_files = workflow_args.get("files") + raw_files = event.workflow_args.get("files") files = _parse_file(draft_workflow, raw_files if isinstance(raw_files, list) else None) - if node_type == NodeType.TRIGGER_WEBHOOK: - user_inputs = workflow_args.get("inputs") or {} - else: - user_inputs = workflow_args try: node_execution = workflow_service.run_draft_workflow_node( app_model=app_model, draft_workflow=draft_workflow, node_id=node_id, - user_inputs=user_inputs, + user_inputs=event.workflow_args.get("inputs") or {}, account=current_user, query="", files=files, diff --git a/api/core/trigger/debug/event_bus.py b/api/core/trigger/debug/event_bus.py index 1c4bba0009..e5f2ac2c00 100644 --- a/api/core/trigger/debug/event_bus.py +++ b/api/core/trigger/debug/event_bus.py @@ -118,7 +118,6 @@ class TriggerDebugEventBus: pool_key, address_id, ) - logger.info("event_data: %s", event_data) return event_type.model_validate_json(json_data=event_data) if event_data else None except RedisError: logger.exception("Failed to poll event from pool: %s", pool_key) diff --git a/api/core/workflow/nodes/trigger_plugin/trigger_event_node.py b/api/core/workflow/nodes/trigger_plugin/trigger_event_node.py index 5cedaeb6cf..367c6852ff 100644 --- a/api/core/workflow/nodes/trigger_plugin/trigger_event_node.py +++ b/api/core/workflow/nodes/trigger_plugin/trigger_event_node.py @@ -1,4 +1,5 @@ from collections.abc import Mapping +from copy import deepcopy from typing import Any, Optional from core.workflow.entities.workflow_node_execution import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus @@ -65,7 +66,7 @@ class TriggerEventNode(Node): """ # Get trigger data passed when workflow was triggered - inputs = dict(self.graph_runtime_state.variable_pool.user_inputs) + inputs = deepcopy(self.graph_runtime_state.variable_pool.user_inputs) metadata = { WorkflowNodeExecutionMetadataKey.TRIGGER_INFO: { "provider_id": self._node_data.provider_id,