@echelon-foundry/design-system 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/contracts/diagram-presentation.json +109 -0
- package/contracts/workflow-capabilities.json +25 -0
- package/dist/all.css +175 -3
- package/dist/build-metrics.json +32 -4
- package/dist/components.css +173 -3
- package/dist/foundations.css +2 -0
- package/dist/marketing/forma-all.css +176 -4
- package/dist/marketing/forma-echelon-marketing.css +3 -1
- package/dist/marketing/forma-marketing-theme-echelon.css +1 -1
- package/dist/marketing/forma-marketing.css +3 -1
- package/dist/marketing/forma-marketing.manifest.json +9 -9
- package/dist/marketing/forma-marketing.sha256 +4 -4
- package/dist/patterns/bounded-overflow.html +9 -0
- package/dist/patterns/button.html +5 -0
- package/dist/patterns/container.html +6 -0
- package/dist/patterns/date-time-field.html +5 -0
- package/dist/patterns/grid.html +5 -0
- package/dist/patterns/image-choice.html +2 -2
- package/dist/patterns/key-value-list.html +5 -0
- package/dist/patterns/section.html +4 -0
- package/dist/patterns/skip-link.html +6 -0
- package/dist/patterns/split.html +12 -0
- package/dist/patterns/surface.html +4 -0
- package/dist/patterns/text-field.html +5 -0
- package/dist/patterns/text-roles.html +7 -0
- package/dist/patterns/textarea.html +5 -0
- package/dist/patterns/visually-hidden.html +4 -0
- package/docs/MARKETING-SITES.md +1 -1
- package/docs/workflow/EMBEDDING.md +148 -0
- package/docs/workflow/EXTERNAL-PRODUCERS.md +34 -0
- package/docs/workflow/FORMAT.md +196 -0
- package/docs/workflow/RENDERING.md +90 -0
- package/docs/workflow/REQUIREMENTS-AUDIT-2026-10-01.md +55 -0
- package/docs/workflow/VALIDATION.md +91 -0
- package/examples/workflows/fixtures.json +101 -0
- package/examples/workflows/forma/workflows/accessible.forma-workflow.json +90 -0
- package/examples/workflows/forma/workflows/branching.forma-workflow.json +91 -0
- package/examples/workflows/forma/workflows/branded.forma-workflow.json +85 -0
- package/examples/workflows/forma/workflows/color-mapping.forma-workflow.json +111 -0
- package/examples/workflows/forma/workflows/colored.forma-workflow.json +131 -0
- package/examples/workflows/forma/workflows/edge-metadata.forma-workflow.json +66 -0
- package/examples/workflows/forma/workflows/embedded-edit.forma-workflow.json +117 -0
- package/examples/workflows/forma/workflows/embedded-view.forma-workflow.json +93 -0
- package/examples/workflows/forma/workflows/extensions.forma-workflow.json +90 -0
- package/examples/workflows/forma/workflows/groups.forma-workflow.json +89 -0
- package/examples/workflows/forma/workflows/interactive-export.forma-workflow.json +62 -0
- package/examples/workflows/forma/workflows/minimal.forma-workflow.json +17 -0
- package/examples/workflows/forma/workflows/mobile.forma-workflow.json +80 -0
- package/examples/workflows/forma/workflows/multi-step.forma-workflow.json +82 -0
- package/examples/workflows/forma/workflows/no-layout.forma-workflow.json +90 -0
- package/examples/workflows/forma/workflows/node-metadata.forma-workflow.json +80 -0
- package/examples/workflows/forma/workflows/runtime-ports.forma-workflow.json +118 -0
- package/examples/workflows/forma/workflows/static-export.forma-workflow.json +77 -0
- package/examples/workflows/forma/workflows/swimlanes.forma-workflow.json +130 -0
- package/figma/component-contracts.json +140 -0
- package/package.json +28 -9
- package/patterns/bounded-overflow.html +9 -0
- package/patterns/button.html +5 -0
- package/patterns/container.html +6 -0
- package/patterns/date-time-field.html +5 -0
- package/patterns/grid.html +5 -0
- package/patterns/image-choice.html +2 -2
- package/patterns/key-value-list.html +5 -0
- package/patterns/section.html +4 -0
- package/patterns/skip-link.html +6 -0
- package/patterns/split.html +12 -0
- package/patterns/surface.html +4 -0
- package/patterns/text-field.html +5 -0
- package/patterns/text-roles.html +7 -0
- package/patterns/textarea.html +5 -0
- package/patterns/visually-hidden.html +4 -0
- package/schemas/workflow/1.0/forma-workflow.schema.json +1045 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "edge-metadata",
|
|
6
|
+
"title": "Data handoff",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "instrument",
|
|
13
|
+
"kind": "data",
|
|
14
|
+
"label": "Instrument data"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "pipeline",
|
|
18
|
+
"kind": "task",
|
|
19
|
+
"label": "Processing pipeline"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "archive",
|
|
23
|
+
"kind": "external",
|
|
24
|
+
"label": "Public archive"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"edges": [
|
|
28
|
+
{
|
|
29
|
+
"id": "d1",
|
|
30
|
+
"source": {
|
|
31
|
+
"node": "instrument"
|
|
32
|
+
},
|
|
33
|
+
"target": {
|
|
34
|
+
"node": "pipeline"
|
|
35
|
+
},
|
|
36
|
+
"kind": "data",
|
|
37
|
+
"label": "Raw frames",
|
|
38
|
+
"metadata": {
|
|
39
|
+
"format": "FITS",
|
|
40
|
+
"rateMbps": 12.5,
|
|
41
|
+
"encrypted": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "d2",
|
|
46
|
+
"source": {
|
|
47
|
+
"node": "pipeline"
|
|
48
|
+
},
|
|
49
|
+
"target": {
|
|
50
|
+
"node": "archive"
|
|
51
|
+
},
|
|
52
|
+
"kind": "message",
|
|
53
|
+
"label": "Calibrated products",
|
|
54
|
+
"metadata": {
|
|
55
|
+
"latencyHours": 48,
|
|
56
|
+
"schema": {
|
|
57
|
+
"name": "products",
|
|
58
|
+
"version": "2.1"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"status": {
|
|
62
|
+
"state": "waiting"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "embedded-edit",
|
|
6
|
+
"title": "Experiment proposal",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"metadata": {
|
|
11
|
+
"lab": "Microgravity research"
|
|
12
|
+
},
|
|
13
|
+
"nodes": [
|
|
14
|
+
{
|
|
15
|
+
"id": "draft",
|
|
16
|
+
"kind": "task",
|
|
17
|
+
"label": "Draft proposal",
|
|
18
|
+
"ports": [
|
|
19
|
+
{
|
|
20
|
+
"id": "out",
|
|
21
|
+
"side": "right",
|
|
22
|
+
"direction": "out"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "peer",
|
|
28
|
+
"kind": "task",
|
|
29
|
+
"label": "Peer review",
|
|
30
|
+
"ports": [
|
|
31
|
+
{
|
|
32
|
+
"id": "in",
|
|
33
|
+
"side": "left",
|
|
34
|
+
"direction": "in"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "accepted",
|
|
38
|
+
"side": "right",
|
|
39
|
+
"direction": "out",
|
|
40
|
+
"label": "Accepted"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "revise",
|
|
44
|
+
"side": "bottom",
|
|
45
|
+
"direction": "out",
|
|
46
|
+
"label": "Revise"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"interaction": {
|
|
50
|
+
"action": "command",
|
|
51
|
+
"command": "com.example.lab:open-review",
|
|
52
|
+
"label": "Open review"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "schedule",
|
|
57
|
+
"kind": "end",
|
|
58
|
+
"label": "Schedule on station",
|
|
59
|
+
"references": [
|
|
60
|
+
{
|
|
61
|
+
"id": "slot",
|
|
62
|
+
"system": "com.example.lab",
|
|
63
|
+
"type": "Station slot",
|
|
64
|
+
"key": "ISS-INC-74-12"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"interaction": {
|
|
68
|
+
"action": "navigate",
|
|
69
|
+
"target": {
|
|
70
|
+
"reference": "slot"
|
|
71
|
+
},
|
|
72
|
+
"label": "Open slot"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"edges": [
|
|
77
|
+
{
|
|
78
|
+
"id": "p1",
|
|
79
|
+
"source": {
|
|
80
|
+
"node": "draft",
|
|
81
|
+
"port": "out"
|
|
82
|
+
},
|
|
83
|
+
"target": {
|
|
84
|
+
"node": "peer",
|
|
85
|
+
"port": "in"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "p2",
|
|
90
|
+
"source": {
|
|
91
|
+
"node": "peer",
|
|
92
|
+
"port": "accepted"
|
|
93
|
+
},
|
|
94
|
+
"target": {
|
|
95
|
+
"node": "schedule"
|
|
96
|
+
},
|
|
97
|
+
"label": "Accepted"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "p3",
|
|
101
|
+
"source": {
|
|
102
|
+
"node": "peer",
|
|
103
|
+
"port": "revise"
|
|
104
|
+
},
|
|
105
|
+
"target": {
|
|
106
|
+
"node": "draft"
|
|
107
|
+
},
|
|
108
|
+
"label": "Revise",
|
|
109
|
+
"line": "dashed"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"extensions": {
|
|
113
|
+
"com.example.lab": {
|
|
114
|
+
"proposalId": "MGR-77"
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "embedded-view",
|
|
6
|
+
"title": "Sample return",
|
|
7
|
+
"description": "Runtime state projected onto a read-only workflow.",
|
|
8
|
+
"forma": {
|
|
9
|
+
"version": "0.4.0"
|
|
10
|
+
},
|
|
11
|
+
"nodes": [
|
|
12
|
+
{
|
|
13
|
+
"id": "collect",
|
|
14
|
+
"kind": "start",
|
|
15
|
+
"label": "Collect sample",
|
|
16
|
+
"status": {
|
|
17
|
+
"state": "complete"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "seal",
|
|
22
|
+
"kind": "task",
|
|
23
|
+
"label": "Seal container",
|
|
24
|
+
"status": {
|
|
25
|
+
"state": "complete"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "ascend",
|
|
30
|
+
"kind": "task",
|
|
31
|
+
"label": "Ascent to orbit",
|
|
32
|
+
"status": {
|
|
33
|
+
"state": "active",
|
|
34
|
+
"label": "In progress",
|
|
35
|
+
"detail": "Burn 2 of 3"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "transfer",
|
|
40
|
+
"kind": "task",
|
|
41
|
+
"label": "Transfer to return vehicle",
|
|
42
|
+
"status": {
|
|
43
|
+
"state": "pending"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "land",
|
|
48
|
+
"kind": "end",
|
|
49
|
+
"label": "Earth landing",
|
|
50
|
+
"status": {
|
|
51
|
+
"state": "pending"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"edges": [
|
|
56
|
+
{
|
|
57
|
+
"id": "v1",
|
|
58
|
+
"source": {
|
|
59
|
+
"node": "collect"
|
|
60
|
+
},
|
|
61
|
+
"target": {
|
|
62
|
+
"node": "seal"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "v2",
|
|
67
|
+
"source": {
|
|
68
|
+
"node": "seal"
|
|
69
|
+
},
|
|
70
|
+
"target": {
|
|
71
|
+
"node": "ascend"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "v3",
|
|
76
|
+
"source": {
|
|
77
|
+
"node": "ascend"
|
|
78
|
+
},
|
|
79
|
+
"target": {
|
|
80
|
+
"node": "transfer"
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "v4",
|
|
85
|
+
"source": {
|
|
86
|
+
"node": "transfer"
|
|
87
|
+
},
|
|
88
|
+
"target": {
|
|
89
|
+
"node": "land"
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "extensions",
|
|
6
|
+
"title": "Range safety coordination",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "request",
|
|
13
|
+
"kind": "start",
|
|
14
|
+
"label": "Range request",
|
|
15
|
+
"extensions": {
|
|
16
|
+
"gov.nasa.example.range": {
|
|
17
|
+
"rangeId": "ER-1",
|
|
18
|
+
"window": {
|
|
19
|
+
"open": "2026-11-02T10:00:00Z",
|
|
20
|
+
"close": "2026-11-02T14:00:00Z"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "approve",
|
|
27
|
+
"kind": "task",
|
|
28
|
+
"label": "Range approval",
|
|
29
|
+
"extensions": {
|
|
30
|
+
"com.example.scheduler": {
|
|
31
|
+
"priority": 2,
|
|
32
|
+
"tags": [
|
|
33
|
+
"range",
|
|
34
|
+
"safety"
|
|
35
|
+
],
|
|
36
|
+
"nested": {
|
|
37
|
+
"deep": {
|
|
38
|
+
"value": [
|
|
39
|
+
1,
|
|
40
|
+
2,
|
|
41
|
+
{
|
|
42
|
+
"x": true
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "done",
|
|
52
|
+
"kind": "end",
|
|
53
|
+
"label": "Range confirmed"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"edges": [
|
|
57
|
+
{
|
|
58
|
+
"id": "x1",
|
|
59
|
+
"source": {
|
|
60
|
+
"node": "request"
|
|
61
|
+
},
|
|
62
|
+
"target": {
|
|
63
|
+
"node": "approve"
|
|
64
|
+
},
|
|
65
|
+
"extensions": {
|
|
66
|
+
"com.example.scheduler": {
|
|
67
|
+
"lagMinutes": 15
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "x2",
|
|
73
|
+
"source": {
|
|
74
|
+
"node": "approve"
|
|
75
|
+
},
|
|
76
|
+
"target": {
|
|
77
|
+
"node": "done"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"extensions": {
|
|
82
|
+
"com.example.scheduler": {
|
|
83
|
+
"calendar": "range-ops",
|
|
84
|
+
"version": "7.3.1"
|
|
85
|
+
},
|
|
86
|
+
"org.example.audit": {
|
|
87
|
+
"retainDays": 3650
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "groups",
|
|
6
|
+
"title": "Ground systems checkout",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "power",
|
|
13
|
+
"kind": "task",
|
|
14
|
+
"label": "Power-on test"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "comms",
|
|
18
|
+
"kind": "task",
|
|
19
|
+
"label": "Communications check"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "fuel",
|
|
23
|
+
"kind": "task",
|
|
24
|
+
"label": "Propellant loading rehearsal"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "report",
|
|
28
|
+
"kind": "end",
|
|
29
|
+
"label": "Checkout report"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"edges": [
|
|
33
|
+
{
|
|
34
|
+
"id": "g1",
|
|
35
|
+
"source": {
|
|
36
|
+
"node": "power"
|
|
37
|
+
},
|
|
38
|
+
"target": {
|
|
39
|
+
"node": "comms"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "g2",
|
|
44
|
+
"source": {
|
|
45
|
+
"node": "comms"
|
|
46
|
+
},
|
|
47
|
+
"target": {
|
|
48
|
+
"node": "report"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "g3",
|
|
53
|
+
"source": {
|
|
54
|
+
"node": "fuel"
|
|
55
|
+
},
|
|
56
|
+
"target": {
|
|
57
|
+
"node": "report"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
],
|
|
61
|
+
"groups": [
|
|
62
|
+
{
|
|
63
|
+
"id": "avionics",
|
|
64
|
+
"kind": "container",
|
|
65
|
+
"label": "Avionics",
|
|
66
|
+
"members": [
|
|
67
|
+
"power",
|
|
68
|
+
"comms"
|
|
69
|
+
],
|
|
70
|
+
"parent": "vehicle"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "propulsion",
|
|
74
|
+
"kind": "group",
|
|
75
|
+
"label": "Propulsion",
|
|
76
|
+
"members": [
|
|
77
|
+
"fuel"
|
|
78
|
+
],
|
|
79
|
+
"line": "dashed",
|
|
80
|
+
"parent": "vehicle"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "vehicle",
|
|
84
|
+
"kind": "group",
|
|
85
|
+
"label": "Vehicle systems",
|
|
86
|
+
"description": "Contains the avionics and propulsion groups."
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "interactive-export",
|
|
6
|
+
"title": "Interactive export reference",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "a",
|
|
13
|
+
"kind": "start",
|
|
14
|
+
"label": "Request",
|
|
15
|
+
"interaction": {
|
|
16
|
+
"action": "inspect"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "b",
|
|
21
|
+
"kind": "task",
|
|
22
|
+
"label": "Review",
|
|
23
|
+
"interaction": {
|
|
24
|
+
"action": "command",
|
|
25
|
+
"command": "com.example.host:approve",
|
|
26
|
+
"label": "Approve"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "c",
|
|
31
|
+
"kind": "end",
|
|
32
|
+
"label": "Done",
|
|
33
|
+
"interaction": {
|
|
34
|
+
"action": "navigate",
|
|
35
|
+
"target": {
|
|
36
|
+
"url": "https://example.org/done"
|
|
37
|
+
},
|
|
38
|
+
"label": "Open record"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"edges": [
|
|
43
|
+
{
|
|
44
|
+
"id": "i1",
|
|
45
|
+
"source": {
|
|
46
|
+
"node": "a"
|
|
47
|
+
},
|
|
48
|
+
"target": {
|
|
49
|
+
"node": "b"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "i2",
|
|
54
|
+
"source": {
|
|
55
|
+
"node": "b"
|
|
56
|
+
},
|
|
57
|
+
"target": {
|
|
58
|
+
"node": "c"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "minimal",
|
|
6
|
+
"title": "Minimal workflow",
|
|
7
|
+
"forma": {
|
|
8
|
+
"version": "0.4.0"
|
|
9
|
+
},
|
|
10
|
+
"nodes": [
|
|
11
|
+
{
|
|
12
|
+
"id": "start",
|
|
13
|
+
"kind": "start",
|
|
14
|
+
"label": "Start"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "mobile",
|
|
6
|
+
"title": "Countdown checklist",
|
|
7
|
+
"description": "A narrow, top-to-bottom workflow intended for phone screens.",
|
|
8
|
+
"forma": {
|
|
9
|
+
"version": "0.4.0"
|
|
10
|
+
},
|
|
11
|
+
"nodes": [
|
|
12
|
+
{
|
|
13
|
+
"id": "t60",
|
|
14
|
+
"kind": "task",
|
|
15
|
+
"label": "T-60 minutes: crew strapped in",
|
|
16
|
+
"layout": {
|
|
17
|
+
"size": "compact"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "t30",
|
|
22
|
+
"kind": "task",
|
|
23
|
+
"label": "T-30 minutes: hatch closed",
|
|
24
|
+
"layout": {
|
|
25
|
+
"size": "compact"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "t10",
|
|
30
|
+
"kind": "task",
|
|
31
|
+
"label": "T-10 minutes: terminal count",
|
|
32
|
+
"layout": {
|
|
33
|
+
"size": "compact"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "t0",
|
|
38
|
+
"kind": "end",
|
|
39
|
+
"label": "Liftoff",
|
|
40
|
+
"layout": {
|
|
41
|
+
"size": "compact"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"edges": [
|
|
46
|
+
{
|
|
47
|
+
"id": "t1",
|
|
48
|
+
"source": {
|
|
49
|
+
"node": "t60"
|
|
50
|
+
},
|
|
51
|
+
"target": {
|
|
52
|
+
"node": "t30"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "t2",
|
|
57
|
+
"source": {
|
|
58
|
+
"node": "t30"
|
|
59
|
+
},
|
|
60
|
+
"target": {
|
|
61
|
+
"node": "t10"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "t3",
|
|
66
|
+
"source": {
|
|
67
|
+
"node": "t10"
|
|
68
|
+
},
|
|
69
|
+
"target": {
|
|
70
|
+
"node": "t0"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"layout": {
|
|
75
|
+
"direction": "down"
|
|
76
|
+
},
|
|
77
|
+
"presentation": {
|
|
78
|
+
"density": "compact"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://forma.echelonfoundry.com/schemas/workflow/1.0/forma-workflow.schema.json",
|
|
3
|
+
"format": "forma-workflow",
|
|
4
|
+
"formatVersion": "1.0.0",
|
|
5
|
+
"id": "multi-step",
|
|
6
|
+
"title": "Payload integration",
|
|
7
|
+
"description": "Steps that take a payload from delivery to launch-site shipment.",
|
|
8
|
+
"forma": {
|
|
9
|
+
"version": "0.4.0"
|
|
10
|
+
},
|
|
11
|
+
"nodes": [
|
|
12
|
+
{
|
|
13
|
+
"id": "receive",
|
|
14
|
+
"kind": "start",
|
|
15
|
+
"label": "Payload arrives"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "inspect",
|
|
19
|
+
"kind": "task",
|
|
20
|
+
"label": "Receiving inspection"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "integrate",
|
|
24
|
+
"kind": "task",
|
|
25
|
+
"label": "Mechanical integration"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "test",
|
|
29
|
+
"kind": "task",
|
|
30
|
+
"label": "Functional test"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "ship",
|
|
34
|
+
"kind": "end",
|
|
35
|
+
"label": "Ready for launch site"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"edges": [
|
|
39
|
+
{
|
|
40
|
+
"id": "e1",
|
|
41
|
+
"source": {
|
|
42
|
+
"node": "receive"
|
|
43
|
+
},
|
|
44
|
+
"target": {
|
|
45
|
+
"node": "inspect"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "e2",
|
|
50
|
+
"source": {
|
|
51
|
+
"node": "inspect"
|
|
52
|
+
},
|
|
53
|
+
"target": {
|
|
54
|
+
"node": "integrate"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "e3",
|
|
59
|
+
"source": {
|
|
60
|
+
"node": "integrate"
|
|
61
|
+
},
|
|
62
|
+
"target": {
|
|
63
|
+
"node": "test"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "e4",
|
|
68
|
+
"source": {
|
|
69
|
+
"node": "test"
|
|
70
|
+
},
|
|
71
|
+
"target": {
|
|
72
|
+
"node": "ship"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"provenance": {
|
|
77
|
+
"producer": {
|
|
78
|
+
"name": "Forma reference fixtures",
|
|
79
|
+
"version": "1.0.0"
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|