Serverless Workflow Specification - PHP SDK
November 22, 2023 ยท View on GitHub
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.