Entire action activity is represented by a workflow consisting of a list of tasks. Task is a minimal piece of work needs to be done. Each task can obtain or modify some data, gather the user input or present some data to the user. Workflow is performed by executing one task per time, each task after another; output from a task goes to input of following one (aka. piping). Workflow (by default) stops if any task is failed due to an error or the user cancelled workflow's execution. 

Workflow ends when the last task is performed. If some task leads leaving the app (e.g. "Open URL" task) and the workflow is not completed - it would be suspended and its action's data will be persisted. The suspended action can be resumed at later time to continue performing the rest of workflow.

Each action can contain several workflows that cover different aspects of action. To add a workflow - tap the "Add Workflow" button. The following workflows are supported:

It is possible to define conditions for any individual tasks. So if task's condition is defined and evaluates to FALSE - this task will not be executed. Though, this functionality is deprecated as of v1.2 - use IF/ELSE tasks instead.

Many of the tasks are able to internally process arrays, which would replace the need to apply loop operations. For example, a "Convert Text" task can automatically convert single strings as well as all elements of the arrays.

Many tasks are quite flexible and can accept input data in different formats. For example "Save Photo" task accepts images specified as binary data, file paths or URLs. In more complex cases there is a need to convert data from one format to another using one of "Convert..." tasks or "Set Variables" task. 

All tasks use some variables to change and access data. Most of tasks use Input and Output properties to define task's input and output. Some tasks may use other variables as well. For example, an "Open URL" task introduces the Browser variable that allows specifying a variable defining which browser should be used to open links with.

The Input property defines a variable that should be used to obtain input for a task. If Input property is not specified - the task uses output from previous task, which is equivalent of defining Input = input. Some tasks may support similar behavior for another task's properties too. For example, if both Text and Attachments properties are not defined for a "Send Email" task - the task will try to use input to fetch email's attachments first; if no attachments are found - input will be used to define text of the email. 

To instruct a task to ignore input value - specify minus sign as Input property. 

The Output property defines a variable that should be used to store output for a task. Even if Output property is specified output from the task goes to input of the following task.

To change value of the same variable - state that variable for both Input and Output properties.

Use of piping allows quickly building of simple workflows with minimal need to change task's properties. For example, the following workflow prompts the user to enter text, converts that text to HTML and sends email with converted HTML text. Everything is done with no need to care about variables:

  1. "Enter Text".
  2. "Convert Text" - Markdown to HTML.
  3. "Send Email" in HTML format.

It is possible to exclude a task from execution but preserve it in the workflow. You can do it by making that task Disabled via Task's "Options | Disabled".

Some tasks may require the user to enter data in a specific format. To hint users about such requirement you may specify detailed description via the Task's "Options | Hints".

See also:
Maintaining Workflows
Actions

Next > Main Workflow