Skip to content

Commit a4fa9ca

Browse files
authored
Fix the description of flow directives and addressed few issues in dsl and dsl-reference (#1083)
* update DSL version from alpha1, alpha2, alpha5 to 1.0.0 across multip… (#1082) * update DSL version from alpha1, alpha2, alpha5 to 1.0.0 across multiple YAML files Signed-off-by: Gilles Barbier <[email protected]> * fix(contributing): reverting pre-release versioning format Signed-off-by: Gilles Barbier <[email protected]> --------- Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl): fix a few issues in dsl and dsl-reference Signed-off-by: Gilles Barbier <[email protected]> * update .gitignore to include .DS_Store Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): correct table formatting Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): clarify flow directive descriptions Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): improve table formatting Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): clarify flow directive descriptions Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl): fix a few issues in dsl and dsl-reference Signed-off-by: Gilles Barbier <[email protected]> * update .gitignore to include .DS_Store Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): correct table formatting Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): clarify flow directive descriptions Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): improve table formatting Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): clarify flow directive descriptions Signed-off-by: Gilles Barbier <[email protected]> * fix(dsl-reference): improve table formatting Signed-off-by: Gilles Barbier <[email protected]> * remove again .DS_Store Signed-off-by: Gilles Barbier <[email protected]> --------- Signed-off-by: Gilles Barbier <[email protected]>
1 parent 77fb2c7 commit a4fa9ca

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
.idea
1+
.idea
2+
.DS_Store

dsl-reference.md

+15-15
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ A [workflow](#workflow) serves as a blueprint outlining the series of [tasks](#t
101101
| document | [`document`](#document) | `yes` | Documents the defined workflow. |
102102
| input | [`input`](#input) | `no` | Configures the workflow's input. |
103103
| use | [`use`](#use) | `no` | Defines the workflow's reusable components, if any. |
104-
| do | [`map[string, task][]`](#task) | `yes` | The [task(s)](#task) that must be performed by the [workflow](#workflow). |
104+
| do | [`map[string, task]`](#task) | `yes` | The [task(s)](#task) that must be performed by the [workflow](#workflow). |
105105
| timeout | `string`<br>[`timeout`](#timeout) | `no` | The configuration, if any, of the workflow's timeout.<br>*If a `string`, must be the name of a [timeout](#timeout) defined in the [workflow's reusable components](#use).* |
106106
| output | [`output`](#output) | `no` | Configures the workflow's output. |
107107
| schedule | [`schedule`](#schedule) | `no` | Configures the workflow's schedule, if any. |
@@ -131,7 +131,7 @@ Defines the workflow's reusable components.
131131
| authentications | [`map[string, authentication]`](#authentication) | `no` | A name/value mapping of the workflow's reusable authentication policies. |
132132
| catalogs | [`map[string, catalog]`(#catalog)] | `no` | A name/value mapping of the workflow's reusable resource catalogs. |
133133
| errors | [`map[string, error]`](#error) | `no` | A name/value mapping of the workflow's reusable errors. |
134-
| extensions | [`map[string, extension][]`](#extension) | `no` | A list of the workflow's reusable extensions. |
134+
| extensions | [`map[string, extension]`](#extension) | `no` | A list of the workflow's reusable extensions. |
135135
| functions | [`map[string, task]`](#task) | `no` | A name/value mapping of the workflow's reusable tasks. |
136136
| retries | [`map[string, retryPolicy]`](#retry) | `no` | A name/value mapping of the workflow's reusable retry policies. |
137137
| secrets | `string[]` | `no` | A list containing the workflow's secrets. |
@@ -491,7 +491,7 @@ Serves as a fundamental building block within workflows, enabling the sequential
491491

492492
| Name | Type | Required | Description|
493493
|:--|:---:|:---:|:---|
494-
| do | [`map[string, task][]`](#task) | `no` | The tasks to perform sequentially. |
494+
| do | [`map[string, task]`](#task) | `no` | The tasks to perform sequentially. |
495495

496496
##### Examples
497497

@@ -594,7 +594,7 @@ Allows workflows to iterate over a collection of items, executing a defined set
594594
| for.in | `string` | `yes` | A [runtime expression](dsl.md#runtime-expressions) used to get the collection to enumerate. |
595595
| for.at | `string` | `no` | The name of the variable used to store the index of the current item being enumerated.<br>Defaults to `index`. |
596596
| while | `string` | `no` | A [runtime expression](dsl.md#runtime-expressions) that represents the condition, if any, that must be met for the iteration to continue. |
597-
| do | [`task`](#task) | `yes` | The task to perform for each item in the collection. |
597+
| do | [`map[string, task]`](#task) | `yes` | The [task(s)](#task) to perform for each item in the collection. |
598598

599599
##### Examples
600600

@@ -630,7 +630,7 @@ Allows workflows to execute multiple subtasks concurrently, enabling parallel pr
630630

631631
| Name | Type | Required | Description|
632632
|:--|:---:|:---:|:---|
633-
| fork.branches | [`map[string, task][]`](#task) | `no` | The tasks to perform concurrently. |
633+
| fork.branches | [`map[string, task]`](#task) | `no` | The tasks to perform concurrently. |
634634
| fork.compete | `boolean` | `no` | Indicates whether or not the concurrent [`tasks`](#task) are racing against each other, with a single possible winner, which sets the composite task's output.<br>*If set to `false`, the task returns an array that includes the outputs from each branch, preserving the order in which the branches are declared.*<br>*If to `true`, the task returns only the output of the winning branch.*<br>*Defaults to `false`.* |
635635

636636
##### Examples
@@ -1072,7 +1072,7 @@ Serves as a mechanism within workflows to handle errors gracefully, potentially
10721072

10731073
| Name | Type | Required | Description|
10741074
|:--|:---:|:---:|:---|
1075-
| try | [`map[string, task][]`](#task) | `yes` | The task(s) to perform. |
1075+
| try | [`map[string, task]`](#task) | `yes` | The task(s) to perform. |
10761076
| catch | [`catch`](#catch) | `yes` | Configures the errors to catch and how to handle them. |
10771077

10781078
##### Examples
@@ -1120,7 +1120,7 @@ Defines the configuration of a catch clause, which a concept used to catch error
11201120
| when | `string`| `no` | A runtime expression used to determine whether or not to catch the filtered error. |
11211121
| exceptWhen | `string` | `no` | A runtime expression used to determine whether or not to catch the filtered error. |
11221122
| retry | `string`<br>[`retryPolicy`](#retry) | `no` | The [`retry policy`](#retry) to use, if any, when catching [`errors`](#error).<br>*If a `string`, must be the name of a [retry policy](#retry) defined in the [workflow's reusable components](#use).* |
1123-
| do | [`map[string, task][]`](#task) | `no` | The definition of the task(s) to run when catching an error. |
1123+
| do | [`map[string, task]`](#task) | `no` | The definition of the task(s) to run when catching an error. |
11241124

11251125
#### Wait
11261126

@@ -1153,9 +1153,12 @@ Flow Directives are commands within a workflow that dictate its progression.
11531153
| Directive | Description |
11541154
| --------- | ----------- |
11551155
| `"continue"` | Instructs the workflow to proceed with the next task in line. This action may conclude the execution of a particular workflow or branch if there are not task defined after the continue one. |
1156-
| `"exit"` | Halts the current branch's execution, potentially terminating the entire workflow if the current task resides within the main branch. |
1156+
| `"exit"` | Completes the current scope's execution, potentially terminating the entire workflow if the current task resides within the main `do` scope. |
11571157
| `"end"` | Provides a graceful conclusion to the workflow execution, signaling its completion explicitly. |
1158-
| `string` | Continues the workflow at the task with the specified name |
1158+
| `string` | Continues the workflow at the task with the specified name. |
1159+
1160+
> [!WARNING]
1161+
> Flow directives may only redirect to tasks declared within their own scope. In other words, they cannot target tasks at a different depth.
11591162

11601163
### Lifecycle Events
11611164

@@ -1540,9 +1543,6 @@ updatedAt: '2024-07-26T16:59:57-05:00'
15401543
status: completed
15411544
```
15421545

1543-
> [!WARNING]
1544-
> Flow directives may only redirect to tasks declared within their own scope. In other words, they cannot target tasks at a different depth.
1545-
15461546
### External Resource
15471547

15481548
Defines an external resource.
@@ -1877,8 +1877,8 @@ Extensions enable the execution of tasks prior to those they extend, offering th
18771877
|----------|:----:|:--------:|-------------|
18781878
| extend | `string` | `yes` | The type of task to extend<br>Supported values are: `call`, `composite`, `emit`, `extension`, `for`, `listen`, `raise`, `run`, `set`, `switch`, `try`, `wait` and `all` |
18791879
| when | `string` | `no` | A runtime expression used to determine whether or not the extension should apply in the specified context |
1880-
| before | [`map[string, task][]`](#task) | `no` | The task to execute, if any, before the extended task |
1881-
| after | [`map[string, task][]`](#task) | `no` | The task to execute, if any, after the extended task |
1880+
| before | [`map[string, task]`](#task) | `no` | The task to execute, if any, before the extended task |
1881+
| after | [`map[string, task]`](#task) | `no` | The task to execute, if any, after the extended task |
18821882

18831883
#### Examples
18841884

@@ -2602,7 +2602,7 @@ Configures the iteration over each item (event or message) consumed by a subscri
26022602
|:-----|:----:|:--------:|:------------|
26032603
| item | `string` | `no` | The name of the variable used to store the current item being enumerated.<br>*Defaults to `item`.* |
26042604
| at | `string` | `no` | The name of the variable used to store the index of the current item being enumerated.<br>*Defaults to `index`.* |
2605-
| do | [`map[string, task][]`](#task) | `no` | The tasks to perform for each consumed item. |
2605+
| do | [`map[string, task]`](#task) | `no` | The tasks to perform for each consumed item. |
26062606
| output | [`output`](#output) | `no` | An object, if any, used to customize the item's output and to document its schema. |
26072607
| export | [`export`](#export) | `no` | An object, if any, used to customize the content of the workflow context. |
26082608

dsl.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ Before the workflow starts, the input data provided to the workflow can be valid
241241
The execution only proceeds if the input is valid. Otherwise, it will fault with a [ValidationError (https://serverlessworkflow.io/spec/1.0.0/errors/validation)](dsl-reference.md#error).
242242

243243
2. **Transform Workflow Input**
244-
Before the workflow starts, the input data provided to the workflow can be transformed to ensure only relevant data in the expected format is passed into the workflow context. This can be done using the top level `input.from` expression. It evaluates on the raw workflow input and defaults to the identity expression which leaves the input unchanged. This step allows the workflow to start with a clean and focused dataset, reducing potential overhead and complexity in subsequent tasks. The result of this expression will set as the initial value for the `$context` runtime expression argument and be passed to the first task.
244+
Before the workflow starts, the input data provided to the workflow can be transformed to ensure only relevant data in the expected format is passed into the workflow context. This can be done using the top level `input.from` expression. It evaluates on the raw workflow input and defaults to the identity expression which leaves the input unchanged. This step allows the workflow to start with a clean and focused dataset, reducing potential overhead and complexity in subsequent tasks. The result of this expression will set as the initial value for the `$input` runtime expression argument and be passed to the first task.
245245

246246
*Example: If the workflow receives a JSON object as input, a transformation can be applied to remove unnecessary fields and retain only those that are required for the workflow's execution.*
247247

0 commit comments

Comments
 (0)