Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/config/wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ implementer
implementers
implementor
implementors
initialworkdir
initialworkdirrequirement
initialworkdirrequirements
inlinejavascriptrequirement
Expand Down
112 changes: 111 additions & 1 deletion CommandLineTool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,20 @@ $graph:
## Changelog for v1.3.0-dev1

See also the [CWL Workflow Description, v1.3.0-dev1 changelog](Workflow.html#Changelog).

* New field `networkAccess` on
[CommandLineTool](#CommandLineTool). This supersedes the
[NetworkAccess](#NetworkAccess) requirement, which is now
deprecated.
* New field `envDef` on [CommandLineTool](#CommandLineTool).
This supersedes the [EnvVarRequirement](#EnvVarRequirement)
requirement, which is now deprecated.
* New field `initialWorkDir` on
[CommandLineTool](#CommandLineTool). This supersedes the
[InitialWorkDirRequirement](#InitialWorkDirRequirement)
requirement, which is now deprecated.


For other changes since CWL v1.0, see the
[CWL Command Line Tool Description, v1.1 changelog](https://www.commonwl.org/v1.1/CommandLineTool.html#Changelog)
and
Expand Down Expand Up @@ -711,6 +725,94 @@ $graph:

If not specified, all exit codes except 0 are considered permanent failure.

- name: networkAccess
type: ['null', boolean, Expression]
jsonldPredicate: "cwl:NetworkAccess/networkAccess"
doc: |
Indicate whether a process requires outgoing IPv4/IPv6 network
access. Choice of IPv4 or IPv6 is implementation and site
specific, correct tools must support both.

If `networkAccess` is false or not specified, tools must not
assume network access, except for localhost (the loopback device).

If `networkAccess` is true, the tool must be able to make outgoing
connections to network resources. Resources may be on a private
subnet or the public Internet. However, implementations and sites
may apply their own security policies to restrict what is
accessible by the tool.

Enabling network access does not imply a publicly routable IP
address or the ability to accept inbound connections.

- name: initialWorkDir
type:
- 'null'
- Expression
- type: array
items:
- "null"
- Dirent
- Expression
- File
- Directory
- type: array
items:
- File
- Directory
doc: |
Define a list of files and subdirectories that must be staged
by the workflow platform prior to executing the command line
tool. Normally this is the designated output directory, but
when containers are used, it is possible to stage to other
locations, see discussion below.

Return type of each expression must validate as `["null",
File, Directory, Dirent, {type: array, items: [File,
Directory]}]`.

Each `File` or `Directory` that is returned by an Expression
must be added to the designated output directory prior to
executing the tool.

Each `Dirent` record that is listed or returned by an
expression specifies a file to be created or staged in the
designated output directory prior to executing the tool.

Expressions may return null, in which case they have no effect.

Files or Directories which are listed in the input parameters
and appear in `initialWorkDir` must have their `path` set to
their staged location. If the same File or Directory appears
more than once in the `initialWorkDir`, the implementation
must choose exactly one value for `path`; how this value is
chosen is undefined.

Normally files are staged within the designated output
directory. However, when running inside containers, files may
be staged at arbitrary locations, see discussion for
[`Dirent.entryname`](#Dirent). Together with
`DockerRequirement.dockerOutputDirectory` it is possible to
control the locations of both input and output files when
running in containers.

Files listed in `inputs` that are not listed in
`initialWorkDir` shall be staged to an arbitrary location on
the file system. This location must be outside the designated
output directory.

- name: envDef
type: EnvironmentDef[]?
doc: |
Define a list of environment variables which will be set in
the execution environment of the tool. See
[EnvironmentDef](#EnvironmentDef) for details.
jsonldPredicate:
"_id": "cwl:EnvVarRequirement/envDef"
mapSubject: envName
mapPredicate: envValue



- type: record
name: DockerRequirement
Expand Down Expand Up @@ -991,7 +1093,9 @@ $graph:
- name: InitialWorkDirRequirement
type: record
extends: ProcessRequirement
doc:
doc: |
**Deprecated as of v1.3** Prefer [CommandLineTool.initialWorkDir](#CommandLineTool)

Define a list of files and subdirectories that must be staged by
the workflow platform prior to executing the command line tool.

Expand Down Expand Up @@ -1059,6 +1163,8 @@ $graph:
type: record
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** Prefer [CommandLineTool.envDef](#CommandLineTool)

Define a list of environment variables which will be set in the
execution environment of the tool. See `EnvironmentDef` for details.
fields:
Expand All @@ -1076,6 +1182,7 @@ $graph:
type: EnvironmentDef[]
doc: The list of environment variables.
jsonldPredicate:
"_id": "cwl:EnvVarRequirement/envDef"
mapSubject: envName
mapPredicate: envValue

Expand Down Expand Up @@ -1291,6 +1398,8 @@ $graph:
name: NetworkAccess
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** Prefer [CommandLineTool.networkAccess](#CommandLineTool)

Indicate whether a process requires outgoing IPv4/IPv6 network
access. Choice of IPv4 or IPv6 is implementation and site
specific, correct tools must support both.
Expand Down Expand Up @@ -1320,6 +1429,7 @@ $graph:
"_type": "@vocab"
- name: networkAccess
type: [boolean, Expression]
jsonldPredicate: "cwl:NetworkAccess/networkAccess"

- name: InplaceUpdateRequirement
type: record
Expand Down
54 changes: 31 additions & 23 deletions Workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,17 @@ $graph:
feature to manage loop output data history.

See also the [CWL Command Line Tool Description, v1.3.0-dev1 changelog](CommandLineTool.html#Changelog).

* Workflow steps may now specify iterative execution. See
[LoopWorkflowStep](#LoopWorkflowStep)
* Including
[StepInputExpressionRequirement](#StepInputExpressionRequirement),
[MultipleInputFeatureRequirement](#MultipleInputFeatureRequirement),
[ScatterFeatureRequirement](#ScatterFeatureRequirement) and
[SubworkflowFeatureRequirement](#SubworkflowFeatureRequirement)
in `requirements` is no longer necessary to use the associated
feature. These core features are now always available.

For other changes since CWL v1.0, see the
[CWL Workflow Description, v1.1 changelog](https://www.commonwl.org/v1.1/Workflow.html#Changelog)
and
Expand Down Expand Up @@ -302,10 +313,6 @@ $graph:

# Merging multiple inbound data links

To merge multiple inbound data links,
[MultipleInputFeatureRequirement](#MultipleInputFeatureRequirement) must be specified
in the workflow or workflow step requirements.

If the sink parameter is an array, or named in a [workflow
scatter](#ScatterWorkflowStep) operation, there may be multiple inbound
data links listed in the `source` field. The values from the
Expand Down Expand Up @@ -410,9 +417,6 @@ $graph:
- Expression
jsonldPredicate: "cwl:valueFrom"
doc: |
To use valueFrom, [StepInputExpressionRequirement](#StepInputExpressionRequirement) must
be specified in the workflow or workflow step requirements.

If `valueFrom` is a constant string value, use this as the value for
this input parameter.

Expand Down Expand Up @@ -470,9 +474,6 @@ $graph:
- Expression
jsonldPredicate: "cwl:valueFrom"
doc: |
To use valueFrom, [StepInputExpressionRequirement](#StepInputExpressionRequirement) must
be specified in the workflow or workflow step requirements.

If `valueFrom` is a constant string value, use this as the value for
this input parameter.

Expand Down Expand Up @@ -538,10 +539,6 @@ $graph:

# Subworkflows

To specify a nested workflow as part of a workflow step,
[SubworkflowFeatureRequirement](#SubworkflowFeatureRequirement) must be
specified in the workflow or workflow step requirements.

It is a fatal error if a workflow directly or indirectly invokes itself as
a subworkflow (recursive workflows are not allowed).

Expand Down Expand Up @@ -623,10 +620,6 @@ $graph:
extends: AbstractWorkflowStep
docParent: "#Workflow"
doc: |
To use scatter/gather,
[ScatterFeatureRequirement](#ScatterFeatureRequirement) must be specified
in the workflow or workflow step requirements.

A "scatter" operation specifies that the associated workflow step or
subworkflow should execute separately over a list of input elements. Each
job making up a scatter operation is independent and may be executed
Expand Down Expand Up @@ -813,12 +806,11 @@ $graph:
* If all workflow steps are executed and complete with `success`, then the
workflow status is `success`.

# Extensions
# Complex steps

[ScatterFeatureRequirement](#ScatterFeatureRequirement) and
[SubworkflowFeatureRequirement](#SubworkflowFeatureRequirement) are
available as standard [extensions](#Extensions_and_Metadata) to core
workflow semantics.
Individual workflow steps may specify complex behavior. Currently
this consists scatter/gather, conditional execution, iterative
execution (loops), or executing other workflows.

fields:
- name: "class"
Expand Down Expand Up @@ -847,6 +839,10 @@ $graph:
name: SubworkflowFeatureRequirement
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** This feature is available by default,
workflows that use it do not need to declare it. Including this
requirement is a no-op.

Indicates that the workflow platform must support nested workflows in
the `run` field of [AbstractWorkflowStep](#AbstractWorkflowStep).
fields:
Expand All @@ -865,6 +861,10 @@ $graph:
type: record
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** This feature is available by default,
workflows that use it do not need to declare it. Including this
requirement is a no-op.

Indicates that the workflow platform must support the `scatter` and
`scatterMethod` fields of [ScatterWorkflowStep](#ScatterWorkflowStep).
fields:
Expand All @@ -883,6 +883,10 @@ $graph:
type: record
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** This feature is available by default,
workflows that use it do not need to declare it. Including this
requirement is a no-op.

Indicates that the workflow platform must support multiple inbound data links
listed in the `source` field of [WorkflowStepInput](#WorkflowStepInput).
fields:
Expand All @@ -901,6 +905,10 @@ $graph:
name: StepInputExpressionRequirement
extends: ProcessRequirement
doc: |
**Deprecated as of v1.3** This feature is available by default,
workflows that use it do not need to declare it. Including this
requirement is a no-op.

Indicate that the workflow platform must support the `valueFrom` field
of [WorkflowStepInput](#WorkflowStepInput).
fields:
Expand Down
Loading
Loading