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.

Table 1. Implementation status icons
Icon Description

full_moon

Feature fully implemented and compliant with the Serverless Workflow specification

last_quarter_moon

Feature partially implemented

construction

Feature not implemented

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

Compensation

full_moon

Workflow Compensation

Constants

full_moon

Workflow Constants

Error handling

full_moon

Workflow Error Handling

Events

last_quarter_moon

Event Definition

Expressions

full_moon

Workflow Expressions

Functions

last_quarter_moon

Function Definition

Retries

construction

Retry Definition

Secrets

full_moon

Workflow Secrets

Serverless Workflow data

full_moon

Workflow Data

States

full_moon

Workflow States

Timeouts

last_quarter_moon

Workflow Timeouts

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:

Table 3. Workflow States implementation status
State Status Reference

Callback

full_moon

Callback State

Event

last_quarter_moon

Event State

ForEach

full_moon

ForEach State

Inject

full_moon

Inject State

Operation

full_moon

Operation State

Parallel

last_quarter_moon

Parallel State

Sleep

construction

Sleep State

Switch

full_moon

Switch State

Functions

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

Table 4. Workflow Functions implementation status
Function Status Reference

AsyncAPI

construction

Using Functions for AsyncAPI Service Invocations

Custom

full_moon

Defining custom function types

Expression

full_moon

Using Functions for Expression Evaluation

GraphQL

construction

Using Functions for GraphQL Service Invocations

OData

construction

Using Functions for OData Service Invocations

REST

full_moon

Using Functions for RESTful Service Invocations

RPC

full_moon

Using Functions for RPC Service Invocations

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 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.

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:

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.

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!