Aller au contenu principal
Version: 2.0

Démarrage rapide avec Durable Workflow 2.0

Avant de commencer​

Objectif : exécuter un workflow en mode service et lire son résultat durable après son achèvement, en PHP, Python ou Rust.

Durée estimée : environ 15 minutes une fois le runtime disponible.

Résultat final : le SDK choisi démarre un worker et un workflow, puis affiche un identifiant de workflow, status=completed et Hello, <language>!.

Prérequis :

  • curl et un terminal
  • Docker pour le parcours local auto-hébergé, ou un espace de noms Durable Workflow Cloud déjà provisionné
  • les outils d’un langage : PHP 8.1+ avec Composer, Python 3.10+ ou Rust 1.86+

Laravel n’est pas nécessaire en mode service. Le parcours Laravel intégré est présenté séparément à la fin de ce guide.

1. Choisir le runtime en mode service​

RuntimeQuand le choisirÉtape suivante
Durable Workflow CloudVous voulez que Durable Workflow exploite le runtime, la persistance et Managed Waterline.Suivez le premier workflow Cloud. Ce parcours fournit les sources complètes PHP, Python et Rust, les adapte aux identifiants provisionnés et mène à un résultat completed. N’exécutez pas Server ni un service Waterline séparé.
Server auto-hébergéVous voulez exploiter le runtime ou suivre exactement cet exercice local avec les artefacts publiés.Continuez ci-dessous avec Docker et curl. Déployez Waterline séparément si vous souhaitez son interface opérateur.

Les sources exécutables ci-dessous utilisent un Server local auto-hébergé. Vous pouvez ainsi suivre l’exercice sans compte ni checkout du code source. Cloud utilise le même modèle de SDK et de workers. Remplacez la connexion locale de développement par les valeurs provisionnées décrites dans le runtime géré Cloud.

2. Démarrer le Server local​

Si vous avez choisi Cloud, sautez cette étape. Pour l’auto-hébergement, développez et exécutez les commandes exactes ci-dessous. Elles démarrent l’image Server épinglée, sans code source local, avec SQLite et un jeton de développement.

Démarrer l’image Server épinglée
export DW_SERVER_IMAGE=durableworkflow/server:2.5.13
export DW_AUTH_TOKEN=dev-token

docker volume create durable-workflow-quickstart

docker run --rm \
-v durable-workflow-quickstart:/app/database \
-e DW_AUTH_DRIVER=token \
-e DW_AUTH_TOKEN="$DW_AUTH_TOKEN" \
"$DW_SERVER_IMAGE" server-bootstrap

docker rm -f durable-workflow-server >/dev/null 2>&1 || true
docker run -d --name durable-workflow-server \
-p 8080:8080 \
-v durable-workflow-quickstart:/app/database \
-e DW_AUTH_DRIVER=token \
-e DW_AUTH_TOKEN="$DW_AUTH_TOKEN" \
"$DW_SERVER_IMAGE"

until curl -sf http://localhost:8080/api/ready >/dev/null; do sleep 1; done
curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \
http://localhost:8080/api/cluster/info

Résultat attendu : la requête de disponibilité réussit et les informations du cluster identifient le Server autonome local. Laissez-le tourner pendant que vous terminez le parcours d’un langage.

3. Choisir un langage​

Les trois SDK officiels sont proposés au même niveau. Seul l’onglet choisi s’affiche pour que vous puissiez suivre un parcours sans faire défiler les deux autres programmes.

Prérequis : PHP 8.1 ou une version ultérieure et Composer. Il s’agit du package durable-workflow/sdk, indépendant des frameworks.

  1. Installer le SDK.
mkdir durable-workflow-php-quickstart
cd durable-workflow-php-quickstart
composer require durable-workflow/sdk:2.2.6
  1. Ajouter le worker et le client. Développez les sources complètes et copiez les deux fichiers dans le nouveau projet.
Sources PHP complètes et exécutables

Le worker enregistre un type de workflow et un type d’activité sur sa propre file de tâches.

cat > worker.php <<'PHP'
<?php

declare(strict_types=1);

require __DIR__.'/vendor/autoload.php';

