Skip to content

serverlessworkflow/sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

44c3948 · Oct 9, 2024
Oct 8, 2024
May 8, 2024
Oct 9, 2024
Jan 9, 2023
May 8, 2024
Oct 9, 2024
Oct 9, 2024
Oct 9, 2024
Mar 7, 2023
Oct 8, 2024
May 22, 2024
Oct 9, 2024
Dec 20, 2022
Apr 19, 2022
Jul 15, 2020
May 19, 2023
Oct 9, 2024
May 19, 2023
Oct 9, 2024
Oct 10, 2023
Nov 6, 2020
Oct 8, 2024
Oct 8, 2024
Jan 9, 2023
Mar 7, 2023
May 17, 2021

Repository files navigation

Go SDK for Serverless Workflow

Here you will find all the specification types defined by our Json Schemas, in Go.

Table of Contents

Status

Current status of features implemented in the SDK is listed in the table below:

Feature Status
Parse workflow JSON and YAML definitions ✔️
Programmatically build workflow definitions 🚫
Validate workflow definitions (Schema) ✔️
Validate workflow definitions (Integrity) ✔️
Generate workflow diagram (SVG) 🚫

Releases

Latest Releases Conformance to spec version
v1.0.0 v0.5
v2.0.1 v0.6
v2.1.2 v0.7
v2.4.0 v0.8

How to use

Run the following command in the root of your Go's project:

$ go get github.com/serverlessworkflow/sdk-go/v2

Your go.mod file should be updated to add a dependency from the Serverless Workflow specification.

To use the generated types, import the package in your go file like this:

import "github.com/serverlessworkflow/sdk-go/v2/model"

Then just reference the package in your Go file like myfunction := model.Function{}.

Parsing Serverless Workflow files

Serverless Workflow Specification supports YAML and JSON files for Workflow definitions. To transform such files into a Go data structure, use:

package sw

import (
    "github.com/serverlessworkflow/sdk-go/v2/model"
    "github.com/serverlessworkflow/sdk-go/v2/parser"
)

func ParseWorkflow(filePath string) (*model.Workflow, error) {
    workflow, err := parser.FromFile(filePath)
    if err != nil {
        return nil, err
    } 
    return workflow, nil
} 

The Workflow structure then can be used in your application.

Slack Channel

Join us at CNCF Slack, channel #serverless-workflow-sdk and say hello 🙋.

Contributors Guide

This guide aims to guide newcomers to getting started with the project standards.

Code Style

For this project we use basically the default configuration for most used IDEs. For the configurations below, make sure to properly configure your IDE:

  • imports: goimports

This should be enough to get you started.

If you are unsure that your IDE is not correctly configured, you can run the lint checks:

make lint

If something goes wrong, the error will be printed, e.g.:

$ make lint
make addheaders
make fmt
./hack/go-lint.sh
util/floatstr/floatstr_test.go:19: File is not `goimports`-ed (goimports)
        "k8s.io/apimachinery/pkg/util/yaml"
make: *** [lint] Error 1

Lint issues can be fixed with the --fix flag, this command can be used:

make lint params=--fix

EditorConfig

For IntelliJ you can find an example editorconfig file here. To use it please visit the Jetbrains documentation.

Known Issues

On MacOSX/darwin you might get this issue:

 goimports: can't extract issues from gofmt diff output

To solve install the diffutils package:

 brew install diffutils