Skip to content

Commit 436585e

Browse files
authored
Merge pull request #274 from conductor-sdk/fix/wf-as-code-dynamic-fork-issue
FIX - Dynamic Fork (workflow as code)
2 parents 2d311a1 + 38a154d commit 436585e

3 files changed

Lines changed: 14 additions & 15 deletions

File tree

‎src/conductor/client/workflow/task/dynamic_fork_task.py‎

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,21 @@
99

1010

1111
class DynamicForkTask(TaskInterface):
12-
def __init__(self, task_ref_name: str, pre_fork_task: TaskInterface, join_task: JoinTask = None) -> Self:
12+
def __init__(self, task_ref_name: str, tasks_param: str = 'dynamicTasks', tasks_input_param_name: str = 'dynamicTasksInputs', join_task: JoinTask = None) -> Self:
1313
super().__init__(
1414
task_reference_name=task_ref_name,
1515
task_type=TaskType.FORK_JOIN_DYNAMIC
1616
)
17-
self._pre_fork_task = deepcopy(pre_fork_task)
17+
self.tasks_param = tasks_param
18+
self.tasks_input_param_name = tasks_input_param_name
1819
self._join_task = deepcopy(join_task)
1920

2021
def to_workflow_task(self) -> WorkflowTask:
21-
workflow = super().to_workflow_task()
22-
workflow.dynamic_fork_join_tasks_param = 'forkedTasks'
23-
workflow.dynamic_fork_tasks_input_param_name = 'forkedTasksInputs'
24-
workflow.input_parameters['forkedTasks'] = self._pre_fork_task.output_ref(
25-
'forkedTasks'
26-
)
27-
workflow.input_parameters['forkedTasksInputs'] = self._pre_fork_task.output_ref(
28-
'forkedTasksInputs'
29-
)
22+
wf_task = super().to_workflow_task()
23+
wf_task.dynamic_fork_join_tasks_param = self.tasks_param
24+
wf_task.dynamic_fork_tasks_input_param_name = self.tasks_input_param_name
3025
tasks = [
31-
self._pre_fork_task.to_workflow_task(),
32-
workflow,
26+
wf_task,
3327
]
3428
if self._join_task != None:
3529
tasks.append(self._join_task.to_workflow_task())

‎src/conductor/client/workflow/task/task.py‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@
1111
def get_task_interface_list_as_workflow_task_list(*tasks: Self) -> List[WorkflowTask]:
1212
converted_tasks = []
1313
for task in tasks:
14-
converted_tasks.append(task.to_workflow_task())
14+
wf_task = task.to_workflow_task()
15+
if isinstance(wf_task, list):
16+
# to_workflow_task() returned a list. E.g.: DynamicFork.to_workflow_task() returns the DynamicFork and the Join task.
17+
for t in wf_task:
18+
converted_tasks.append(t)
19+
else:
20+
converted_tasks.append(task.to_workflow_task())
1521
return converted_tasks
1622

1723

‎tests/integration/metadata/test_workflow_definition.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ def generate_set_variable_task() -> SetVariableTask:
167167
def generate_dynamic_fork_task() -> DynamicForkTask:
168168
return DynamicForkTask(
169169
task_ref_name='dynamic_fork',
170-
pre_fork_task=generate_simple_task(10),
171170
join_task=JoinTask(
172171
'join', join_on=[]
173172
),

0 commit comments

Comments
 (0)