Serverless Workflow Specification
This document provides an overview of how SonataFlow implements the Cloud Native Computing Foundation (CNCF) Serverless Workflow specification. SonataFlow implements version 0.8 of the Serverless Workflow specification.
The following table shows the implementation status for each Serverless Workflow specification feature.
SonataFlow does not support Retries, Sleep State, and has a limited support of Timeouts features of Serverless Workflow specification. |
Icon | Description |
---|---|
Feature fully implemented and compliant with the Serverless Workflow specification |
|
Feature partially implemented |
|
Feature not implemented |
Feature | Status | Reference |
---|---|---|
States
The Parallel State of the workflow states feature works in a single thread. This means that a Parallel State does not create one thread per branch, simulating an actual parallel behavior.
If an exclusive
property is set to false
, you should not use the Event State of the workflow states feature as the starting state. In case that it is specified that way, it will behave as if an exclusive
property was set to true
.
SonataFlow does not support the Sleep State feature. However, this feature will be supported in a future release. |
The following table shows the implementation status in SonataFlow of workflow states of the Serverless Workflow specification 0.8 version:
State | Status | Reference |
---|---|---|
Callback |
||
Event |
||
ForEach |
||
Inject |
||
Operation |
||
Parallel |
||
Sleep |
||
Switch |
Functions
The following table shows the implementation status of the workflow functions that SonataFlow supports:
Function | Status | Reference |
---|---|---|
AsyncAPI |
||
Custom |
||
Expression |
||
GraphQL |
||
OData |
||
REST |
||
RPC |
For additional functions, the Serverless Workflow specification support the custom
function type, such as sysout
and java
. For more information about these custom function types, see Custom functions for your SonataFlow service.
Events
SonataFlow supports events of the workflow model as defined in the Serverless Workflow specification definition, except the following:
-
resultEventRef
property inEventRefDefinition
is not implemented and, if specified, this property is ignored. The same functionality can be achieved by using Callback state. -
Correlation has limited support, that evaluates correlation rules matching a single event consumed per time with a workflow instance. The correlation among
N
different events to be consumed and matched with a workflow instance is not supported in SonataFlow. For more information about event correlation, see Event correlation in SonataFlow.
Serverless Workflow data
SonataFlow supports the implementation of the data manipulation feature using jq
(default) or jsonpath
expressions.
jsonpath
expressions can have limitations in specific scenarios of complex data manipulation. For more information, see Workflow Data section in the Serverless Workflow specification documentation.
SonataFlow also supports data filtering. For more information about the data filtering, see State data filters section in the Serverless Workflow specification documentation.
Expressions
SonataFlow supports jq
or jsonpath
to define the workflow expressions. jq
is the default expression language, however, if you want to use jsonpath
, set the expressionLang
attribute in the workflow definition as shown in the following example:
{
"id": "myworkflow",
"version": "1.0",
"expressionLang": "jsonpath",
"name": "Workflow example",
"description": "An example of how to use jsonpath expressions"
}
|
Error handling
SonataFlow supports the error handling feature as described in the Serverless Workflow specification definition.
For more information about error handling, see Error handling in SonataFlow.
Retries
SonataFlow does not support Retries feature, however, it will be implemented in a future release.
Alternatively, you can use Error handling in SonataFlow.
Timeouts
SonataFlow has limited support for the timeouts feature, covering only workflow and event timeouts.
For start event state the exclusive
property is not supported if set to false
, therefore the timeout is not supported for the event state when starting a workflow.
For more information about timeouts, see Timeouts on events for SonataFlow.
Compensation
SonataFlow supports workflow compensation as described in the Serverless Workflow specification definition.
For more information about compensations, see Saga orchestration example in SonataFlow.
Constants
SonataFlow supports workflow constants as described in the Serverless Workflow specification definition.
Secrets
SonataFlow supports workflow secrets as described in the Serverless Workflow specification definition.
Secrets are associated with the Quarkus Configuration module. This means that any form of configuration that Quarkus supports is also supported in SonataFlow. |
Found an issue?
If you find an issue or any misleading information, please feel free to report it here. We really appreciate it!