# Serverless Workflow Specification

This document describes the information about the implementation of the Cloud Native Computing Foundation (CNCF) Serverless Workflow specification. xFlow implements version **0.8** of the Serverless Workflow specification with some extensions.

The following table shows the implementation status for each Serverless Workflow specification feature.

#### Table 1. Implementation status symbols

| **Symbol**                               | **Description**                                                                    |
| ---------------------------------------- | ---------------------------------------------------------------------------------- |
| <mark style="color:red;">**X**</mark>    | Not implemented                                                                    |
| <mark style="color:yellow;">**P**</mark> | Partially implemented feature                                                      |
| <mark style="color:blue;">**F**</mark>   | Fully implemented feature and compliant with the Serverless Workflow specification |

#### Table 2. Implementation status of the Serverless Workflow specification features

<table data-header-hidden><thead><tr><th></th><th width="86"></th><th></th><th width="91"></th><th width="72"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Feature</strong></td><td><strong>Status</strong></td><td><strong>Reference</strong></td><td><strong>Priority</strong></td><td><strong>Plan</strong></td><td><strong>Notes</strong></td><td><strong>Implement Status</strong></td></tr><tr><td>Constants</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Constants</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:red;"><strong>X</strong></mark></td></tr><tr><td>Timeouts</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Timeouts</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:yellow;"><strong>P</strong></mark> - Only support: Event Timeout + Workflow Execution Timeout</td></tr><tr><td>Serverless Workflow data</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Data</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Functions</td><td><mark style="color:yellow;"><strong>P</strong></mark></td><td>Function Definition</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:yellow;"><strong>P</strong></mark></td></tr><tr><td>Retries</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Retry Definition</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Compensation</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Compensation</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Error handling</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Error Handling</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Expressions</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Expressions</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>States</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow States</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Events</td><td><mark style="color:yellow;"><strong>P</strong></mark></td><td>Event Definition</td><td>1</td><td>v1.0</td><td></td><td><mark style="color:blue;"><strong>F</strong></mark></td></tr><tr><td>Secrets</td><td><mark style="color:blue;"><strong>F</strong></mark></td><td>Workflow Secrets</td><td>4</td><td>v1.2</td><td></td><td><mark style="color:red;"><strong>X</strong></mark></td></tr></tbody></table>

#### Table 3. Workflow States implementation status

| **State**                                                                        | **Status**                             | **Reference**   | **Priority** | **Plan** | **Notes**                        | **Implement Status**                                           |
| -------------------------------------------------------------------------------- | -------------------------------------- | --------------- | ------------ | -------- | -------------------------------- | -------------------------------------------------------------- |
| [Callback](/xflow/developer-guide/workflow-states-reference/callback-state.md)   | <mark style="color:blue;">**F**</mark> | Callback State  | 1            | v1.0     |                                  | <mark style="color:blue;">**F**</mark>                         |
| [Event](/xflow/developer-guide/workflow-states-reference/event-state.md)         | <mark style="color:blue;">**F**</mark> | Event State     | 1            | v1.0     | v1.0 supports 1 start event only | <mark style="color:blue;">**F**</mark>                         |
| [ForEach](/xflow/developer-guide/workflow-states-reference/foreach-state.md)     | <mark style="color:blue;">**F**</mark> | ForEach State   | 2            | v1.0     |                                  | <mark style="color:blue;">**F**</mark>                         |
| [Parallel](/xflow/developer-guide/workflow-states-reference/parallel-state.md)   | <mark style="color:blue;">**F**</mark> | Parallel State  | 2            | v1.0     |                                  | <mark style="color:blue;">**F**</mark>                         |
| [Operation](/xflow/developer-guide/workflow-states-reference/operation-state.md) | <mark style="color:blue;">**F**</mark> | Operation State | 1            | v1.0     |                                  | <mark style="color:blue;">**F**</mark>                         |
| [Switch](/xflow/developer-guide/workflow-states-reference/switch-state.md)       | <mark style="color:blue;">**F**</mark> | Switch State    | 1            | v1.0     |                                  | <mark style="color:yellow;">**P**</mark> - only data condition |
| [Inject](/xflow/developer-guide/workflow-states-reference/inject-state.md)       | <mark style="color:blue;">**F**</mark> | Inject State    | 3            | v1.1     |                                  | <mark style="color:red;">**X**</mark>                          |

#### Table 4. Workflow Functions implementation status

| **Function** | **Status**                             | **Reference**                                     | **Priority** | **Plan** | **Notes**                              |
| ------------ | -------------------------------------- | ------------------------------------------------- | ------------ | -------- | -------------------------------------- |
| REST         | <mark style="color:blue;">**F**</mark> | Using Functions for RESTful Service Invocations   | 1            | v1.0     | <mark style="color:blue;">**F**</mark> |
| Expression   | <mark style="color:blue;">**F**</mark> | Using Functions for Expression Evaluation         | 1            | v1.0     | <mark style="color:red;">**X**</mark>  |
| Custom       | <mark style="color:blue;">**F**</mark> | Defining custom function types                    | 1            | v1.0     | <mark style="color:blue;">**F**</mark> |
| RPC          | <mark style="color:blue;">**F**</mark> | Using Functions for RPC Service Invocations       | 2            | v1.1     | <mark style="color:red;">**X**</mark>  |
| GraphQL      | <mark style="color:blue;">**F**</mark> | Using Functions for GraphQL Service Invocations   | 2            | v1.1     | <mark style="color:blue;">**F**</mark> |
| Async API    | <mark style="color:red;">**X**</mark>  | Using Functions for Async API Service Invocations | TBU          | TBU      | <mark style="color:red;">**X**</mark>  |
| OData        | <mark style="color:red;">**X**</mark>  | Using Functions for OData Service Invocations     | TBU          | TBU      | <mark style="color:red;">**X**</mark>  |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.a4b.vn/xflow/core-concepts/serverless-workflow-specification.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
