From 8ac57506f55392dad005137c925dba019d05d72b Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Mon, 8 Sep 2025 15:30:52 -0700 Subject: [PATCH 1/2] add workflow engine interface --- cadence/workflow/workflow_engine.py | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 cadence/workflow/workflow_engine.py diff --git a/cadence/workflow/workflow_engine.py b/cadence/workflow/workflow_engine.py new file mode 100644 index 0000000..794c56f --- /dev/null +++ b/cadence/workflow/workflow_engine.py @@ -0,0 +1,30 @@ +from ast import List +from dataclasses import dataclass +from typing import Callable + +from cadence.api.v1.decision_pb2 import Decision +from cadence.client import Client +from cadence.data_converter import DataConverter +from cadence.api.v1.service_worker_pb2 import PollForDecisionTaskResponse + + + +@dataclass +class WorkflowContext: + domain: str + workflow_id: str + run_id: str + client: Client + workflow_func: Callable + data_converter: DataConverter + +@dataclass +class DecisionResult: + decisions: List[Decision] + +class WorkflowEngine: + def __init__(self, context: WorkflowContext): + self._context = context + + def process_decision(self, decision_task: PollForDecisionTaskResponse) -> DecisionResult: + pass From 01212edf5234bc22952c1f2fddf16ffd8bd95fa4 Mon Sep 17 00:00:00 2001 From: Shijie Sheng Date: Mon, 8 Sep 2025 15:40:12 -0700 Subject: [PATCH 2/2] lint fi --- cadence/workflow/workflow_engine.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cadence/workflow/workflow_engine.py b/cadence/workflow/workflow_engine.py index 794c56f..bfde8c3 100644 --- a/cadence/workflow/workflow_engine.py +++ b/cadence/workflow/workflow_engine.py @@ -1,4 +1,3 @@ -from ast import List from dataclasses import dataclass from typing import Callable @@ -7,8 +6,6 @@ from cadence.data_converter import DataConverter from cadence.api.v1.service_worker_pb2 import PollForDecisionTaskResponse - - @dataclass class WorkflowContext: domain: str @@ -20,11 +17,12 @@ class WorkflowContext: @dataclass class DecisionResult: - decisions: List[Decision] + decisions: list[Decision] class WorkflowEngine: def __init__(self, context: WorkflowContext): self._context = context + # TODO: Implement this def process_decision(self, decision_task: PollForDecisionTaskResponse) -> DecisionResult: - pass + return DecisionResult(decisions=[])