getOperate’s Flow Editor allows you to build flows with a low-code builder.
Workflows are graphs (DAG) that represent the dependencies between steps.
The goal of an orchestrator or workflow engine is to execute the steps on different workers that respect that graph’s dependencies, and pass the required data defined in the steps’ inputs while applying parallelism when possible.
In getOperate, each step is code with a main function in TypeScript, Python, Go, Bash or raw queries to databases.
In getOperate, a workflow is a JSON serializable value in the OpenFlow format that consists of an input spec (similar to Scripts), and a linear sequence of steps, also referred to as modules. Each step consists of either:
This image show all node in system
With the mechanism of input transforms, the input of any step can be the output of any previous step, hence every Flow is actually a Directed Acyclic Graph (DAG) rather than simple sequences. You can refer to the result of any step using its ID.
Every step has an input transform that maps from:
to the different parameters of this specific step.
It does that using a JavaScript expression that operates in a more restricted setting. That JavaScript is using a restricted subset of the standard library and a few more functions which are the following:
flow_input
: the dict/object containing the different parameters of the Flow itself.results.{id}
: the result of the step with given ID.resource(path)
: the Resource at path.variable(path)
: the Variable at path.Using JavaScript in this manner, for every parameter, is extremely flexible and allows getOperate to be extremely generic in the kind of modules it runs.
For each field, one has the option to write the JavaScript directly or to use the quick connect button if the field map one to one with a field of the flow_input
, a field of the previous_result
or of any steps.
From the editor, you can directly get:
A state is an object stored as a resource of the resource type state which is meant to persist across distinct executions of the same Script. This is what enables Flows to watch for changes in most event watching scenarios.
getOperate’s Flow Editor allows you to build flows with a low-code builder.
Workflows are graphs (DAG) that represent the dependencies between steps.
The goal of an orchestrator or workflow engine is to execute the steps on different workers that respect that graph’s dependencies, and pass the required data defined in the steps’ inputs while applying parallelism when possible.
In getOperate, each step is code with a main function in TypeScript, Python, Go, Bash or raw queries to databases.
In getOperate, a workflow is a JSON serializable value in the OpenFlow format that consists of an input spec (similar to Scripts), and a linear sequence of steps, also referred to as modules. Each step consists of either:
This image show all node in system
With the mechanism of input transforms, the input of any step can be the output of any previous step, hence every Flow is actually a Directed Acyclic Graph (DAG) rather than simple sequences. You can refer to the result of any step using its ID.
Every step has an input transform that maps from:
to the different parameters of this specific step.
It does that using a JavaScript expression that operates in a more restricted setting. That JavaScript is using a restricted subset of the standard library and a few more functions which are the following:
flow_input
: the dict/object containing the different parameters of the Flow itself.results.{id}
: the result of the step with given ID.resource(path)
: the Resource at path.variable(path)
: the Variable at path.Using JavaScript in this manner, for every parameter, is extremely flexible and allows getOperate to be extremely generic in the kind of modules it runs.
For each field, one has the option to write the JavaScript directly or to use the quick connect button if the field map one to one with a field of the flow_input
, a field of the previous_result
or of any steps.
From the editor, you can directly get:
A state is an object stored as a resource of the resource type state which is meant to persist across distinct executions of the same Script. This is what enables Flows to watch for changes in most event watching scenarios.