Provides the Typescript API/SPI for the Serverless Workflow Specification
With the SDK you can:
- Parse workflow JSON and YAML definitions
- (WIP) Programmatically build workflow definitions
- (WIP) Validate workflow definitions
To build the project and run tests locally:
git clone https://github.com/serverlessworkflow/sdk-typescript.git
cd sdk-typescript
npm install && npm run test
You can use npm link to add the sdk-typescript
as dependency in your project.
- Clone the
sdk-typescript
project and build it:
git clone https://github.com/serverlessworkflow/sdk-typescript.git
cd sdk-typescript
npm install && npm run build
- Make the package visible globally to npm. Inside the
sdk-typescript
project folder run:
npm link
- Navigate to the folder/project in which you want to use the sdk, and run the following command:
npm link sdk-typescript
It will create a symbolic link from globally-installed sdk-typescript
to node_modules/
of the current folder.
const workflow = new WorkflowBuilder()
.withId("helloworld")
.withVersion("1.0")
.withName("Hello World Workflow")
.withDescription("Inject Hello World")
.withStart("Hello State")
.withStates([new InjectStateBuilder()
.withName("Hello State")
.withData({
"result": "Hello World!"
})
.withEnd(true).build()])
.build();
const workflow = BaseWorkflow.fromSource(source)
Where source
is the file location.
Having the following workflow instance:
const workflow = new WorkflowBuilder()
.withId("helloworld")
.withVersion("1.0")
.withName("Hello World Workflow")
.withDescription("Inject Hello World")
.withStart("Hello State")
.withStates([new InjectStateBuilder()
.withName("Hello State")
.withData({
"result": "Hello World!"
})
.withEnd(true).build()])
.build();
You can convert it to its string representation in JSON or YAML format
by using the static methods toJSON
or toYAML
respectively:
const workflowAsJSON = BaseWorkflow.toJSON(workflow);
const workflowAsYAML = BaseWorkflow.toYAML(workflow);
The sdk provides a way to validate if a workflow object is compliant with the serverlessworkflow specification.
WorkflowValidator
class provides two methods:
isValid(): boolean
const isValid = new WorkflowValidator(workflow).isValid();
validate(): ValidationErrors
const validationErrors = new WorkflowValidator(workflow).validate();
validationErrors.errors().forEach(error => console.error(error.message()))