0.7.0 • Published 5 years ago
@testantmendoza/sdk-typescript v0.7.0
Serverless Workflow Specification - Typescript SDK
Provides the Typescript API/SPI for the Serverless Workflow Specification
With the SDK you can:
- Parse workflow JSON and YAML definitions
- Programmatically build workflow definitions
- Validate workflow definitions
Getting Started
Building locally
To build the project and run tests locally:
git clone https://github.com/serverlessworkflow/sdk-typescript.git
cd sdk-typescript
npm install && npm run update-code-base && npm run testAdd as dependency to your project
You can use npm link to add the sdk-typescript
as dependency in your project.
- Clone the
sdk-typescriptproject 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-typescriptproject 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-typescriptIt will create a symbolic link from globally-installed sdk-typescript to node_modules/ of the current folder.
How to use
Create Workflow using builder API
const workflow: Specification.Workflow = workflowBuilder()
.id("helloworld")
.version("1.0")
.name("Hello World Workflow")
.description("Inject Hello World")
.start("Hello State")
.states([injectstateBuilder()
.name("Hello State")
.data({
"result": "Hello World!"
})
.end(true)
.build()
])
.build();Create Workflow using object literals
const workflow: Specification.Workflow = {
id: 'helloworld',
version: '1.0',
name: 'Hello World Workflow',
description: 'Inject Hello World',
start: 'Hello State',
states: [
{
type: 'inject',
name: 'Hello State',
end: true,
data: {
result: "Hello World!"
}
} as Specification.Injectstate
]
};Load a file JSON/YAML to a Workflow instance
const workflow = WorkflowConverter.fromString(source)Where source is a JSON or a YAML string.
Parse a Workflow instance to JSON/YAML
Having the following workflow instance:
const workflow = workflowBuilder()
.id("helloworld")
.version("1.0")
.name("Hello World Workflow")
.description("Inject Hello World")
.start("Hello State")
.states([injectstateBuilder()
.name("Hello State")
.data({
"result": "Hello World!"
})
.end(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 = WorkflowConverter.toJson(workflow); const workflowAsYaml = WorkflowConverter.toYaml(workflow);Validate workflow definitions
The sdk provides a way to validate if a workflow object is compliant with the serverlessworkflow specification.
WorkflowValidator class provides a validation method:
validate(): boolean
const workflowValidator = new WorkflowValidator(workflow);
if (!workflowValidator.validate()) {
workflowValidator.validationErrors.forEach(error => console.error(error.message));
}0.7.0
5 years ago