You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Workflow.yml
-170Lines changed: 0 additions & 170 deletions
Original file line number
Diff line number
Diff line change
@@ -34,182 +34,12 @@ $graph:
34
34
- {$include: intro.md}
35
35
36
36
- |
37
-
## Introduction to the CWL Workflow standard v1.2.1
38
-
39
-
There are no new features nor behavior changes in CWL v1.2.1
40
-
as compared to CWL v1.2.0. v1.2.1 fixes only typos, adds clarifications,
41
-
and adds additional conformance tests. Some changes to the schema defining
42
-
CWL have been made to aid the auto-generation of libraries for the reading
43
-
and writing of CWL documents.
44
-
45
-
Documents should continue to specify `cwlVersion: v1.2`. However, when
46
-
reporting results from running the CWL conformance tests, please do report
47
-
all three components; for example "99% of CWL v1.2.0 required tests" or
48
-
"100% of CWL v1.2.1 required tests".
49
-
50
-
See also the [CommandLineTool v1.2.1 changelog](CommandLineTool.html#Changelog_for_v1.2.1)
51
-
and the [Schema-Salad v1.2.1 changelog](SchemaSalad.html#Changelog_for_v1.2.1).
52
-
53
-
## Changelog for v1.2.1
54
-
55
-
* CWL has been assigned an official IANA Media Type of [`application/cwl`](https://www.iana.org/assignments/media-types/application/cwl)
56
-
for either JSON or YAML format. For JSON formatted CWL documents, [`application/cwl+json`](https://www.iana.org/assignments/media-types/application/cwl+json)
57
-
has also been assigned and can be used. For specifying a YAML formatted
58
-
CWL document, one can use `application/cwl+yaml` but that is not an official
59
-
IANA media-type yet; as of 2023-07-23 the `+yaml` suffix has yet to be approved.
60
-
The above has been documented in the [Syntax](#Syntax) section.
61
-
* There is now an unofficial [JSON Schema for CWL documents](https://github.com/common-workflow-language/cwl-v1.2/blob/1.2.1_proposed/json-schema/cwl.yaml),
62
-
donated by Francis Charette-Migneault. This schema captures much, but not
63
-
all, of the potential complexity of CWL documents. It was created for
64
-
the [draft](https://docs.ogc.org/DRAFTS/20-044.html)
65
-
[OGC API - Processes - Part 2: Deploy, Replace, Undeploy](http://www.opengis.net/doc/IS/ogcapi-processes-2/1.0)
66
-
standard.
67
-
To support the testing of this unofficial JSON Schema for CWL, some of
68
-
the `should_fail: true` tests have had the label `json_schema_invalid`
69
-
added.
70
-
* For consistency, all references to `URI`s have been replaced with `IRI`s
71
-
(Internationalized Resource Identifiers).
72
-
* The [`WorkflowStep.run`](#WorkflowStep) field description now explicitly
73
-
states that it can be either a string referencing an external document
74
-
or an embedded Process. This was previously only stated indirectly.
75
-
* The `outputSource` field of [`WorkflowOutputParameter`](#WorkflowOutputParameter)
76
-
now explicitly states that workflow inputs can be referenced. The
77
-
mandatory conformance test `output_reference_workflow_input` has been
78
-
added to confirm this.
79
-
* The example list of [process requirements](#Requirements_and_hints) that
80
-
can be inherited from a parent `Workflow` by a `CommandLineTool` was
81
-
incomplete in CWL v1.2; `LoadListingRequirement`, `WorkReuse`,
82
-
`NetworkAccess`, `InplaceUpdateRequirement`, `ToolTimeLimit` are also
83
-
valid.
84
-
* The [BNF grammar description of CWL Parameter References](#Parameter_references)
85
-
has been reformatted so that symbols get `code formatting`.
86
-
* In CWL v1.2, the [outputs of `ExpressionTool`s](#ExpressionToolOutputParameter)
87
-
are never type-checked due to a long-standing bug in the CWL reference
88
-
implementation. This has been made explicit along with the plan to fix
89
-
this oversight in CWL v1.3.
90
-
* The purpose and valid circumstances for using `Workflow.id`, `ExpressionTool.id`,
91
-
or `Operation.id` have been made more explicit: It is a unique identifier
92
-
for that Process; Only useful for when those are in a `$graph`. This `id`
93
-
value should not be exposed to users in graphical or terminal user interfaces.
94
-
95
-
### Clarifications to the schema in CWL v1.2.1 to aid autogenerated libraries
96
-
Many CWL parsing/generating libraries are autogenerated from the official schema
97
-
for various programming languages by using [`schema-salad --codegen`](https://schema-salad.readthedocs.io/en/latest/#codegen-examples).
98
-
99
-
In CWL v1.2.1 we made many clarifications to the schema to enable faster
100
-
parsing; or to produce better results for end users. These changes do not change
101
-
the CWL syntax or its meaning; we are just now modeling it better.
102
-
103
-
* The schema for `Requirement`s has changed to enable faster parsing by
104
-
autogenerated libraries. The `class` field is now a static enum with a
105
-
single permissible value instead of a generic string (for example:
106
-
`class: SubworkflowFeatureRequirement` for a `SubworkflowFeatureRequirement` hint or requirement.)
107
-
This allows for autogenerated CWL parsers to recognize any requirement
108
-
immediately instead of having to check for matching field names and
109
-
valid values, as was done previously.
110
-
* Likewise, the schema for `Workflow`, `ExpressionTool`, and `Operation`
111
-
has also been changed to enable faster parsing; the `class` field is now a
112
-
static enum with a single permissible value (`class: Workflow`,
113
-
`class: ExpressionTool`, `class: Operation`) instead of a generic string.
114
-
* The schema for the `hints` field of `Workflow`, `ExpressionTool`, and `Operation`
115
-
has been expanded from: `Any[]?` to `["null", { type: array, items: [ ProcessRequirement, Any] } ]`.
116
-
This allows autogenerated CWL parsers to deserialize any of the standard
117
-
CWL hints instead of forcing the users of those parsers to convert the
118
-
unserialized hints to normal objects themselves.
119
-
* The schema for [`WorkflowOutputParameter.outputSource`](#WorkflowOutputParameter)
120
-
had the wrong [`refScope`](SchemaSalad.html#JsonldPredicate) of `0` instead
121
-
of `1`; This will correctly remove the `id` of the workflow itself when
122
-
searching for the source of this output.
123
-
* Everywhere the schema allows a value of type `long` we also explicitly
124
-
allow a value of type `int`: [`File.size`](#File), [`ToolTimeLimit.timelimt`](#ToolTimeLimit).
125
-
By JSON rules this is implicit, but by making it explicit we aid
126
-
autogenerated CWL libraries especially in languages such as Java.
127
-
* The schema for the `default` field of [WorkflowInputParameter](#WorkflowInputParameter),
128
-
[WorkflowStepInput](#WorkflowStepInput), and [OperationInputParameter](#WorkflowStepInput)
129
-
has been expanded from `Any?` to `["null", File, Directory, Any]` so that
130
-
autogenerated CWL libraries will deserialize any `File` or `Directory`
131
-
objects automatically for the user.
132
-
* The schema for the `hints` field of `Workflow`, `ExpressionTool`, and `Operation`
133
-
has been expanded from: `Any[]?` to `["null", { type: array, items: [ ProcessRequirement, Any] } ]`.
134
-
This allows autogenerated CWL parsers to deserialize any of the standard
135
-
CWL hints instead of forcing the users of those parsers to convert the
136
-
unserialized hints to normal objects themselves.
137
-
138
-
### Updated Conformance Tests for v1.2.1
139
-
* Conformance tests are now referred to by their textual identifiers (`id`).
140
-
Previously this was the `label` field. Tests without a `label`/`id` have
0 commit comments