CNCF Serverless Workflow specification
This document describes the information about the implementation of the Cloud Native Computing Foundation (CNCF) Serverless Workflow specification. Kogito implements version 0.8 of the Serverless Workflow specification.
The following table shows the implementation status for each Serverless Workflow specification feature.
Kogito does not support Retries, Sleep State, and has a limited support of Timeouts features of Serverless Workflow specification. |
Icon | Description |
---|---|
Fully implemented feature and compliant with the Serverless Workflow specification |
|
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 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`.
Kogito 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 Kogito supports in the Serverless Workflow specification 0.8 version:
State | Status | Reference |
---|---|---|
Event |
||
Operation |
||
Switch |
||
Sleep |
||
Parallel |
||
Inject |
||
ForEach |
||
Callback |
Functions
The following table shows the status of the workflow functions that Kogito supports:
Function | Status | Reference |
---|---|---|
REST |
||
RPC |
||
Expression |
||
Async API |
||
GraphQL |
||
OData |
||
Custom |
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 Serverless Workflow service.
Events
Kogito 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. 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 Kogito. For more information about event correlation, see Event correlation in Serverless Workflow.
Serverless Workflow data
Kogito 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.
Kogito also supports data filtering. For more information about the data filtering, see State data filters section in the Serverless Workflow specification documentation.
Expressions
Kogito 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
Kogito supports the error handling feature as described in the Serverless Workflow specification definition.
For more information about error handling, see Error handling in Serverless Workflow.
Retries
Kogito does not support Retries feature, however, it will be implemented in a future release.
Alternatively, you can use Error handling in Serverless Workflow.
Timeouts
Kogito 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 Serverless Workflow.
Compensation
Kogito supports workflow compensation as described in the Serverless Workflow specification definition.
For more information about compensations, see Saga orchestration example in Serverless Workflow.
Constants
Kogito supports workflow constants as described in the Serverless Workflow specification definition.
Secrets
Kogito 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 Kogito. |
Found an issue?
If you find an issue or any misleading information, please feel free to report it here. We really appreciate it!