use DurableWorkflow\Client;
use DurableWorkflow\Worker;
use DurableWorkflow\Worker\ActivityContext;
use DurableWorkflow\Worker\WorkflowContext;

$client = new Client('http://localhost:8080', token: 'dev-token');
$worker = new Worker($client, 'quickstart-php');

$worker->registerActivity(
'quickstart.greet',
static fn (ActivityContext $context, string $name): string => "Hello, {$name}!",
);

$worker->registerWorkflow(
'quickstart.greeter',
static function (WorkflowContext $context, string $name): array {
$greeting = $context->activity('quickstart.greet', [$name]);

return ['greeting' => $greeting, 'language' => 'php'];
},
);

$worker->run();
PHP

Client et lecture du résultat​

Ce client démarre un workflow portant un nom unique, attend l’exécution sélectionnée, puis décrit l’état terminal durable conservé par Server.

cat > start.php <<'PHP'
<?php

declare(strict_types=1);

require __DIR__.'/vendor/autoload.php';

use DurableWorkflow\Client;

$client = new Client('http://localhost:8080', token: 'dev-token');
$workflowId = 'quickstart-php-greeter-'.bin2hex(random_bytes(4));
$handle = $client->startWorkflow(
workflowType: 'quickstart.greeter',
workflowId: $workflowId,
taskQueue: 'quickstart-php',
input: ['PHP'],
);

$result = $handle->result(timeoutSeconds: 30);
$execution = $handle->describeSelectedRun();

echo "workflow_id={$execution->workflowId}\n";
echo "status={$execution->status}\n";
echo 'result='.json_encode($result, JSON_THROW_ON_ERROR)."\n";
PHP
  1. Exécuter le worker et le client.
php worker.php > quickstart-worker.log 2>&1 &
export QUICKSTART_WORKER_PID=$!
trap 'kill "$QUICKSTART_WORKER_PID" 2>/dev/null || true' EXIT

php start.php

kill "$QUICKSTART_WORKER_PID" 2>/dev/null || true
trap - EXIT

Résultat attendu : status=completed et un résultat contenant "greeting":"Hello, PHP!". Vous avez exécuté un worker PHP autonome et consulté son résultat durable sans Laravel.

Poursuivez avec le guide du SDK PHP.

4. Nettoyer le Server local​

Les utilisateurs Cloud n’ont pas de Server local à supprimer. Pour l’exercice auto-hébergé :

docker rm -f durable-workflow-server
docker volume rm durable-workflow-quickstart

Parcours distinct : Laravel intégré​

Laravel intégré est un mode de déploiement PHP officiel distinct pour les applications qui veulent garder l’état des workflows, l’exécution des files, la configuration et les outils opérateur dans leur infrastructure Laravel. Il installe durable-workflow/workflow. Il n’utilise pas le Server autonome ni durable-workflow/sdk.

Créez une application intégrée avec le package publié :

composer create-project laravel/laravel durable-workflow-laravel-quickstart
cd durable-workflow-laravel-quickstart
composer require durable-workflow/workflow:2.5.4
php artisan migrate
php artisan queue:work

Pour disposer de l’interface opérateur dans cette même application Laravel, ajoutez le package Composer Waterline intégré qualifié :

composer require durable-workflow/waterline:2.3.1
php artisan waterline:install

Ce package Composer n’est pas le moyen d’installer le service Waterline auto-hébergé déployé séparément. Laravel intégré n’exécute pas Server et n’installe aucun des SDK du mode service.

Poursuivez avec l’installation intégrée pour configurer une file Laravel autre que sync, puis définissez et démarrez un workflow intégré. Les modes de déploiement comparent ce parcours à la plateforme en mode service.

Étapes suivantes​

Pour écrire des workflows Laravel intégrés utilisant des temporisateurs, signaux, requêtes de lecture, activités et workflows enfants, consultez la documentation du mode intégré.

La qualification d’une release est séparée de ce guide de premier succès. La suite de conformité de la plateforme contient la matrice exacte des artefacts, les contrôles des sources publiques, les transcriptions complètes, les critères de durée, le nettoyage et le contrat de démarrage rapide lisible par machine utilisés pour la certification.