1616from __future__ import annotations
1717
1818from datetime import datetime
19- from typing import Any , Optional , TypeVar
19+ from typing import Any , Optional , TypeVar , Union
2020
2121import durabletask .internal .orchestrator_service_pb2 as pb
2222from dapr .ext .workflow .logger import Logger , LoggerOptions
@@ -75,7 +75,7 @@ def __init__(
7575
7676 def schedule_new_workflow (
7777 self ,
78- workflow : Workflow ,
78+ workflow : Union [ Workflow , str ] ,
7979 * ,
8080 input : Optional [TInput ] = None ,
8181 instance_id : Optional [str ] = None ,
@@ -85,7 +85,7 @@ def schedule_new_workflow(
8585 """Schedules a new workflow instance for execution.
8686
8787 Args:
88- workflow: The workflow to schedule.
88+ workflow: The workflow to schedule. Can be a workflow callable or a workflow name string.
8989 input: The optional input to pass to the scheduled workflow instance. This must be a
9090 serializable value.
9191 instance_id: The unique ID of the workflow instance to schedule. If not specified, a
@@ -99,16 +99,14 @@ def schedule_new_workflow(
9999 Returns:
100100 The ID of the scheduled workflow instance.
101101 """
102- if hasattr (workflow , '_dapr_alternate_name' ):
103- return self .__obj .schedule_new_orchestration (
104- workflow .__dict__ ['_dapr_alternate_name' ],
105- input = input ,
106- instance_id = instance_id ,
107- start_at = start_at ,
108- reuse_id_policy = reuse_id_policy ,
109- )
102+ if isinstance (workflow , str ):
103+ workflow_name = workflow
104+ elif hasattr (workflow , '_dapr_alternate_name' ):
105+ workflow_name = workflow .__dict__ ['_dapr_alternate_name' ]
106+ else :
107+ workflow_name = workflow .__name__
110108 return self .__obj .schedule_new_orchestration (
111- workflow . __name__ ,
109+ workflow_name ,
112110 input = input ,
113111 instance_id = instance_id ,
114112 start_at = start_at ,
0 commit comments