Home

Awesome

Verify JAVA SDK Deploy JAVA SDK Gitpod ready-to-code

Serverless Workflow Specification - Java SDK

Provides the Java API for the Serverless Workflow Specification

With the SDK you can:

Serverless Workflow Java SDK is not a workflow runtime implementation but can be used by Java runtime implementations to parse workflow definitions.

Status

Latest ReleasesConformance to spec version
7.0.0.Finalv1.0.0
5.0.0.Finalv0.8
4.0.5.Finalv0.8
3.0.0.Finalv0.7
2.0.0.Finalv0.6
1.0.3.Finalv0.5

Note that 6.0.0.Final, which will be the one for specification version 0.9, is skipped intentionally in case someone want to work on it.

JDK Version

SDK VersionJDK Version
5.0.0 and after11
4.0.x and before8

Getting Started

Building SNAPSHOT locally

To build project and run tests locally:

git clone https://github.com/serverlessworkflow/sdk-java.git
mvn clean install

The project uses Google's code styleguide. Your changes should be automatically formatted during the build.

Maven projects:

Add the following dependencies to your pom.xml dependencies section:

<dependency>
    <groupId>io.serverlessworkflow</groupId>
    <artifactId>serverlessworkflow-api</artifactId>
    <version>7.0.0-SNAPSHOT</version>
</dependency>

Gradle projects:

Add the following dependencies to your build.gradle dependencies section:

implementation("io.serverlessworkflow:serverlessworkflow-api:7.0.0-SNAPSHOT")

How to Use

Creating from JSON/YAML source

You can create a Workflow instance from JSON/YAML source:

Let's say you have a simple YAML based workflow definition in a file name simple.yaml located in your working dir:

document:
  dsl: 1.0.0-alpha1
  namespace: default
  name: implicit-sequence
do:
  setRed:
    set:
      colors: '${ .colors + [ "red" ] }'
  setGreen:
    set:
      colors: '${ .colors + [ "green" ] }'
  setBlue:
    set:
      colors: '${ .colors + [ "blue" ] }'

To parse it and create a Workflow instance you can do:


try (InputStream in = new FileInputStream("simple.yaml")) {
   Workflow workflow = WorkflowReader.readWorkflow (in, WorkflowFormat.YAML);
   // Once you have the Workflow instance you can use its API to inspect it
}

Writing a workflow

Given a workflow definition, you can store it using JSON or YAML format. For example, to store a workflow using json format in a file called simple.json, you write

try (OutputStream out = new FileOutputStream("simple.json")) {
    WorkflowWriter.writeWorkflow(out, workflow, WorkflowFormat.JSON);
}