Skip to main content

Flows

Flows contain your automation logic. Within them, you define what you want to automate and how to do so.

The flow script is written in Python. Executions of flows will process the handler function of the flow script.

Depending on the complexity of your automated process, it can consists of one or many flows. Executions of flows can start executions of other flows and pass inputs and outputs between each other.

tip

Small flows with well-defined scope can be re-used by many automated processes. We recommend breaking automated processes down into several flows which automate specific tasks. In addition to simpler re-use, it also makes it easier to maintain and extend your automated processes.

Working with Flows

You can create flows in the User Interface by pressing the "Create" button and selecting "Flow":

The buttons to create a flow

The new flow is opened and you can directly modify the script.

The flow script editor provided in the Cloudomation user interface is mainly intended for writing small flows, or doing small edits on existing flows. For larger projects, it is recommended to use an editor of your choice and use the Git Integration.

When making changes, Cloudomation does not store older versions of your flows. Make sure to have a backup of your flows if you make significant changes. Or even better: use the Git Integration.

Clicking the "Run" button in the flow view will create an execution of the flow and automatically redirect you to the execution view. Read more about executing flows in the documentation on Development and Productive Mode.

Interaction between Flows

Executions of flows can create executions of other flows.

example

Create a child execution.

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
my_flow = this.flow('my_other_flow_name')
return this.success('all done')

When an execution creates another execution, a parent-child relation is established between them:

The parent execution lists all children in the "Children" tab

The child execution has a button to navigate to the parent

If a child execution fails, it will raise an exception, causing the parent execution to fail as well. To avoid the parent failing, you can catch the exception:

example

Create a child execution and handle errors.

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
try:
my_flow = this.flow('my_other_flow_name')
except flow_api.DependencyFailedError:
this.log('my_other_flow_name failed')
else:
this.log('my_other_flow_name succeeded')
return this.success('all done')

Please refer to Exceptions for details about error handling.

Interaction with other Services: Connectors

In order to connect with services outside of the Cloudomation platform, you can create connection executions from your flow.

Creating a connection execution from your flow is simple:

import flow_api

def handler(system: flow_api.System, this: flow_api.Execution):
my_connection = this.connect(
connector_type='GIT',
command='get',
repository_url='https://example.com/path/to/repo.git',
)
# read the outputs of the connection and log them
this.log(my_connection.get('output_value'))

return this.success('all done')

Learn More

Connector Types
Third-Party Python Modules
Executions
Webhooks