Serverless Workflow Specification

This document describes the information about the implementation of 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.

Table 1. Implementation status icons
Icon Description

Fully implemented feature and compliant with the Serverless Workflow specification

Partially implemented feature

Not implemented

Table 2. Implementation status of the Serverless Workflow specification features
Feature Status Reference


Workflow States


Function Definition


Event Definition

Serverless Workflow data

Workflow Data


Workflow Expressions

Error handling

Workflow Error Handling


Retry Definition


Workflow Timeouts


Workflow Compensation


Workflow Constants


Workflow Secrets


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 link:{spec_doc_url}#event-state[Event State] of the workflow states feature as the starting state. In case, if it is specified that way, then 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 all the workflow states that SonataFlow supports in the Serverless Workflow specification 0.8 version:

Table 3. Workflow States implementation status
State Status Reference


Event State


Operation State


Switch State


Sleep State


Parallel State


Inject State


ForEach State


Callback State


The following table shows the status of the workflow functions that SonataFlow supports:

Table 4. Workflow Functions implementation status
Function Status Reference


Using Functions for RESTful Service Invocations


Using Functions for RPC Service Invocations


Using Functions for Expression Evaluation

Async API

Using Functions for Async API Service Invocations


Using Functions for GraphQL Service Invocations


Using Functions for OData Service Invocations


Defining custom function types

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.


SonataFlow supports events of the workflow model as defined in the Serverless Workflow specification definition, except the following:

  • resultEventRef property in EventRefDefinition 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.


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:

Example of changing the default expression language
  "id": "myworkflow",
  "version": "1.0",
  "expressionLang": "jsonpath",
  "name": "Workflow example",
  "description": "An example of how to use jsonpath expressions"

jsonpath expression is not recommended because of the limitations of the language for data manipulation. Instead, you can use jq in various use cases.

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.


SonataFlow does not support Retries feature, however, it will be implemented in a future release.

Alternatively, you can use Error handling in SonataFlow.


SonataFlow has limited support for the timeouts feature, which covers 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.


SonataFlow supports workflow compensation as described in the Serverless Workflow specification definition.

For more information about compensations, see Saga orchestration example in SonataFlow.


SonataFlow supports workflow constants as described in the Serverless Workflow specification definition.


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!