A flow is a container for tasks, their inputs, outputs, error handling, triggers and overall orchestration logic. It is defined in YANL and consists of below required components:
id: Name of the flow, must be unique within a namespace.namespace: Can be used to separate development and production environments. Combination of id and namespace serves as a unique identifier for a flow.tasks: List of tasks that are executed in the order they are defined.#This flow outputs "Hello World!" message to the kestra console
id: flow-name
namespace: production
description:
# Getting started
We can write `markdown` here
labels:
owner: john.doe
project: project_name
tasks:
- id: hello-world
type: io.kestra.plugin.core.log.Log
message: Hello World!
description: |
## About this task
This will print "Hello World!" to the logs
labels: Allows you to group flows using key:value pairs.
description: Document your flow’s purpose, supports markdown.
Tasks are atomic actions for your flows, design your tasks to be small and granular, such as fetching data from a REST API or running a self-contained Python script.
A task must have an id and a type, and you can use Ctrl + Space for Autocomplete to populate the list of tasks.
For example, Core Tasks, io.kestra.plugin.core.flow are commonly used to control the flow logic.