From 372ff30a9358529eb8af7947dc3f67ced7154483 Mon Sep 17 00:00:00 2001 From: Cizz22 Date: Thu, 4 Jun 2026 11:47:20 +0700 Subject: [PATCH] feat: replace direct AHM callback activity with external workflow signaling for simulation completion --- temporal/workflow.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/temporal/workflow.py b/temporal/workflow.py index 65437f6..0b4f0de 100644 --- a/temporal/workflow.py +++ b/temporal/workflow.py @@ -5,6 +5,7 @@ import os with workflow.unsafe.imports_passed_through(): from temporal.activity import calculate_plant_eaf_activity, execute_simulation_activity, update_contribution_bulk_mappings_activity, update_equipment_for_simulation_activity,call_callback_ahm, acquire_lock, release_lock,execute_update_node + TEMPORAL_URL = os.environ.get("TEMPORAL_URL", "http://192.168.1.86:7233") @workflow.defn @@ -68,14 +69,26 @@ class SimulationWorkflow: if sim_data.get("AhmJobId"): - await workflow.execute_activity( - call_callback_ahm, - { - "simulation_id": sim_data["HubCnnId"], - "job_id": sim_data["AhmJobId"] - }, - start_to_close_timeout=timedelta(days=1) - ) + job_id = sim_data["AhmJobId"] + sim_id = sim_data["HubCnnId"] + if "|" in job_id: + wf_id, sim_type = job_id.split("|", 1) + else: + wf_id = job_id + sim_type = "unknown" + + try: + handle = workflow.get_external_workflow_handle(wf_id) + await handle.signal( + "rbd_simulation_completed", + { + "sim_id": sim_id, + "type": sim_type, + "status": "completed" + } + ) + except Exception as e: + workflow.logger.error(f"Failed to signal OpsDock: {e}") self.status = "COMPLETED" # etc…