Flow
- Last updated on October 1, 2025
- •
- 3 minutes to read
A pipeline is a linear sequence of steps. Every step represents a single task, which produces and may consume artifacts. The artifacts that tasks share with each other are temporary.
This sequence ends with the finalize
task, which sets the artifacts that will be the pipeline result and removes the temporary artifacts.
Temporary artifacts
The artifacts that the task consumes are specified in inputArtifacts
, and those that it produces and puts into artifact storage are outputArtifacts
.
The first task of every pipeline does not consume artifacts, since it must get files from either the project, asset storage, or another site. The following tasks come first:
extract-project-design
andextract-project-resource
get the project designs or resources.extract-assets
gets an asset from asset storage.download-files
downloads files from the specified URL.
Temporary artifacts exist only until the end of the pipeline.
Final artifacts
The last task in a pipeline is finalize
, in which we specify the resulting artifacts as finalArtifacts
. They will be attached to the project. The remaining artifacts will be considered temporary and removed from the artifact storage.
Skipping tasks by condition
If you want a task to be performed depending on conditions, you can use the skipIf
optional parameters. For example, you may add a trim
option and control it over a custom field value. If it is set, add cut lines to print files. Otherwise, skip this task.
You can use the following optional parameters in the task's parameter dictionary to determine whether a task should be executed:
"skipIf": "<left> <operator> <right>"
"skipIfAny": ["<left> <operator> <right>", "<left> <operator> <right>", "<left> <operator> <right>"]
"skipIfAll": ["<left> <operator> <right>", "<left> <operator> <right>", "<left> <operator> <right>"]
"skipIfNot": "<left> <operator> <right>"
"skipIfNotAny": ["<left> <operator> <right>", "<left> <operator> <right>", "<left> <operator> <right>"]
"skipIfNotAll": ["<left> <operator> <right>", "<left> <operator> <right>", "<left> <operator> <right>"]
These parameters follow specific usage guidelines.
Usage guidelines for skipIf parameters
- None of these parameters can appear more than once in the parameter dictionary.
- Each task checks if these parameters are set before execution.
- Malformatted conditions cause the task to terminate with an error. The correct formatted as
"<left> <operator> <right>"
. - The supported comparison operators are
=
and!=
. - If a condition contains multiple operators, it is considered malformed.
- Both sides of the comparison are treated case-insensitively, and leading/trailing spaces are ignored.
- Empty string values are valid for comparisons.
- Standard argument interpolation rules apply (details here).
Evaluation rules
skipIf
: Skips the task if the condition istrue
.skipIfAny
: Skips the task if any condition in the array istrue
.skipIfAll
: Skips the task if all conditions in the array aretrue
.skipIfNot
: Skips the task if the condition isfalse
.skipIfNotAny
: Skips the task if none of the conditions in the array aretrue
.skipIfNotAll
: Skips the task if not all conditions in the array aretrue
.
Comparison Logic
- Operator
=
: True if the left part matches the right part exactly. - Operator
!=
: True if the left part differs from the right part.
Example: Conditional trim operation
Suppose you want to apply a trim operation to artifacts only if the trim
custom field isn't set to None
. You can use the skipIf
parameter to skip the task if the flag is not set:
{
"tasks": [
...
{
"description": "Apply cut lines",
"type": "combine-with-cut-pattern",
"inputArtifacts": [ ... ],
"parameters": {
"skipIf": "{{project.items.@.fields.trim}} = None",
"cutPatternName": "cut-pattern-1.pdf",
...
},
"outputArtifacts": [ ... ]
},
...
]
}
In this example:
- If
{{project.items.@.fields.trim}}
isNone
, the task is skipped. - If
{{project.items.@.fields.trim}}
has a value other thanNone
, the task executes and applies cut lines to the artifacts.
In the next article, you will learn more details about tasks.