blob: 932d32c3e444063a4fc5ad05716338d8b84fe019 [file] [view]
---
title: Workflow Steps
layout: website-normal
children:
- { section: Workflow Control }
- { section: External Actions }
- { section: Application Models }
- { section: General Purpose }
- { section: Index of Step Types }
---
Apache Brooklyn workflow supports a range of step types covering the most common activities
commonly done as part of application management.
These are divided into the following groups:
* [Workflow Control](#workflow-control): use local variables and control flow,
with step types such as `let`, `return`, and `retry`
* [External Actions](#external-actions): interact with external systems
using step types such as `container`, `ssh`, `winrm`, and `http`
* [Application Models](#application-models): work with the models stored in Brooklyn,
doing things such as `invoke-effector`, `set-sensor`, `deploy-application`, and `add-entity`
* [General Purpose](#general-purpose): miscellaneous step types such as `log` and `sleep`
Custom step types can be written and added to the catalog, either written as workflow using these primitives
(including doing virtually anything in a container) or by implementing a Java type, both [as described here](../nested-workflow.md).
An index of all out-of-the-box step types is included at the [end of this section](#index-of-step-types).
{% jsonball steps from yaml file steps.yaml %}
{% assign step_summaries = "" | split: ", " %}
{% for x in steps %}
{% assign step_summaries = step_summaries | concat: x.steps %}
## {{ x.section_name }}
{{ x.section_intro }}
<div class="no-space-in-list" markdown="1" style="margin-top: 0; margin-bottom: 42px;">
{% for step in x.steps %}
* [`{{ step.name }}`](#{{ step.name }})
{% endfor %}
</div>
{% for step in x.steps %}
### `{{ step.name }}`
{{ step.summary }}
{% if step.shorthand %}
**Shorthand**: {{ step.shorthand }}
{% endif %}
{% if step.input %}
**Input parameters**:
{{ step.input }}
{% endif %}
{% if step.output %}
**Output return value**:
{{ step.output }}
{% endif %}
<div style="margin-bottom: 42px;"></div>
{% endfor %}
{% endfor %}
## Index of Step Types
{% assign step_summaries = step_summaries | sort: "name" %}
<div class="no-space-in-list" markdown="1" style="margin-top: 0; margin-bottom: 42px;">
{% for x in step_summaries %}
* [{% if x.shorthand %}`{{ x.name }}`{% else %}`{{ x.name }}`{% endif %}](#{{ x.name }})
{% endfor %}
</div>