Provides the PHP API/SPI for the Serverless Workflow Specification.

1.0.0 2023-11-25 16:39 UTC

This package is auto-updated.

Last update: 2024-04-25 18:04:53 UTC


README

Provides the PHP API/SPI for the Serverless Workflow Specification.

With the SDK you can:

  • Programmatically build workflow definitions
  • Parse workflow JSON and YAML definitions
  • Validate workflow definitions

Status

Current SDK version conforms to the Serverless Workflow specification v0.8.

Installation

composer install serverlessworkflow/sdk

Build

use Serverless\Workflow\Action;
use Serverless\Workflow\ActionDataFilter;
use Serverless\Workflow\FunctionDef;
use Serverless\Workflow\FunctionRef;
use Serverless\Workflow\OperationState;
use Serverless\Workflow\Workflow;

$workflow = new Workflow([
    'id' => 'greeting',
    'name' => 'Greeting Workflow',
    'description' => 'Greet Someone',
    'version' => '1.0',
    'specVersion' => '0.8',
    'start' => 'Greet',
    'states' => [
        new OperationState([
            'name' => 'Greet',
            'type' => 'operation',
            'actions' => [
                new Action([
                    'functionRef' => new FunctionRef([
                        'refName' => 'greetingFunction',
                        'arguments' => [
                            'name' => '${ .person.name }',
                        ],
                    ]),
                    'actionDataFilter' => new ActionDataFilter([
                        'results' => '${ .greeting }',
                    ]),
                ]),
            ],
            'end' => true,
        ]),
    ],
    'functions' => [
        new FunctionDef([
            'name' => 'greetingFunction',
            'operation' => 'file://myapis/greetingapis.json#greeting',
        ]),
    ],
]);

Parse

Convert from JSON/YAML source

$workflow = Workflow::fromJson(file_get_contents('workflow.json'));

$workflow = Workflow::fromYaml(file_get_contents('workflow.yaml'));

Convert to JSON/YAML

$json = $workflow->toJson();

$yaml = $workflow->toYaml();

Validate

use Serverless\Workflow\WorkflowValidator;

WorkflowValidator::validate($workflow);

The validate method will raise an exception if the provided workflow does not comply with the specification.