Publishing and Running
Pipelines use drafts and published versions so you can safely edit a workflow without changing earlier executions.
Draft
A newly created pipeline begins as a draft.
Drafts are editable.
You can:
- add blocks;
- remove blocks;
- edit scripts;
- change sources;
- change outputs;
- move blocks;
- add or remove connections.
Drafts cannot be run as published workflows.
Validate and Publish
When the graph is ready, select Validate & Publish.
FlaskTrack checks the pipeline before publishing it.
Common validation problems include:
- a required input is not connected;
- connected port types do not match;
- an input has more than one connection;
- the graph contains a loop;
- a source is incomplete;
- a Python or R block has invalid settings;
- an Output block is incomplete.
If validation fails, correct the draft and publish again.
Published version
A published version is locked.
This means a run always points to the exact graph and scripts that were published.
For example:
Runs created from Version 1 continue to reference Version 1 even while Version 2 is being edited.
Start a run
Open a published version and select Run Pipeline.
The new run begins as:
When a pipeline worker begins processing it:
A finished run becomes:
or:
A run may also be cancelled.
Run parameters
A run can optionally store JSON parameters.
Example:
Parameters must be a JSON object.
The exact way your scripts use parameters depends on how the pipeline is designed.
Creating a new version
To change a published pipeline:
- open the pipeline;
- select Create New Draft;
- edit the new draft;
- publish it when ready.
Example:
Previous runs stay connected to their original version.
Why FlaskTrack locks published versions
Suppose a pipeline ran on Monday and produced a QC result.
On Wednesday, someone changes the Python script.
Without versioning, it would be difficult to know which script actually produced Monday's result.
With pipeline versions:
Monday run
→ Pipeline v3
→ original Python script
Wednesday change
→ Pipeline v4
→ updated Python script
The two are kept separate.