Skip to content

Parallel Group

Implementation

from time import sleep

from dotflow import DotFlow, action, Context


@action
def task_foo(initial_context: Context):
    sleep(2)
    value = initial_context.storage
    return value * value * value


@action
def task_bar(initial_context: Context):
    sleep(1)
    value = initial_context.storage
    return value * value * value


def main():
    workflow = DotFlow()

    workflow.task.add(step=task_foo, initial_context=10, group_name="foo")
    workflow.task.add(step=task_bar, initial_context=10, group_name="bar")

    workflow.start()

    return workflow


if __name__ == "__main__":
    main()

Workflow

flowchart TD
    A[Start] -->|run| C(Parallel Groups)
    C -->|run| D[task_a]
    C -->|run| E[task_c]
    D -->|response| X[task_b]
    X --> H[Finish]
    E -->|response| Y[task_d]
    Y --> H[Finish]