Spell check on spec documents (#212)
* Spell check on spec documents * adding spell check of references doc * add spell check of extending doc
This commit is contained in:
parent
6b93e86ed6
commit
a91ea32847
|
@ -426,7 +426,7 @@ The ForEach state will execute a single defined operation state for each math ex
|
||||||
state contains an action which calls a serverless function which actually solves the expression
|
state contains an action which calls a serverless function which actually solves the expression
|
||||||
and returns its result.
|
and returns its result.
|
||||||
|
|
||||||
Results of all mathe expressions are accumulated into the data output of the ForEach state which become the final
|
Results of all math expressions are accumulated into the data output of the ForEach state which become the final
|
||||||
result of the workflow execution.
|
result of the workflow execution.
|
||||||
|
|
||||||
#### Workflow Definition
|
#### Workflow Definition
|
||||||
|
@ -1508,9 +1508,10 @@ states:
|
||||||
### Monitor Patient Vital Signs Example
|
### Monitor Patient Vital Signs Example
|
||||||
|
|
||||||
#### Description
|
#### Description
|
||||||
|
|
||||||
In this example a hospital patient is monitored by a Vial Sign Monitoring system. This device can produce three different Cloud Events, namely
|
In this example a hospital patient is monitored by a Vial Sign Monitoring system. This device can produce three different Cloud Events, namely
|
||||||
"High Body Temperature", "High Blood Pressure", and "High Respiration Rate".
|
"High Body Temperature", "High Blood Pressure", and "High Respiration Rate".
|
||||||
Our workflow which needs to take propert actions depending on the event the Vital Sign Monitor produces needs to start
|
Our workflow which needs to take proper actions depending on the event the Vital Sign Monitor produces needs to start
|
||||||
if any of these events occur. For each of these events a new instance of the workflow is started.
|
if any of these events occur. For each of these events a new instance of the workflow is started.
|
||||||
|
|
||||||
Since the hospital may include many patients that are being monitored it is assumed that all events include a patientId context attribute in the event
|
Since the hospital may include many patients that are being monitored it is assumed that all events include a patientId context attribute in the event
|
||||||
|
|
|
@ -22,10 +22,10 @@ Hope this gives implementors an idea on how to start adding their own custom ext
|
||||||
Let's say we are developing an extension which adds additional information
|
Let's say we are developing an extension which adds additional information
|
||||||
to a serverless workflow that can be passed and processed by a simulation tool.
|
to a serverless workflow that can be passed and processed by a simulation tool.
|
||||||
|
|
||||||
Our example extension can add one more more simulation "scenarios". Each scenario
|
Our example extension can add "scenarios". Each scenario
|
||||||
can add "time" parameters for each of the workflow states and define a min and max value
|
can add "time" parameters for each of the workflow states and define a min and max value
|
||||||
within which the workflow state should be executed in. It should also add a "probability" parameter
|
within which the workflow state should be executed in. It should also add a "probability" parameter
|
||||||
which defines the probabily that a state is triggered during the execution of the workflow.
|
which defines the probability that a state is triggered during the execution of the workflow.
|
||||||
|
|
||||||
So let's define a simple example workflow model and then add our custom extension into it:
|
So let's define a simple example workflow model and then add our custom extension into it:
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ The research of the [Workflow Patterns Initiative](http://www.workflowpatterns.c
|
||||||
|
|
||||||
## Business Process Model and Notation
|
## Business Process Model and Notation
|
||||||
|
|
||||||
[Business Process Modeling and Notation (BPMN)](https://www.omg.org/spec/BPMN/) was standardized by Object Management Group (OMG) in collaboration with companies such as: IBM, Red Hat, Oracle, SAP, TIBCO, Software AG, among others. The latest version of the specification has even been [adopted by the ISO](https://www.iso.org/standard/62652.html) and provides a rich set of constructs to define workflows in a technology-agnostic way. One of the main advatages of the BPMN spec is that it visually defines how a workflow should look like and most importantly, it defines the execution semantics of such workflows. [This article](https://www.esentri.com/bpmn-and-serverless-workflows/) describes how BPMN can be used for serverless workflows.
|
[Business Process Modeling and Notation (BPMN)](https://www.omg.org/spec/BPMN/) was standardized by Object Management Group (OMG) in collaboration with companies such as: IBM, Red Hat, Oracle, SAP, TIBCO, Software AG, among others. The latest version of the specification has even been [adopted by the ISO](https://www.iso.org/standard/62652.html) and provides a rich set of constructs to define workflows in a technology-agnostic way. One of the main advantages of the BPMN spec is that it visually defines how a workflow should look like and most importantly, it defines the execution semantics of such workflows. [This article](https://www.esentri.com/bpmn-and-serverless-workflows/) describes how BPMN can be used for serverless workflows.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>BPMN model</summary>
|
<summary>BPMN model</summary>
|
||||||
|
@ -32,7 +32,7 @@ The research of the [Workflow Patterns Initiative](http://www.workflowpatterns.c
|
||||||
- Throw
|
- Throw
|
||||||
- Catch
|
- Catch
|
||||||
- Timer Events
|
- Timer Events
|
||||||
- Gateways: Enable fork/join behaviours based on certain condition
|
- Gateways: Enable fork/join behaviors based on certain condition
|
||||||
- Exclusive
|
- Exclusive
|
||||||
- Parallel
|
- Parallel
|
||||||
- Complex
|
- Complex
|
||||||
|
@ -52,13 +52,13 @@ The [BPMN specification](https://www.omg.org/spec/BPMN/) provides XML Schemas fo
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
You can find the BPMN XML which can be executed in a number of Open Source and Propietary engines [here](media/references/loan-approval-workflow.bpmn)
|
You can find the BPMN XML which can be executed in a number of Open Source and Proprietary engines [here](media/references/loan-approval-workflow.bpmn)
|
||||||
|
|
||||||
**Travel Booking Workflow**
|
**Travel Booking Workflow**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
You can find the BPMN XML which can be executed in a number of Open Source and Propietary engines [here](media/references/travel-booking-workflow.bpmn)
|
You can find the BPMN XML which can be executed in a number of Open Source and Proprietary engines [here](media/references/travel-booking-workflow.bpmn)
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## Mistral Workflow Language
|
## Mistral Workflow Language
|
||||||
|
@ -97,11 +97,11 @@ The [BPMN specification](https://www.omg.org/spec/BPMN/) provides XML Schemas fo
|
||||||
|
|
||||||
- name
|
- name
|
||||||
- description
|
- description
|
||||||
- action or workflow, otherwise it's a noop
|
- action or workflow, otherwise it's a no-op
|
||||||
- input (constructs action/subworkflow input parameters from the context of the task)
|
- input (constructs action/subworkflow input parameters from the context of the task)
|
||||||
- publish (decides which action/subworkflow outputs are put into the context)
|
- publish (decides which action/subworkflow outputs are put into the context)
|
||||||
- publish-on-error
|
- publish-on-error
|
||||||
- with-items (processes items of a collection, i.e. the action/workflow excutes multiple times)
|
- with-items (processes items of a collection, i.e. the action/workflow executes multiple times)
|
||||||
- keep-result (can be used to discard the action/subworkflow output)
|
- keep-result (can be used to discard the action/subworkflow output)
|
||||||
- target (which worker should execute the task)
|
- target (which worker should execute the task)
|
||||||
- pause-before
|
- pause-before
|
||||||
|
@ -128,7 +128,7 @@ The [BPMN specification](https://www.omg.org/spec/BPMN/) provides XML Schemas fo
|
||||||
|
|
||||||
## Alibaba FunctionFlow
|
## Alibaba FunctionFlow
|
||||||
|
|
||||||
FunctionFlow defines workflows of steps using yaml arrays and a simple control logic that starts with the first step in the array, allows jumps with goto and ending a flow either by reaching the last ste in the array or by marking a step as the end of the flow.
|
FunctionFlow defines workflows of steps using yaml arrays and a simple control logic that starts with the first step in the array, allows jumps with goto and ending a flow either by reaching the last step in the array or by marking a step as the end of the flow.
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>FunctionFlow FDL (Flow Definition Language) model</summary>
|
<summary>FunctionFlow FDL (Flow Definition Language) model</summary>
|
||||||
|
|
|
@ -38,7 +38,7 @@ clear separation between business and orchestration logic.
|
||||||
|
|
||||||
Some of the many benefits using workflows in serverless applications include:
|
Some of the many benefits using workflows in serverless applications include:
|
||||||
|
|
||||||
- Allow developers to fucus on business requirements and not orchestration logic.
|
- Allow developers to focus on business requirements and not orchestration logic.
|
||||||
- Externalize cross-cutting concerns such as parallel execution, branching, timeouts, compensation, callbacks, etc.
|
- Externalize cross-cutting concerns such as parallel execution, branching, timeouts, compensation, callbacks, etc.
|
||||||
thus allowing clear focus on business requirements in functions.
|
thus allowing clear focus on business requirements in functions.
|
||||||
- Greatly reduce the amount of code developers have to write, maintain, and test.
|
- Greatly reduce the amount of code developers have to write, maintain, and test.
|
||||||
|
@ -442,7 +442,7 @@ States define building blocks of the Serverless Workflow. The specification defi
|
||||||
| **[ForEach](#ForEach-State)** | Parallel execution of states for each element of a data array | no | yes | no | yes (includes retries) | yes | no |
|
| **[ForEach](#ForEach-State)** | Parallel execution of states for each element of a data array | no | yes | no | yes (includes retries) | yes | no |
|
||||||
| **[Callback](#Callback-State)** | Manual decision step. Executes a function and waits for callback event that indicates completion of the manual decision.| yes | yes | yes (including retries) | yes | no | no |
|
| **[Callback](#Callback-State)** | Manual decision step. Executes a function and waits for callback event that indicates completion of the manual decision.| yes | yes | yes (including retries) | yes | no | no |
|
||||||
|
|
||||||
Following is a detailed decription of each of the defined states:
|
Following is a detailed description of each of the defined states:
|
||||||
|
|
||||||
#### Event State
|
#### Event State
|
||||||
|
|
||||||
|
@ -642,7 +642,7 @@ have not been received during this time, the state should transition to the next
|
||||||
|
|
||||||
Event actions reference one or more events in the workflow [events definitions](#Event-Definition).
|
Event actions reference one or more events in the workflow [events definitions](#Event-Definition).
|
||||||
Both the source and type of incoming events must match the ones defined in the references events in order for
|
Both the source and type of incoming events must match the ones defined in the references events in order for
|
||||||
the event to be considered. In case of mutliple events the event definition "correlationToken" context attribute
|
the event to be considered. In case of multiple events the event definition "correlationToken" context attribute
|
||||||
value must also match between events. If a correlation token is not defined, all events that match the other attributes
|
value must also match between events. If a correlation token is not defined, all events that match the other attributes
|
||||||
can be considered.
|
can be considered.
|
||||||
|
|
||||||
|
@ -888,7 +888,7 @@ This assures that both execution errors as well as actions error results can be
|
||||||
The interval parameter specifies the retry interval (in ISO 8601 repeatable format). For example: "R5/PT15M" would mean repeat 5 times with 1 minute intervals before each retry.
|
The interval parameter specifies the retry interval (in ISO 8601 repeatable format). For example: "R5/PT15M" would mean repeat 5 times with 1 minute intervals before each retry.
|
||||||
|
|
||||||
The multiplier parameter specifies value by which the interval time is increased for each of the retry attempts.
|
The multiplier parameter specifies value by which the interval time is increased for each of the retry attempts.
|
||||||
To eplain this better, let's say we have:
|
To explain this better, let's say we have:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
@ -1913,7 +1913,7 @@ as data output to the transition state:
|
||||||
type: RELAY
|
type: RELAY
|
||||||
inject:
|
inject:
|
||||||
person:
|
person:
|
||||||
fnam: John
|
fname: John
|
||||||
lname: Doe
|
lname: Doe
|
||||||
address: 1234 SomeStreet
|
address: 1234 SomeStreet
|
||||||
age: 40
|
age: 40
|
||||||
|
@ -1996,15 +1996,15 @@ what you need as data output of the state. Let's say we have:
|
||||||
type: RELAY
|
type: RELAY
|
||||||
inject:
|
inject:
|
||||||
people:
|
people:
|
||||||
- fnam: John
|
- fname: John
|
||||||
lname: Doe
|
lname: Doe
|
||||||
address: 1234 SomeStreet
|
address: 1234 SomeStreet
|
||||||
age: 40
|
age: 40
|
||||||
- fnam: Marry
|
- fname: Marry
|
||||||
lname: Allice
|
lname: Allice
|
||||||
address: 1234 SomeStreet
|
address: 1234 SomeStreet
|
||||||
age: 25
|
age: 25
|
||||||
- fnam: Kelly
|
- fname: Kelly
|
||||||
lname: Mill
|
lname: Mill
|
||||||
address: 1234 SomeStreet
|
address: 1234 SomeStreet
|
||||||
age: 30
|
age: 30
|
||||||
|
@ -2019,7 +2019,7 @@ what you need as data output of the state. Let's say we have:
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
In which case the states data output would include people who's age is less than 40.
|
In which case the states data output would include people who's age is less than 40.
|
||||||
You can change your output path easily during testin, for example:
|
You can change your output path easily during testing, for example:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
$.people[?(@.age >= 40)]
|
$.people[?(@.age >= 40)]
|
||||||
|
@ -3112,7 +3112,7 @@ Here is an example using an even filter:
|
||||||
<img src="media/spec/event-data-filter-example1.png" with="300px" height="400px" alt="Event Data Filter Example"/>
|
<img src="media/spec/event-data-filter-example1.png" with="300px" height="400px" alt="Event Data Filter Example"/>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
Similarly the consumed callback CloudEvent in [Callback states](#Callback-State) can be filered using
|
Similarly the consumed callback CloudEvent in [Callback states](#Callback-State) can be filtered using
|
||||||
an event filter.
|
an event filter.
|
||||||
|
|
||||||
#### <a name="error-data-filter"></a> State information filtering - Error Data Filter
|
#### <a name="error-data-filter"></a> State information filtering - Error Data Filter
|
||||||
|
@ -3349,7 +3349,7 @@ decide to strictly enforce it.
|
||||||
|
|
||||||
### Workflow Error Handling
|
### Workflow Error Handling
|
||||||
|
|
||||||
Any state can encounter runtime errors. Errors can arise from state failures such as exeptions thrown during function
|
Any state can encounter runtime errors. Errors can arise from state failures such as exceptions thrown during function
|
||||||
execution, network errors, or errors in the workflow definition (incorrect paths for example).
|
execution, network errors, or errors in the workflow definition (incorrect paths for example).
|
||||||
If a runtime error is not explicitly handled within the state definition, the default course of action should be to
|
If a runtime error is not explicitly handled within the state definition, the default course of action should be to
|
||||||
halt workflow execution.
|
halt workflow execution.
|
||||||
|
@ -3589,8 +3589,8 @@ If those errors occur after two max 2 retries, the onError definition states tha
|
||||||
|
|
||||||
### Workflow Metadata
|
### Workflow Metadata
|
||||||
|
|
||||||
Metdata enables you to enrich the serverless workflow model with information beyond its core definitions.
|
Metadata enables you to enrich the serverless workflow model with information beyond its core definitions.
|
||||||
It is inteded to be used by clients such as tools and libraries, as well as users that find this information relevant.
|
It is intended to be used by clients such as tools and libraries, as well as users that find this information relevant.
|
||||||
|
|
||||||
Metadata should not affect workflow execution. Implementations may chose to use metadata information or ignore it.
|
Metadata should not affect workflow execution. Implementations may chose to use metadata information or ignore it.
|
||||||
Note however that using metadata to control workflow execution can lead to vendor-locked implementations which do comply with the main goals of this specification, which is to be completely vendor-neutral.
|
Note however that using metadata to control workflow execution can lead to vendor-locked implementations which do comply with the main goals of this specification, which is to be completely vendor-neutral.
|
||||||
|
|
|
@ -57,7 +57,7 @@ In conjunction with available messaging services you can notify developers on di
|
||||||
## Continuous Integration And Deployment
|
## Continuous Integration And Deployment
|
||||||
|
|
||||||
Serverless Workflows can help you build solid continuous integration and deployment solutions.
|
Serverless Workflows can help you build solid continuous integration and deployment solutions.
|
||||||
Code checkins can trigger website builds and automatic redeploys. Pull requests can trigger
|
Code check-ins can trigger website builds and automatic redeploys. Pull requests can trigger
|
||||||
running automated tests to make sure code is well-tested before human reviews.
|
running automated tests to make sure code is well-tested before human reviews.
|
||||||
|
|
||||||
<p align="center"><img src="media/usecases/usecase-continuous-integration.png"/></p>
|
<p align="center"><img src="media/usecases/usecase-continuous-integration.png"/></p>
|
||||||
|
|
Loading…
Reference in New Issue