Workflows: Structured Representation¶
In order to organize and store the information about workflows, we employ the Exabyte Data Convention, as explained elsewhere in this documentation.
In the expandable section below, the user can find the JSON representation of a workflow with a corresponding example. It contains a series of subworkflows, each of which contains a number of units in turn.
Expand to view
{
"$id": "workflow",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "workflow schema",
"type": "object",
"allOf": [
{
"$ref": "workflow/base.json"
}
],
"properties": {
"subworkflows": {
"description": "Array of subworkflows. Subworkflow can be an instance of workflow to allow for nesting",
"type": "array",
"items": {
"allOf": [
{
"$ref": "workflow/subworkflow.json"
}
]
}
},
"units": {
"description": "Contains the Units of the Workflow",
"type": "array",
"items": {
"$ref": "workflow/unit.json"
}
}
},
"required": [
"units",
"subworkflows"
]
}
{
"_id": "FPjAaKfuYAL7tiHbm",
"createdAt": "2018-11-19 06:41:46.877Z",
"creator": {
"...": "include(system/creator.json)"
},
"exabyteId": "qKtTzu9utCo6ac4n7",
"hash": "f4fd707d2e47c15f8d786cf159040954",
"isDefault": true,
"name": "workflow",
"owner": {
"...": "include(system/owner.json)"
},
"properties": [
"band_structure"
],
"schemaVersion": "0.2.0",
"slug": "workflow",
"subworkflows": [
{
"...": "include(workflow/subworkflow.json)"
}
],
"tags": [
"workflow"
],
"units": [
{
"_id": "LCthJ6E2QabYCZqf4",
"flowchartId": "05c362dc27ff1bb98d16fd60",
"type": "subworkflow",
"name": "subworkflow unit"
}
]
}
There are a few notable points to emphasize from the example above.
Nested data¶
We use top-level workflow as a "container", and separate the details of each individual section of calculation inside a subworkflow.
Templating¶
We allow for using templates inside the input to individual units. In this way, we can decouple material-specific information from the workflow-specific one. More explanation can be found inside the units documentation page.
Properties¶
The "Properties" section serves as an aggregator of all the properties that are extracted at the workflow or subworkflow levels. The "results" key serves the same purpose, but for the case of units.