Provides the PHP API/SPI for the Serverless Workflow Specification.
1.0.0
2023-11-25 16:39 UTC
Requires
- phpdocumentor/reflection-docblock: ^5.3
- swaggest/json-schema: ^0.12.42
- symfony/yaml: ^6.3
Requires (Dev)
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^10.4
- rector/rector: ^0.18.10
- symplify/easy-coding-standard: ^11.1
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.