From a20f37942cf3f9c35772d5358e8fa2f44dd4c62b Mon Sep 17 00:00:00 2001 From: Simon Emms Date: Tue, 23 Sep 2025 08:47:11 +0000 Subject: [PATCH] chore: demo how to extend the workflow --- python/src/activities.py | 5 +++++ python/src/params.py | 13 +++++++++++++ python/src/starter.py | 3 ++- python/src/workflows.py | 16 +++++++++++++--- 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 python/src/params.py diff --git a/python/src/activities.py b/python/src/activities.py index 3df24bc..d7b8d6d 100644 --- a/python/src/activities.py +++ b/python/src/activities.py @@ -1,4 +1,5 @@ from temporalio import activity +from params import AskForMoneyParams class Activities: @@ -6,6 +7,10 @@ class Activities: # def __init__(self, db: DB): # self.db = db + @activity.defn + async def askForMoney(self, params: AskForMoneyParams) -> str: + return f"{params.greeting} Can I have £{params.amount} please?" + @activity.defn async def sayName(self, name: str) -> str: if name == "": diff --git a/python/src/params.py b/python/src/params.py new file mode 100644 index 0000000..d02aaa0 --- /dev/null +++ b/python/src/params.py @@ -0,0 +1,13 @@ +from dataclasses import dataclass + + +@dataclass +class HelloWorldParams: + amount: int + name: str + + +@dataclass +class AskForMoneyParams: + amount: int + greeting: str diff --git a/python/src/starter.py b/python/src/starter.py index 9625d04..e44b7be 100644 --- a/python/src/starter.py +++ b/python/src/starter.py @@ -4,6 +4,7 @@ from temporalio.envconfig import ClientConfigProfile import shared import workflows +from params import HelloWorldParams async def main(): @@ -13,7 +14,7 @@ async def main(): client = await Client.connect(**connect_config) result = await client.execute_workflow( workflows.HelloWorldWorkflow, - "Hacker", + HelloWorldParams(name="Hacker", amount=100), id=f"hello-world-workflow-{uuid.uuid4()}", task_queue=shared.TASK_QUEUE_NAME, ) diff --git a/python/src/workflows.py b/python/src/workflows.py index 57d86a1..97cf25b 100644 --- a/python/src/workflows.py +++ b/python/src/workflows.py @@ -1,14 +1,24 @@ +import asyncio from datetime import timedelta from temporalio import workflow from activities import Activities +from params import AskForMoneyParams, HelloWorldParams @workflow.defn class HelloWorldWorkflow: @workflow.run - async def run(self, name: str) -> str: - return await workflow.execute_activity( + async def run(self, params: HelloWorldParams) -> str: + greeting = await workflow.execute_activity( Activities.sayName, - name, + params.name, + schedule_to_close_timeout=timedelta(seconds=10), + ) + + await asyncio.sleep(10) + + return await workflow.execute_activity( + Activities.askForMoney, + AskForMoneyParams(amount=params.amount, greeting=greeting), schedule_to_close_timeout=timedelta(seconds=10), )