Workflow inputs and outputs#
Workflow inputs and outputs can be provided when executing a workflow
from ewokscore import execute_graph
results = execute_graph(
"/path/to/file.json",
inputs=[{...}, {...}, ...], # list of dictionaries
outputs=[{...}, {...}, ...] # list of dictionaries
)
The dictionary keys for inputs are
name: input variable name
value: input variable value
id (optional): node id
label (optional): used when id is missing
task_identifier (optional): used when id is missing (the node’s task identifier must end with this string)
all (optional): used when id, label and task_identifier are missing (True: all nodes, False: start nodes)
An example to provide the following input arguments to the workflow nodes
node with id task1 receive a=10
node with label My Node receive b=20
all start nodes receive collectionId=1234
all mypackage.mymodule.IntegrationTask tasks receive nbpts_azi=1024
from ewokscore import execute_graph
results = execute_graph(
"/path/to/file.json",
inputs=[{"id": "task1", "name":"a", "value": 10},
{"label": "My Node", "name":"b", "value": 20},
{"name":"collectionId", "value": 1234},
{"task_identifier": "IntegrationTask", "name":"nbpts_azi", "value": 1024}]
)
The dictionary keys for outputs are
name (optional): output variable name (all outputs when missing)
new_name (optional): optional renaming when name is defined (can be used avoid naming collisions)
id (optional): node id
label (optional): used when id is missing
task_identifier (optional): used when id is missing (the node’s task identifier must end with this string)
all (optional): used when id, label and task_identifier are missing (True: all nodes, False: end nodes)
When no outputs are provided, the output variables of all end nodes are returned
from ewokscore import execute_graph
results = execute_graph(
"/path/to/file.json",
outputs=[{"all": False}]
)
An example where we use the return value of two tasks as the workflow output
from ewokscore import execute_graph
results = execute_graph(
"/path/to/file.json",
inputs=[{"id": "task1", "name": "return_value", "new_name": "return_value1"},
{"id": "task2", "name": "return_value", "new_name": "return_value2"}]
)
assert set(results) == {"return_value1", "return_value2"}