From 0e9aa46b25a8c968e62e52cbcc1efabc8d626286 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Mon, 9 Nov 2026 13:38:30 +0000 Subject: [PATCH] docs: adopt PHP SDK 3.11.0 and Workflow 2.22.0 Select sdk-php 3.11.0 and workflow 2.22.0 in stable-releases.json. Document the PHP SDK 3.10/3.11 upgrade notes: the Laravel service-mode bridge now follows Workflow 2.21 floors (PHP ^8.2, Laravel ^12.69.0|^13.30.0) and refuses unsupported platforms, v2 condition fingerprints need a whole-queue upgrade and restart, static credentials are validated as given, and 3.11 occurrence deadlines need native Server 3.3.0's capability plus the queue-wide rollout order. List the new 3.10 APIs and the lazy list/history iterators. Record Workflow 2.22's unchanged support floors, embedded worker protocol 1.22 and its backup-only rollback boundary after occurrence deadlines are used. Update all seven translations and their reviewed source hashes. Co-Authored-By: Claude Opus 5.5 --- docs/compatibility.md | 24 +++++++- docs/laravel-adoption.md | 17 +++--- docs/polyglot/php.md | 51 +++++++++++++++- .../current/compatibility.md | 27 ++++++++- .../current/laravel-adoption.md | 13 ++-- .../current/polyglot/php.md | 60 ++++++++++++++++++- i18n/de/source-hashes.json | 6 +- .../current/compatibility.md | 27 ++++++++- .../current/laravel-adoption.md | 18 +++--- .../current/polyglot/php.md | 57 +++++++++++++++++- i18n/es/source-hashes.json | 6 +- .../current/compatibility.md | 26 +++++++- .../current/laravel-adoption.md | 18 +++--- .../current/polyglot/php.md | 58 +++++++++++++++++- i18n/fr/source-hashes.json | 6 +- .../current/compatibility.md | 23 ++++++- .../current/laravel-adoption.md | 11 ++-- .../current/polyglot/php.md | 18 +++++- i18n/ja/source-hashes.json | 6 +- .../current/compatibility.md | 26 +++++++- .../current/laravel-adoption.md | 18 +++--- .../current/polyglot/php.md | 57 +++++++++++++++++- i18n/pt-BR/source-hashes.json | 6 +- .../current/compatibility.md | 24 +++++++- .../current/laravel-adoption.md | 18 +++--- .../current/polyglot/php.md | 54 ++++++++++++++++- i18n/uk/source-hashes.json | 6 +- .../current/compatibility.md | 19 +++++- .../current/laravel-adoption.md | 8 +-- .../current/polyglot/php.md | 18 +++++- i18n/zh-Hans/source-hashes.json | 6 +- static/stable-releases.json | 6 +- 32 files changed, 624 insertions(+), 114 deletions(-) diff --git a/docs/compatibility.md b/docs/compatibility.md index c2bfafcfd36..6ca12eb3424 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -99,11 +99,12 @@ The embedded package and the service-mode SDK have separate support contracts. | Package line | PHP | Laravel | | --- | --- | --- | -| Current embedded Workflow 2.21 | PHP 8.2+ in 8.x; PHP 8.3+ for Laravel 13 | `^12.69.0` or `^13.30.0` | +| Current embedded Workflow 2.22 | PHP 8.2+ in 8.x; PHP 8.3+ for Laravel 13 | `^12.69.0` or `^13.30.0` | | Embedded Workflow 2.20.5 | PHP `^8.1`, subject to Laravel's own minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` or `^13.30.0` | -| Published PHP SDK 3.9.5 | Bare SDK PHP `^8.1`; the Laravel bridge also follows Laravel's PHP minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` or `^13.30.0` | +| Published PHP SDK 3.11 | Bare SDK PHP `^8.1`; the Laravel bridge needs PHP `^8.2`, and PHP 8.3+ for Laravel 13 | `^12.69.0` or `^13.30.0` | +| PHP SDK 3.9.5 | Bare SDK PHP `^8.1`; the Laravel bridge also follows Laravel's PHP minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` or `^13.30.0` | -The [published embedded upgrade contract](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +The [published embedded upgrade contract](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) and each release's `composer.json` are the package authorities. The current embedded release was verified on Laravel 12 with PHP 8.2–8.4 and Laravel 13 with PHP 8.3–8.4. Its PHP 8.1 and Laravel 10/11 support has been removed. This does @@ -118,6 +119,23 @@ Preserve the original runtime for open v1 runs, and follow the [Laravel adoption guide](/docs/laravel-adoption) for drain or coexistence. Changing a Composer requirement does not migrate durable history. +PHP SDK 3.10 moved the Laravel service-mode bridge to the same PHP and Laravel +floors as Workflow 2.21 and removed Laravel 10/11 support; 3.11 keeps them. +Its provider refuses unsupported or unknown framework and PHP versions before +registering configuration, clients or workers. Existing SDK 3.9.x applications +keep their own contract while the platform is upgraded. See the +[PHP SDK upgrade notes](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +Workflow 2.22 adds no database migration and keeps the 2.21 support floors. +Its embedded worker protocol advertises `1.22` and still accepts `1.20` +requests. `1.22` adds an opt-in occurrence deadline that external callers can +request for condition waits; the embedded runner keeps its existing waiting +behavior. After any workflow has used that policy, roll back to an earlier +Workflow release only by restoring a backup taken before the upgrade. Older +releases can discard the policy and mix the wait chain, and upgrading again +does not repair that history. See the +[2.22.0 changelog](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Stability Levels Every public surface in Durable Workflow carries exactly one of these diff --git a/docs/laravel-adoption.md b/docs/laravel-adoption.md index d1286befa6e..b4bc030869d 100644 --- a/docs/laravel-adoption.md +++ b/docs/laravel-adoption.md @@ -42,11 +42,12 @@ choosing the transition policy here. | 2.0 embedded Laravel | PHP SDK service mode | The application should stop owning the orchestration runtime or needs a shared/polyglot runtime boundary. | Route new starts to the service runtime after its workers are ready. Drain embedded runs where they started, or use the explicit eligible embedded-v2 import procedure for self-hosted Server. | Check the [published Laravel support lines](./compatibility.md#laravel-support) -before choosing a destination. The current embedded package requires Laravel -12.69 or 13.30 and compatible PHP. The published PHP SDK 3.9.5 still supports -patched Laravel 10–13; its bare service-mode client keeps PHP 8.1 support. -An older v1 application may need a framework upgrade before moving to the -current embedded line. Preserve its v1 runtime and open runs during that upgrade. +before choosing a destination. The current embedded package and, from PHP SDK +3.10, the service-mode Laravel bridge both require Laravel 12.69 or 13.30 and +compatible PHP. The bare service-mode client keeps PHP 8.1 support. PHP SDK +3.9.x keeps its earlier patched Laravel 10–13 bridge contract. An older v1 +application may need a framework upgrade before moving to either current line. +Preserve its v1 runtime and open runs during that upgrade. ## Compare the ownership boundary @@ -331,8 +332,10 @@ the published PHP SDK artifact authority, not copied from a point release: composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -Supported Laravel versions auto-discover the provider. Publish the package -configuration and list the attributed handler classes: +Supported Laravel versions auto-discover the provider. On an unsupported or +unknown Laravel or PHP version, the provider refuses before registering any +configuration, clients or workers. Publish the package configuration and list +the attributed handler classes: ```php diff --git a/docs/polyglot/php.md b/docs/polyglot/php.md index 49be841a512..d54e4b6685b 100644 --- a/docs/polyglot/php.md +++ b/docs/polyglot/php.md @@ -74,7 +74,10 @@ for the complete ownership comparison. ## Requirements -- PHP 8.1 or later +- PHP 8.1 or later for the framework-neutral SDK +- For the Laravel service-mode bridge in PHP SDK 3.10 and later: PHP 8.2 or + later and Laravel 12.69 or later in 12.x, or Laravel 13.30 or later in 13.x + with PHP 8.3 or later - A reachable [self-hosted Server](/docs/polyglot/server/) or provisioned [Cloud namespace runtime](/docs/polyglot/cloud-control-plane) @@ -282,6 +285,48 @@ service-mode bridge, including drain and rollback. Use [Deployment Modes](/docs/polyglot/deployment-modes/) for the wider runtime boundary comparison. +## Upgrade to PHP SDK 3.10 and 3.11 {#upgrade-to-3-10-and-3-11} + +Read the [PHP SDK upgrade guide](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md) +before deploying. Upgrade every worker that can receive work from a task queue +together, including standby and autoscaling pools. + +- **Laravel bridge.** From 3.10, the Laravel service-mode bridge follows + Workflow 2.21: PHP `^8.2` and patched Laravel `^12.69.0|^13.30.0`. Laravel + 10 and 11 are no longer supported. The provider refuses unsupported or + unknown framework and PHP versions before registering anything. The bare SDK + keeps PHP `^8.1` and Symfony 6.4/7/8 support. +- **Condition fingerprints.** From 3.10, new condition waits record v2 + (`dwphp2:sha256:`) predicate fingerprints. Older workers reject them, so + rolling workers back below 3.10 after v2 waits exist can fail replay. Stop or + drain older workers before replacements start, deploy PHP sources atomically + and restart every long-running worker, including workers using OPcache. + Workers that replay v2 waits need PHP's tokenizer. Existing v1 waits still + require an exact source-line match. +- **Static credentials.** From 3.10, static credentials are validated as + given. Malformed UTF-8, Unicode whitespace at either edge and embedded + control characters now fail instead of being trimmed or ignored. Check shared, + client, worker and framework process-handoff values before upgrading. +- **Occurrence deadlines.** In 3.11, a new top-level condition wait keeps its + first deadline across false wakes when the Server advertises + `condition_wait_occurrence_deadline` (native Server 3.3.0 or later). Without + that capability, workers send the same commands as before. Grouped condition + waits do not opt in yet. On an older Server, upgrade every worker on the queue + to 3.11 before upgrading the Server. On a Server that already advertises the + capability, drain or stop every older worker before any 3.11 worker consumes + the queue. Once an anchored wait exists, do not roll that queue's workers back + below 3.11. + +PHP SDK 3.10 also adds `WorkflowContext::startChildWorkflow()`, which returns a +`ChildWorkflowHandle` once the child start commits and needs a runtime that +advertises `child_workflow_start_turn`. Other additions are +`ActivityContext::activityExecutionId`, optional typed declarations for +`upsertSearchAttributes()`, lazy workflow list and history iterators, and the +`enableCompletionPipelining` Worker option, which defaults to `false`. +Completion-carried polls are used only when the runtime advertises them. See +the [3.11.0 changelog](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md) +for the complete list. + ## Protocol and release boundary The SDK declares its supported server range, worker protocol version, @@ -308,7 +353,9 @@ not matching package version numbers. ## Workflow list and history pages {#workflow-list-and-history-pages} -These published calls return **one page**, not an automatic complete read: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continue with the returned opaque token while keeping namespace, filters and selected workflow/run fixed; stop at the final null/empty token and handle page errors explicitly. A partial page is not a replay bundle. Use the SDK history-export API for offline replay. The [published PHP 3.2.0 client source](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) defines the current parameters; no new iterator capability is implied. +These published calls return **one page**, not an automatic complete read: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continue with the returned opaque token while keeping namespace, filters and selected workflow/run fixed; stop at the final null/empty token and handle page errors explicitly. A partial page is not a replay bundle. Use the SDK history-export API for offline replay. The [published PHP 3.2.0 client source](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) defines the page parameters. + +PHP SDK 3.10.0 and later also provide `Client::iterateWorkflows()` and `Client::iterateWorkflowHistory()`. They read a complete workflow listing or exact-run history lazily, one page at a time, keeping the opaque cursor, namespace and filters. Errors on later pages propagate, and malformed continuations or token cycles are refused instead of truncating or looping. See the [published PHP 3.11.0 client source](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Bounded failure reports {#bounded-failure-reports} diff --git a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md index 0aec467565f..518d98f6018 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/compatibility.md @@ -66,11 +66,12 @@ Das eingebettete Paket und das Service-Modus-SDK haben eigene Supportverträge. | Paketlinie | PHP | Laravel | | --- | --- | --- | -| Aktuelles eingebettetes Workflow 2.21 | PHP 8.2+ in 8.x; PHP 8.3+ für Laravel 13 | `^12.69.0` oder `^13.30.0` | +| Aktuelles eingebettetes Workflow 2.22 | PHP 8.2+ in 8.x; PHP 8.3+ für Laravel 13 | `^12.69.0` oder `^13.30.0` | | Eingebettetes Workflow 2.20.5 | PHP `^8.1`, zusätzlich gilt das Framework-Minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` oder `^13.30.0` | -| Veröffentlichtes PHP-SDK 3.9.5 | Reines SDK PHP `^8.1`; die Laravel-Bridge beachtet ebenfalls das Framework-Minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` oder `^13.30.0` | +| Veröffentlichtes PHP-SDK 3.11 | Reines SDK PHP `^8.1`; die Laravel-Bridge benötigt PHP `^8.2` und für Laravel 13 PHP 8.3+ | `^12.69.0` oder `^13.30.0` | +| PHP-SDK 3.9.5 | Reines SDK PHP `^8.1`; die Laravel-Bridge beachtet ebenfalls das Framework-Minimum | `^10.50.4`, `^11.56.1`, `^12.69.0` oder `^13.30.0` | -Maßgeblich sind der [veröffentlichte eingebettete Upgrade-Vertrag](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +Maßgeblich sind der [veröffentlichte eingebettete Upgrade-Vertrag](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) und die jeweilige `composer.json`. Das aktuelle eingebettete Release wurde mit Laravel 12/PHP 8.2–8.4 und Laravel 13/PHP 8.3–8.4 geprüft. Es entfernt PHP 8.1 und Laravel 10/11. Die [historische stabile v1-Anleitung](/docs/1.x/installation/) @@ -84,6 +85,26 @@ Laufzeit offener v1-Läufe und folgen Sie der [Adoptionsanleitung](/docs/laravel für Drain oder Koexistenz. Eine geänderte Composer-Anforderung migriert keinen dauerhaften Verlauf. +PHP-SDK 3.10 hat die Laravel-Bridge für den Service-Modus auf dieselben PHP- und +Laravel-Mindestversionen wie Workflow 2.21 angehoben und den Support für +Laravel 10/11 entfernt; 3.11 behält sie bei. Ihr Provider verweigert nicht +unterstützte oder unbekannte Framework- und PHP-Versionen, bevor er +Konfiguration, Clients oder Worker registriert. Bestehende Anwendungen mit +SDK 3.9.x behalten ihren eigenen Vertrag, während die Plattform aktualisiert +wird. Siehe die [Upgrade-Hinweise zum PHP-SDK](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +Workflow 2.22 fügt keine Datenbankmigration hinzu und behält die +Mindestversionen von 2.21 bei. Sein eingebettetes Worker-Protokoll kündigt `1.22` +an und akzeptiert weiterhin Anfragen mit `1.20`. `1.22` ergänzt eine optionale +Frist pro Vorkommen, die externe Aufrufer für Bedingungswartevorgänge anfordern +können; der eingebettete Runner behält sein bisheriges Warteverhalten bei. +Sobald ein Workflow diese Richtlinie verwendet hat, ist ein Rollback auf ein +früheres Workflow-Release nur durch Wiederherstellen einer vor dem Upgrade +erstellten Sicherung möglich. Ältere Releases können die Richtlinie verwerfen +und die Wartekette durcheinanderbringen; ein erneutes Upgrade repariert diesen +Verlauf nicht. Siehe das +[Changelog zu 2.22.0](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Stabilitätsstufen {#stability-levels} Jede öffentliche Durable-Workflow-Schnittstelle trägt genau eine dieser Stabilitätsstufen. Die Stufen sind explizit: Eine nicht klassifizierte Schnittstelle ist nicht öffentlich. diff --git a/i18n/de/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/de/docusaurus-plugin-content-docs/current/laravel-adoption.md index 52622ea4128..048c2eb81d6 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -35,11 +35,12 @@ Für ein unmittelbares v1-Upgrade auf Paketebene halten Sie den ausführlichen [ | Eingebettetes 2.0-Laravel | PHP-SDK-Dienstmodus | Die Anwendung soll die Orchestrierungslaufzeit nicht mehr verwalten oder benötigt eine gemeinsame/mehrsprachige Laufzeitgrenze. | Neue Starts nach Bereitschaft der Worker an die Dienstlaufzeit leiten. Eingebettete Läufe an ihrem Ursprungsort abschließen lassen oder für selbst gehosteten Server das explizite Importverfahren für geeignete eingebettete v2-Läufe verwenden. | Prüfen Sie vor der Zielwahl die [veröffentlichten Laravel-Supportlinien](./compatibility.md#laravel-support). -Das aktuelle eingebettete Paket benötigt Laravel 12.69 oder 13.30 und passendes -PHP. Das veröffentlichte PHP-SDK 3.9.5 unterstützt weiterhin gepatchtes Laravel -10–13; der reine Client behält PHP 8.1 bei. Eine ältere v1-Anwendung benötigt -möglicherweise zuerst ein Framework-Upgrade. Bewahren Sie dabei ihre -v1-Laufzeit und offenen Läufe. +Das aktuelle eingebettete Paket und ab PHP-SDK 3.10 auch die Laravel-Bridge des +Dienstmodus benötigen beide Laravel 12.69 oder 13.30 und passendes PHP. Der +reine Dienstmodus-Client behält PHP 8.1 bei. PHP-SDK 3.9.x behält seinen +früheren Bridge-Vertrag für gepatchtes Laravel 10–13. Eine ältere v1-Anwendung +benötigt möglicherweise ein Framework-Upgrade, bevor sie auf eine der beiden +aktuellen Linien wechselt. Bewahren Sie dabei ihre v1-Laufzeit und offenen Läufe. ## Verantwortungsgrenzen vergleichen {#compare-the-ownership-boundary} @@ -299,7 +300,7 @@ Installieren Sie das unabhängig veröffentlichte SDK-Paket. Dieser Befehl wird composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -Unterstützte Laravel-Versionen erkennen den Provider automatisch. Veröffentlichen Sie die Paketkonfiguration und listen Sie die mit Attributen versehenen Handlerklassen auf: +Unterstützte Laravel-Versionen erkennen den Provider automatisch. Bei einer nicht unterstützten oder unbekannten Laravel- oder PHP-Version bricht der Provider ab, bevor er Konfiguration, Clients oder Worker registriert. Veröffentlichen Sie die Paketkonfiguration und listen Sie die mit Attributen versehenen Handlerklassen auf: ```php diff --git a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/php.md index 654b848da3f..3f3130d0bdc 100644 --- a/i18n/de/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/de/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -76,7 +76,10 @@ vollständigen Zuständigkeitsvergleich finden Sie unter ## Voraussetzungen {#requirements} -- PHP 8.1 oder neuer +- PHP 8.1 oder neuer für das Framework-neutrale SDK +- Für die Laravel-Service-Modus-Brücke ab PHP SDK 3.10: PHP 8.2 oder neuer und + Laravel 12.69 oder neuer in 12.x oder Laravel 13.30 oder neuer in 13.x mit + PHP 8.3 oder neuer - Ein erreichbarer [selbst gehosteter Server](/docs/polyglot/server/) oder eine bereitgestellte [Cloud-Namespace-Laufzeitumgebung](/docs/polyglot/cloud-control-plane) @@ -289,6 +292,57 @@ ausgelieferten Service-Modus-Brücke, einschließlich Auslaufen und Rollback. [Bereitstellungsmodi](/docs/polyglot/deployment-modes/) vergleicht die Laufzeitgrenzen umfassender. +## Upgrade auf PHP SDK 3.10 und 3.11 {#upgrade-to-3-10-and-3-11} + +Lesen Sie vor der Bereitstellung den [Upgrade-Leitfaden des PHP SDK](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md). +Aktualisieren Sie alle Worker, die Arbeit aus einer Task-Warteschlange erhalten +können, gemeinsam, einschließlich Standby- und Autoscaling-Pools. + +- **Laravel-Brücke.** Ab 3.10 folgt die Laravel-Service-Modus-Brücke + Workflow 2.21: PHP `^8.2` und gepatchtes Laravel `^12.69.0|^13.30.0`. Laravel + 10 und 11 werden nicht mehr unterstützt. Der Provider verweigert nicht + unterstützte oder unbekannte Framework- und PHP-Versionen, bevor er + irgendetwas registriert. Das reine SDK behält die Unterstützung für PHP + `^8.1` und Symfony 6.4/7/8 bei. +- **Bedingungs-Fingerprints.** Ab 3.10 zeichnen neue Bedingungswarteoperationen + v2-Prädikat-Fingerprints (`dwphp2:sha256:`) auf. Ältere Worker lehnen sie ab; + ein Zurückrollen der Worker unter 3.10, nachdem v2-Warteoperationen + existieren, kann daher das Replay fehlschlagen lassen. Stoppen Sie ältere + Worker oder lassen Sie sie auslaufen, bevor Ersatz-Worker starten, stellen Sie + PHP-Quellen atomar bereit und starten Sie jeden langlebigen Worker neu, + einschließlich Workern mit OPcache. Worker, die v2-Warteoperationen erneut + abspielen, benötigen den Tokenizer von PHP. Bestehende + v1-Warteoperationen erfordern weiterhin eine exakte Übereinstimmung der + Quellzeile. +- **Statische Anmeldedaten.** Ab 3.10 werden statische Anmeldedaten so + validiert, wie sie übergeben werden. Fehlerhaftes UTF-8, Unicode-Leerraum an + einem der Ränder und eingebettete Steuerzeichen führen jetzt zu einem Fehler, + statt entfernt oder ignoriert zu werden. Prüfen Sie vor dem Upgrade gemeinsame + Werte sowie Client-, Worker- und Framework-Werte für die Übergabe zwischen + Prozessen. +- **Fristen pro Vorkommen.** In 3.11 behält eine neue Bedingungswarteoperation + auf oberster Ebene ihre erste Frist über falsche Aufweckvorgänge hinweg bei, + wenn der Server `condition_wait_occurrence_deadline` ankündigt (nativer + Server 3.3.0 oder neuer). Ohne diese Fähigkeit senden Worker dieselben Befehle + wie bisher. Gruppierte Bedingungswarteoperationen nehmen noch nicht daran + teil. Aktualisieren Sie bei einem älteren Server zuerst jeden Worker der + Warteschlange auf 3.11, bevor Sie den Server aktualisieren. Bei einem Server, + der die Fähigkeit bereits ankündigt, lassen Sie jeden älteren Worker auslaufen + oder stoppen ihn, bevor irgendein 3.11-Worker die Warteschlange verarbeitet. + Sobald eine verankerte Warteoperation existiert, rollen Sie die Worker dieser + Warteschlange nicht unter 3.11 zurück. + +PHP SDK 3.10 ergänzt außerdem `WorkflowContext::startChildWorkflow()`. Die +Methode gibt ein `ChildWorkflowHandle` zurück, sobald der Start des +Kind-Workflows festgeschrieben ist, und benötigt eine Laufzeit, die +`child_workflow_start_turn` ankündigt. Weitere Ergänzungen sind +`ActivityContext::activityExecutionId`, optionale typisierte Deklarationen für +`upsertSearchAttributes()`, verzögert ladende Iteratoren für Workflow-Listen und +Verlauf sowie die Worker-Option `enableCompletionPipelining`, deren Standardwert +`false` ist. Mit Abschlüssen übertragene Polls werden nur verwendet, wenn die +Laufzeit sie ankündigt. Die vollständige Liste finden Sie im +[Changelog zu 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md). + ## Protokoll- und Release-Grenze {#protocol-and-release-boundary} Das SDK deklariert seinen unterstützten Server-Bereich, die Worker-Protokollversion, @@ -315,7 +369,9 @@ deklarierten SDK-Vertrag, nicht übereinstimmenden Paketversionsnummern. ## Seiten für Workflow-Listen und Verlauf {#workflow-list-and-history-pages} -Diese veröffentlichten Aufrufe liefern **eine Seite**, keinen automatischen vollständigen Abruf: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Setzen Sie mit dem zurückgegebenen undurchsichtigen Token fort und behalten Sie Namespace, Filter und Workflow/Lauf bei. Enden Sie beim letzten null/leeren Token und behandeln Sie Seitenfehler ausdrücklich. Eine Teilseite ist kein Replay-Bundle. Nutzen Sie für Offline-Replay die Verlaufsexport-API des SDK. Der [veröffentlichte Client PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) definiert aktuelle Parameter; neue automatische Iteratoren werden damit nicht zugesagt. +Diese veröffentlichten Aufrufe liefern **eine Seite**, keinen automatischen vollständigen Abruf: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Setzen Sie mit dem zurückgegebenen undurchsichtigen Token fort und behalten Sie Namespace, Filter und Workflow/Lauf bei. Enden Sie beim letzten null/leeren Token und behandeln Sie Seitenfehler ausdrücklich. Eine Teilseite ist kein Replay-Bundle. Nutzen Sie für Offline-Replay die Verlaufsexport-API des SDK. Der [veröffentlichte Client PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) definiert die Seitenparameter. + +PHP SDK 3.10.0 und neuer bieten zusätzlich `Client::iterateWorkflows()` und `Client::iterateWorkflowHistory()`. Sie lesen eine vollständige Workflow-Liste oder den Verlauf eines exakten Laufs verzögert, Seite für Seite, und behalten dabei den undurchsichtigen Cursor, Namespace und Filter bei. Fehler auf späteren Seiten werden weitergegeben; fehlerhafte Fortsetzungen oder Token-Zyklen werden abgelehnt, statt die Ausgabe abzuschneiden oder in eine Schleife zu geraten. Siehe den [veröffentlichten Client PHP 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Begrenzte Fehlerberichte {#bounded-failure-reports} diff --git a/i18n/de/source-hashes.json b/i18n/de/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/de/source-hashes.json +++ b/i18n/de/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md index 317ccdbe230..df68be8cabd 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/compatibility.md @@ -100,11 +100,12 @@ El paquete integrado y el SDK de modo servicio tienen contratos distintos. | Línea del paquete | PHP | Laravel | | --- | --- | --- | -| Workflow integrado 2.21 actual | PHP 8.2+ de 8.x; PHP 8.3+ para Laravel 13 | `^12.69.0` o `^13.30.0` | +| Workflow integrado 2.22 actual | PHP 8.2+ de 8.x; PHP 8.3+ para Laravel 13 | `^12.69.0` o `^13.30.0` | | Workflow integrado 2.20.5 | PHP `^8.1`, sujeto al mínimo del framework | `^10.50.4`, `^11.56.1`, `^12.69.0` o `^13.30.0` | -| SDK PHP 3.9.5 publicado | SDK básico PHP `^8.1`; el puente Laravel también exige el mínimo del framework | `^10.50.4`, `^11.56.1`, `^12.69.0` o `^13.30.0` | +| SDK PHP 3.11 publicado | SDK básico PHP `^8.1`; el puente Laravel necesita PHP `^8.2`, y PHP 8.3+ para Laravel 13 | `^12.69.0` o `^13.30.0` | +| SDK PHP 3.9.5 | SDK básico PHP `^8.1`; el puente Laravel también exige el mínimo del framework | `^10.50.4`, `^11.56.1`, `^12.69.0` o `^13.30.0` | -Las autoridades son el [contrato integrado publicado](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +Las autoridades son el [contrato integrado publicado](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) y el `composer.json` de cada versión. La versión integrada actual se verificó con Laravel 12/PHP 8.2–8.4 y Laravel 13/PHP 8.3–8.4. Retira PHP 8.1 y Laravel 10/11. No cambia la [guía histórica de v1 estable](/docs/1.x/installation/) @@ -117,6 +118,26 @@ permita. Conserva el runtime original de las ejecuciones v1 abiertas y sigue la [guía de adopción](/docs/laravel-adoption) para drenar o coexistir. Cambiar la restricción Composer no migra el historial durable. +El SDK PHP 3.10 llevó el puente Laravel de modo servicio a los mismos mínimos +de PHP y Laravel que Workflow 2.21 y retiró el soporte para Laravel 10/11; 3.11 +los mantiene. Su proveedor rechaza versiones del framework y de PHP no +compatibles o desconocidas antes de registrar configuración, clientes o workers. +Las aplicaciones existentes con el SDK 3.9.x conservan su propio contrato +mientras se actualiza la plataforma. Consulta las +[notas de actualización del SDK PHP](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +Workflow 2.22 no añade ninguna migración de base de datos y mantiene los +mínimos de soporte de 2.21. Su protocolo de workers integrado anuncia `1.22` y +sigue aceptando solicitudes `1.20`. `1.22` añade un plazo por ocurrencia +opcional que los llamantes externos pueden solicitar para las esperas de +condición; el ejecutor integrado mantiene su comportamiento de espera actual. +Después de que cualquier workflow haya usado esa política, revierte a una +versión anterior de Workflow solo restaurando una copia de seguridad tomada +antes de la actualización. Las versiones anteriores pueden descartar la +política y mezclar la cadena de espera, y volver a actualizar no repara ese +historial. Consulta el +[registro de cambios de 2.22.0](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Niveles de estabilidad {#stability-levels} Cada interfaz pública tiene exactamente uno de estos niveles de estabilidad. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/es/docusaurus-plugin-content-docs/current/laravel-adoption.md index 6adb44e4e75..2e4ec0929fa 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -42,11 +42,13 @@ elegir aquí la política de transición. | Laravel 2.0 integrado | SDK PHP en modo servicio | La aplicación debe dejar de operar la orquestación o necesita un entorno compartido/políglota. | Dirige los nuevos inicios al servicio tras preparar sus workers. Drena las ejecuciones integradas en origen o usa la importación explícita de ejecuciones v2 elegibles a Server autogestionado. | Consulta las [líneas publicadas compatibles con Laravel](./compatibility.md#laravel-support) -antes de elegir un destino. El paquete integrado actual requiere Laravel 12.69 o -13.30 y un PHP compatible. El SDK PHP 3.9.5 publicado conserva el soporte para -Laravel 10–13 con los parches mínimos; el cliente básico mantiene PHP 8.1. -Una aplicación v1 antigua puede necesitar una actualización del framework antes -de pasar a la línea integrada actual. Conserva su runtime v1 y sus ejecuciones abiertas. +antes de elegir un destino. El paquete integrado actual y, desde el SDK PHP +3.10, el puente Laravel de modo servicio requieren Laravel 12.69 o 13.30 y un +PHP compatible. El cliente básico de modo servicio mantiene PHP 8.1. El SDK PHP +3.9.x conserva su contrato anterior del puente para Laravel 10–13 con los +parches mínimos. Una aplicación v1 antigua puede necesitar una actualización +del framework antes de pasar a cualquiera de las dos líneas actuales. Conserva +su runtime v1 y sus ejecuciones abiertas durante esa actualización. ## Compara los límites de responsabilidad {#compare-the-ownership-boundary} @@ -330,8 +332,10 @@ autoridad del artefacto SDK PHP publicado, sin copiar una versión puntual: composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -Las versiones compatibles de Laravel descubren automáticamente el proveedor. Publica la configuración y -enumera las clases de manejadores con atributos: +Las versiones compatibles de Laravel descubren automáticamente el proveedor. Con +una versión de Laravel o PHP no compatible o desconocida, el proveedor la +rechaza antes de registrar ninguna configuración, cliente ni worker. Publica la +configuración y enumera las clases de manejadores con atributos: ```php diff --git a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/php.md index 35c9a381275..80d26a94102 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -74,7 +74,10 @@ y ejecuta el trabajo mediante sus colas Laravel. Consulta ## Requisitos {#requirements} -- PHP 8.1 o posterior +- PHP 8.1 o posterior para el SDK independiente del framework +- Para el puente Laravel de modo servicio en el SDK PHP 3.10 y posteriores: PHP + 8.2 o posterior y Laravel 12.69 o posterior en 12.x, o Laravel 13.30 o + posterior en 13.x con PHP 8.3 o posterior - Un [Server autohospedado](/docs/polyglot/server/) accesible o un [runtime de espacio de nombres de Cloud](/docs/polyglot/cloud-control-plane) aprovisionado @@ -287,6 +290,54 @@ mismo caso representativo en v1, v2 integrado y este puente de modo servicio, incluidos drenaje y reversión. Utiliza [Modos de despliegue](/docs/polyglot/deployment-modes/) para una comparación más amplia de límites del runtime. +## Actualizar al SDK PHP 3.10 y 3.11 {#upgrade-to-3-10-and-3-11} + +Lee la [guía de actualización del SDK PHP](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md) +antes de desplegar. Actualiza a la vez todos los workers que puedan recibir +trabajo de una cola de tareas, incluidos los grupos en espera y de autoescalado. + +- **Puente Laravel.** Desde 3.10, el puente Laravel de modo servicio sigue a + Workflow 2.21: PHP `^8.2` y Laravel con parches `^12.69.0|^13.30.0`. Laravel + 10 y 11 dejan de ser compatibles. El proveedor rechaza versiones del + framework y de PHP no compatibles o desconocidas antes de registrar nada. El + SDK básico mantiene PHP `^8.1` y la compatibilidad con Symfony 6.4/7/8. +- **Huellas de condición.** Desde 3.10, las nuevas esperas de condición + registran huellas de predicado v2 (`dwphp2:sha256:`). Los workers anteriores + las rechazan, por lo que revertir los workers a una versión anterior a 3.10 + cuando ya existen esperas v2 puede hacer fallar el replay. Detén o drena los + workers anteriores antes de que arranquen los de reemplazo, despliega el + código PHP de forma atómica y reinicia todos los workers de larga duración, + incluidos los que usan OPcache. Los workers que reproducen esperas v2 + necesitan el tokenizer de PHP. Las esperas v1 existentes siguen exigiendo una + coincidencia exacta de la línea de código fuente. +- **Credenciales estáticas.** Desde 3.10, las credenciales estáticas se validan + tal como se proporcionan. El UTF-8 mal formado, los espacios en blanco Unicode + en cualquiera de los extremos y los caracteres de control incrustados ahora + fallan en lugar de recortarse o ignorarse. Revisa los valores compartidos, de + cliente, de worker y de traspaso entre procesos del framework antes de + actualizar. +- **Plazos por ocurrencia.** En 3.11, una nueva espera de condición de nivel + superior conserva su primer plazo tras los despertares falsos cuando el + Server anuncia `condition_wait_occurrence_deadline` (Server nativo 3.3.0 o + posterior). Sin esa capacidad, los workers envían los mismos comandos que + antes. Las esperas de condición agrupadas todavía no la activan. Con un + Server anterior, actualiza a 3.11 todos los workers de la cola antes de + actualizar el Server. Con un Server que ya anuncia la capacidad, drena o + detén todos los workers anteriores antes de que cualquier worker 3.11 consuma + la cola. Una vez que exista una espera anclada, no reviertas los workers de + esa cola a una versión anterior a 3.11. + +El SDK PHP 3.10 también añade `WorkflowContext::startChildWorkflow()`, que +devuelve un `ChildWorkflowHandle` una vez confirmado el inicio del hijo y +necesita un runtime que anuncie `child_workflow_start_turn`. Otras novedades son +`ActivityContext::activityExecutionId`, declaraciones tipadas opcionales para +`upsertSearchAttributes()`, iteradores diferidos de listas e historial de +workflows y la opción de Worker `enableCompletionPipelining`, que de forma +predeterminada es `false`. Los sondeos transportados en la finalización solo se +usan cuando el runtime los anuncia. Consulta el +[registro de cambios de 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md) +para ver la lista completa. + ## Límites de protocolo y versiones {#protocol-and-release-boundary} El SDK declara el intervalo de servidores admitidos, la versión de protocolo @@ -313,7 +364,9 @@ del SDK, no de que coincidan los números de versión de paquetes. ## Páginas de lista e historial de workflows {#workflow-list-and-history-pages} -Estas llamadas publicadas devuelven **una página**, no una lectura completa automática: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continúe con el token opaco devuelto manteniendo namespace, filtros y workflow/ejecución seleccionados; termine con token nulo/vacío y gestione los errores de página. Una página parcial no es un bundle de reproducción. Use la API de exportación de historial del SDK para reproducción sin servidor. El [cliente publicado PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) define los parámetros actuales; no se implica un nuevo iterador. +Estas llamadas publicadas devuelven **una página**, no una lectura completa automática: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continúe con el token opaco devuelto manteniendo namespace, filtros y workflow/ejecución seleccionados; termine con token nulo/vacío y gestione los errores de página. Una página parcial no es un bundle de reproducción. Use la API de exportación de historial del SDK para reproducción sin servidor. El [cliente publicado PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) define los parámetros de página. + +El SDK PHP 3.10.0 y posteriores también ofrecen `Client::iterateWorkflows()` y `Client::iterateWorkflowHistory()`. Leen de forma diferida un listado completo de workflows o el historial de una ejecución exacta, una página cada vez, conservando el cursor opaco, el namespace y los filtros. Los errores de páginas posteriores se propagan, y las continuaciones mal formadas o los ciclos de tokens se rechazan en lugar de truncar el resultado o entrar en bucle. Consulte el [cliente publicado PHP 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Informes de error acotados {#bounded-failure-reports} diff --git a/i18n/es/source-hashes.json b/i18n/es/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/es/source-hashes.json +++ b/i18n/es/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md index de6d0dee6d2..e2dbaf44c96 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/compatibility.md @@ -96,11 +96,12 @@ embarqué et le SDK en mode service ont des contrats distincts. | Branche du paquet | PHP | Laravel | | --- | --- | --- | -| Workflow embarqué 2.21 actuel | PHP 8.2+ en 8.x ; PHP 8.3+ pour Laravel 13 | `^12.69.0` ou `^13.30.0` | +| Workflow embarqué 2.22 actuel | PHP 8.2+ en 8.x ; PHP 8.3+ pour Laravel 13 | `^12.69.0` ou `^13.30.0` | | Workflow embarqué 2.20.5 | PHP `^8.1`, sous réserve du minimum du framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | -| SDK PHP 3.9.5 publié | SDK de base PHP `^8.1` ; le pont Laravel suit aussi le minimum du framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | +| SDK PHP 3.11 publié | SDK de base PHP `^8.1` ; le pont Laravel exige PHP `^8.2`, et PHP 8.3+ pour Laravel 13 | `^12.69.0` ou `^13.30.0` | +| SDK PHP 3.9.5 | SDK de base PHP `^8.1` ; le pont Laravel suit aussi le minimum du framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | -Le [contrat embarqué publié](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +Le [contrat embarqué publié](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) et le `composer.json` de chaque version font autorité. La version embarquée actuelle a été vérifiée sur Laravel 12/PHP 8.2–8.4 et Laravel 13/PHP 8.3–8.4. Elle retire PHP 8.1 et Laravel 10/11. Le [guide historique v1 stable](/docs/1.x/installation/) @@ -114,6 +115,25 @@ pour les exécutions v1 ouvertes et suivez le [guide d'adoption](/docs/laravel-a pour la vidange ou la coexistence. Modifier une contrainte Composer ne migre pas l'historique durable. +Le SDK PHP 3.10 a aligné le pont Laravel en mode service sur les mêmes minimums +PHP et Laravel que Workflow 2.21 et a retiré la prise en charge de Laravel 10/11 ; +la 3.11 les conserve. Son fournisseur refuse les versions de framework et de PHP +non prises en charge ou inconnues avant d'enregistrer la configuration, les +clients ou les workers. Les applications existantes en SDK 3.9.x conservent leur +propre contrat pendant la mise à niveau de la plateforme. Consultez les +[notes de mise à niveau du SDK PHP](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +Workflow 2.22 n'ajoute aucune migration de base de données et conserve les +minimums de compatibilité de 2.21. Son protocole worker embarqué annonce `1.22` +et accepte toujours les requêtes `1.20`. `1.22` ajoute une échéance d'occurrence +optionnelle que des appelants externes peuvent demander pour les attentes de +condition ; l'exécuteur embarqué conserve son comportement d'attente existant. +Dès qu'un workflow a utilisé cette politique, ne revenez à une version antérieure +de Workflow qu'en restaurant une sauvegarde effectuée avant la mise à niveau. Les +versions antérieures peuvent ignorer la politique et mélanger la chaîne +d'attente, et une nouvelle mise à niveau ne répare pas cet historique. Consultez +le [journal des modifications 2.22.0](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Niveaux de stabilité {#stability-levels} Chaque interface publique Durable Workflow porte exactement un de ces niveaux. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/fr/docusaurus-plugin-content-docs/current/laravel-adoption.md index 62a6708013a..9b9e49e8399 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -42,11 +42,13 @@ choisi ici votre politique de transition. | Laravel 2.0 embarqué | SDK PHP en mode service | L'application doit cesser de posséder le runtime d'orchestration ou nécessite un runtime partagé ou polyglotte. | Dirigez les nouveaux démarrages vers le service une fois ses workers prêts. Terminez les exécutions embarquées là où elles ont démarré, ou utilisez la procédure explicite d'import embarqué-v2 éligible pour Server auto-hébergé. | Consultez les [branches publiées compatibles avec Laravel](./compatibility.md#laravel-support) -avant de choisir la destination. Le paquet embarqué actuel exige Laravel 12.69 -ou 13.30 et une version PHP compatible. Le SDK PHP 3.9.5 publié conserve Laravel -10–13 avec les correctifs minimaux ; son client de base conserve PHP 8.1. -Une ancienne application v1 peut nécessiter une mise à niveau du framework avant -le passage à la branche embarquée actuelle. Conservez son runtime v1 et ses exécutions ouvertes. +avant de choisir la destination. Le paquet embarqué actuel et, à partir du SDK +PHP 3.10, le pont Laravel en mode service exigent tous deux Laravel 12.69 ou 13.30 +et une version PHP compatible. Le client de base en mode service conserve PHP 8.1. +Le SDK PHP 3.9.x conserve son contrat de pont antérieur pour Laravel 10–13 avec +les correctifs minimaux. Une ancienne application v1 peut nécessiter une mise à +niveau du framework avant le passage à l'une ou l'autre des branches actuelles. +Conservez son runtime v1 et ses exécutions ouvertes pendant cette mise à niveau. ## Comparer les responsabilités {#compare-the-ownership-boundary} @@ -333,8 +335,10 @@ partir de la référence d'artefacts SDK PHP publiée, sans recopier une version composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -Les versions compatibles de Laravel découvrent automatiquement le fournisseur. Publiez la -configuration et listez les classes de gestionnaire munies d'attributs : +Les versions compatibles de Laravel découvrent automatiquement le fournisseur. Si la +version de Laravel ou de PHP n'est pas prise en charge ou est inconnue, le fournisseur +la refuse avant d'enregistrer la moindre configuration, le moindre client ou +worker. Publiez la configuration et listez les classes de gestionnaire munies d'attributs : ```php diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/php.md index 22495beebb0..d6994c67cd3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -77,7 +77,10 @@ et exécute le travail via ses files Laravel. Les ## Prérequis {#requirements} -- PHP 8.1 ou ultérieur +- PHP 8.1 ou ultérieur pour le SDK indépendant du framework +- Pour le pont Laravel en mode service à partir du SDK PHP 3.10 : PHP 8.2 ou + ultérieur et Laravel 12.69 ou ultérieur en 12.x, ou Laravel 13.30 ou ultérieur + en 13.x avec PHP 8.3 ou ultérieur - Un [Server auto-hébergé](/docs/polyglot/server/) accessible ou un [runtime d’espace de noms Cloud](/docs/polyglot/cloud-control-plane) provisionné @@ -292,6 +295,55 @@ mode service livré, y compris le drainage et le retour arrière. Les [modes de déploiement](/docs/polyglot/deployment-modes/) comparent plus largement les frontières du runtime. +## Mettre à niveau vers le SDK PHP 3.10 et 3.11 {#upgrade-to-3-10-and-3-11} + +Lisez le [guide de mise à niveau du SDK PHP](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md) +avant de déployer. Mettez à niveau ensemble tous les workers pouvant recevoir du +travail d’une file de tâches, y compris les pools de secours et d’autoscaling. + +- **Pont Laravel.** À partir de la 3.10, le pont Laravel en mode service suit + Workflow 2.21 : PHP `^8.2` et Laravel corrigé `^12.69.0|^13.30.0`. Laravel + 10 et 11 ne sont plus pris en charge. Le fournisseur refuse les versions de + framework et de PHP non prises en charge ou inconnues avant d’enregistrer quoi + que ce soit. Le SDK de base conserve PHP `^8.1` et la prise en charge de + Symfony 6.4/7/8. +- **Empreintes de condition.** À partir de la 3.10, les nouvelles attentes de + condition enregistrent des empreintes de prédicat v2 (`dwphp2:sha256:`). Les + workers plus anciens les rejettent : revenir à des workers antérieurs à la 3.10 + une fois que des attentes v2 existent peut faire échouer le replay. Arrêtez ou + drainez les anciens workers avant le démarrage de leurs remplaçants, déployez + les sources PHP de façon atomique et redémarrez chaque worker de longue durée, + y compris ceux qui utilisent OPcache. Les workers qui rejouent des attentes v2 + ont besoin du tokenizer de PHP. Les attentes v1 existantes exigent toujours une + correspondance exacte de la ligne source. +- **Identifiants statiques.** À partir de la 3.10, les identifiants statiques + sont validés tels quels. Un UTF-8 mal formé, des espaces Unicode à l’une ou + l’autre extrémité et des caractères de contrôle intégrés provoquent désormais + un échec au lieu d’être supprimés ou ignorés. Vérifiez les valeurs partagées, + de client, de worker et de transmission entre processus du framework avant la + mise à niveau. +- **Échéances d’occurrence.** En 3.11, une nouvelle attente de condition de + premier niveau conserve sa première échéance malgré les faux réveils lorsque + Server annonce `condition_wait_occurrence_deadline` (Server natif 3.3.0 ou + ultérieur). Sans cette capacité, les workers envoient les mêmes commandes + qu’auparavant. Les attentes de condition groupées ne l’activent pas encore. Sur + un Server plus ancien, mettez à niveau tous les workers de la file vers la 3.11 + avant de mettre à niveau Server. Sur un Server qui annonce déjà la capacité, + drainez ou arrêtez tous les anciens workers avant qu’un worker 3.11 ne consomme + la file. Dès qu’une attente ancrée existe, ne ramenez pas les workers de cette + file à une version antérieure à la 3.11. + +Le SDK PHP 3.10 ajoute aussi `WorkflowContext::startChildWorkflow()`, qui renvoie +un `ChildWorkflowHandle` une fois le démarrage de l’enfant validé et nécessite un +runtime annonçant `child_workflow_start_turn`. Les autres ajouts sont +`ActivityContext::activityExecutionId`, des déclarations typées optionnelles pour +`upsertSearchAttributes()`, des itérateurs paresseux de liste et d’historique des +workflows, et l’option de Worker `enableCompletionPipelining`, qui vaut `false` +par défaut. Les polls portés par la complétion ne sont utilisés que si le runtime +les annonce. Consultez le +[journal des modifications 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md) +pour la liste complète. + ## Frontière de protocole et de version {#protocol-and-release-boundary} Le SDK déclare dans ses métadonnées Composer la plage Server prise en charge, @@ -318,7 +370,9 @@ déclaré, sans dépendre de l’égalité des numéros de version des paquets. ## Pages de liste et d’historique des workflows {#workflow-list-and-history-pages} -Ces appels publiés renvoient **une page**, pas une lecture complète automatique : `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continuez avec le token opaque retourné en conservant namespace, filtres et workflow/exécution sélectionnés ; terminez au token nul/vide et traitez explicitement les erreurs de page. Une page partielle n’est pas un bundle de replay. Utilisez l’API d’export d’historique du SDK pour le replay hors ligne. Le [client publié PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) définit les paramètres actuels ; aucun nouvel itérateur n’est annoncé. +Ces appels publiés renvoient **une page**, pas une lecture complète automatique : `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continuez avec le token opaque retourné en conservant namespace, filtres et workflow/exécution sélectionnés ; terminez au token nul/vide et traitez explicitement les erreurs de page. Une page partielle n’est pas un bundle de replay. Utilisez l’API d’export d’historique du SDK pour le replay hors ligne. Le [client publié PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) définit les paramètres de page. + +Le SDK PHP 3.10.0 et ultérieur fournit aussi `Client::iterateWorkflows()` et `Client::iterateWorkflowHistory()`. Ils lisent de façon paresseuse, une page à la fois, une liste complète de workflows ou l’historique d’une exécution précise, en conservant le curseur opaque, le namespace et les filtres. Les erreurs sur les pages suivantes sont propagées, et les continuations mal formées ou les cycles de tokens sont refusés au lieu de tronquer le résultat ou de boucler. Consultez le [client publié PHP 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Rapports d’échec bornés {#bounded-failure-reports} diff --git a/i18n/fr/source-hashes.json b/i18n/fr/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/fr/source-hashes.json +++ b/i18n/fr/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md index 9aa178105b5..ccc8ea1fe16 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/compatibility.md @@ -66,11 +66,12 @@ PHP と Laravel の要件を比較する前にパッケージのリリースを | パッケージ系列 | PHP | Laravel | | --- | --- | --- | -| 現在の組み込み Workflow 2.21 | 8.x 系の PHP 8.2 以降。Laravel 13 は PHP 8.3 以降 | `^12.69.0` または `^13.30.0` | +| 現在の組み込み Workflow 2.22 | 8.x 系の PHP 8.2 以降。Laravel 13 は PHP 8.3 以降 | `^12.69.0` または `^13.30.0` | | 組み込み Workflow 2.20.5 | PHP `^8.1`。Laravel 自身の最低要件も適用 | `^10.50.4`、`^11.56.1`、`^12.69.0` または `^13.30.0` | -| 公開済み PHP SDK 3.9.5 | 基本 SDK は PHP `^8.1`。Laravel ブリッジはフレームワークの最低要件にも従う | `^10.50.4`、`^11.56.1`、`^12.69.0` または `^13.30.0` | +| 公開済み PHP SDK 3.11 | 基本 SDK は PHP `^8.1`。Laravel ブリッジは PHP `^8.2` が必要で、Laravel 13 は PHP 8.3 以降 | `^12.69.0` または `^13.30.0` | +| PHP SDK 3.9.5 | 基本 SDK は PHP `^8.1`。Laravel ブリッジはフレームワークの最低要件にも従う | `^10.50.4`、`^11.56.1`、`^12.69.0` または `^13.30.0` | -[公開済み組み込みアップグレード契約](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +[公開済み組み込みアップグレード契約](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) と各リリースの `composer.json` がパッケージの根拠です。現在の組み込みリリースは Laravel 12/PHP 8.2~8.4 と Laravel 13/PHP 8.3~8.4 で検証されています。 PHP 8.1 と Laravel 10/11 のサポートは終了しました。 @@ -84,6 +85,22 @@ PHP 8.1 と Laravel 10/11 のサポートは終了しました。 [Laravel 導入ガイド](/docs/laravel-adoption)に従ってください。 Composer 制約の変更で永続履歴は移行されません。 +PHP SDK 3.10 では、Laravel サービスモードブリッジの PHP と Laravel の最低要件が +Workflow 2.21 と同じになり、Laravel 10/11 のサポートが削除されました。3.11 もこれを維持します。 +provider は、未対応または不明なフレームワークと PHP のバージョンを、設定、クライアント、 +Worker を登録する前に拒否します。既存の SDK 3.9.x アプリケーションは、プラットフォームの +更新中も従来の契約を維持します。 +[PHP SDK のアップグレードに関する注意事項](./polyglot/php.md#upgrade-to-3-10-and-3-11)を参照してください。 + +Workflow 2.22 にはデータベースマイグレーションがなく、2.21 のサポート下限を維持します。 +組み込み Worker プロトコルは `1.22` を通知し、引き続き `1.20` のリクエストも受け付けます。 +`1.22` では、外部の呼び出し元が条件待機に対して要求できるオプトインの発生期限 +(occurrence deadline)が追加されました。組み込みランナーは既存の待機動作を維持します。 +いずれかのワークフローがそのポリシーを使用した後に以前の Workflow リリースへロールバックする場合は、 +アップグレード前に取得したバックアップを復元する方法に限ってください。古いリリースはポリシーを破棄して +待機チェーンを混在させる場合があり、再度アップグレードしてもその履歴は修復されません。 +[2.22.0 の変更履歴](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md)を参照してください。 + ## 安定性レベル {#stability-levels} Durable Workflow の各公開インターフェースは、次の安定性レベルを厳密に一つ持ちます。分類は明示的です。未分類のインターフェースは公開ではありません。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/ja/docusaurus-plugin-content-docs/current/laravel-adoption.md index 83b310a7bc2..07672608c52 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -35,10 +35,11 @@ Laravel アプリケーションには、Durable Workflow 2.0 のファースト | 2.0 組み込み Laravel | PHP SDK サービスモード | アプリによるオーケストレーションランタイム所有をやめる、または共有・多言語ランタイムが必要。 | Worker 準備後、新規開始をサービスへ振り向ける。組み込み実行は開始元でドレインするか、セルフホスト Server 向けの適格な組み込み v2 の明示的インポートを使う。 | 移行先を選ぶ前に、[公開済み Laravel 対応系列](./compatibility.md#laravel-support)を確認してください。 -現在の組み込みパッケージには Laravel 12.69 または 13.30 と互換 PHP が必要です。 -公開済み PHP SDK 3.9.5 は必要なパッチを適用した Laravel 10~13 に引き続き対応し、 -基本クライアントは PHP 8.1 を維持します。古い v1 アプリは、現在の組み込み系列へ -移る前にフレームワーク更新が必要な場合があります。v1 の実行環境と未完了の実行を保持してください。 +現在の組み込みパッケージと、PHP SDK 3.10 以降のサービスモード Laravel ブリッジは、 +いずれも Laravel 12.69 または 13.30 と互換 PHP が必要です。基本のサービスモードクライアントは +PHP 8.1 のサポートを維持します。PHP SDK 3.9.x は、必要なパッチを適用した Laravel 10~13 向けの +従来のブリッジ契約を維持します。古い v1 アプリは、いずれかの現行系列へ移る前にフレームワーク更新が +必要な場合があります。その更新中は v1 の実行環境と未完了の実行を保持してください。 ## 所有境界を比較する {#compare-the-ownership-boundary} @@ -298,7 +299,7 @@ WorkflowStub::assertDispatched( composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -対応する Laravel バージョンは provider を自動検出します。設定を公開し、属性付きハンドラークラスを列挙します。 +対応する Laravel バージョンは provider を自動検出します。未対応または不明な Laravel・PHP のバージョンでは、provider は設定、クライアント、Worker を一切登録する前に拒否します。設定を公開し、属性付きハンドラークラスを列挙します。 ```php diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/php.md index 8c0435b2735..d9c775e9ae5 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -45,7 +45,8 @@ Cloud の利用者は、プロビジョニングで返されたランタイム U ## 要件 {#requirements} -- PHP 8.1 以降 +- フレームワーク非依存の SDK は PHP 8.1 以降 +- PHP SDK 3.10 以降の Laravel サービスモードブリッジは、PHP 8.2 以降と 12.x の Laravel 12.69 以降、または PHP 8.3 以降と 13.x の Laravel 13.30 以降 - 到達可能な[セルフホスト Server](/docs/polyglot/server/)、またはプロビジョニング済みの [Cloud 名前空間ランタイム](/docs/polyglot/cloud-control-plane) ## インストール {#install} @@ -186,6 +187,17 @@ Worker は `workflow_entry_arguments_validation` を自動的に通知します これらのブリッジは、`durable-workflow/workflow` によって Laravel アプリケーション自体が永続状態を所有し Laravel キューで実行する[組み込み Laravel ワークフロー](/docs/installation/)とは別です。ドレインとロールバックを含め、v1、v2 組み込み、同梱サービスモードブリッジで同じ代表的な Laravel ユースケースを比較するには、[Laravel の採用とランタイム移行](/docs/laravel-adoption/)を参照してください。より広いランタイム境界の比較には[デプロイモード](/docs/polyglot/deployment-modes/)を使います。 +## PHP SDK 3.10 と 3.11 へのアップグレード {#upgrade-to-3-10-and-3-11} + +デプロイ前に [PHP SDK アップグレードガイド](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md)を読んでください。待機系やオートスケーリングのプールを含め、タスクキューから処理を受け取る可能性のあるすべての Worker をまとめてアップグレードします。 + +- **Laravel ブリッジ。** 3.10 以降、Laravel サービスモードブリッジは Workflow 2.21 に合わせ、PHP `^8.2` とパッチ適用済みの Laravel `^12.69.0|^13.30.0` が必要です。Laravel 10 と 11 はサポート対象外になりました。provider は、未対応または不明なフレームワークと PHP のバージョンを、何かを登録する前に拒否します。基本 SDK は PHP `^8.1` と Symfony 6.4/7/8 のサポートを維持します。 +- **条件フィンガープリント。** 3.10 以降、新しい条件待機は v2(`dwphp2:sha256:`)の述語フィンガープリントを記録します。古い Worker はこれを拒否するため、v2 の待機が存在する状態で Worker を 3.10 未満へロールバックするとリプレイが失敗する場合があります。置き換え後の Worker が起動する前に古い Worker を停止またはドレインし、PHP ソースをアトミックにデプロイして、OPcache を使う Worker を含むすべての長時間稼働 Worker を再起動してください。v2 の待機をリプレイする Worker には PHP の tokenizer が必要です。既存の v1 の待機では、引き続きソース行の完全一致が必要です。 +- **静的資格情報。** 3.10 以降、静的資格情報は与えられたとおりに検証されます。不正な UTF-8、前後端の Unicode 空白、埋め込まれた制御文字は、トリムや無視をされずにエラーになります。アップグレード前に、共有、クライアント、Worker、フレームワークのプロセス間受け渡しの各値を確認してください。 +- **発生期限(occurrence deadline)。** 3.11 では、Server が `condition_wait_occurrence_deadline` を通知する場合(ネイティブ Server 3.3.0 以降)、新しいトップレベルの条件待機は誤った起床(false wake)をまたいで最初の期限を維持します。この機能がない場合、Worker は従来と同じコマンドを送信します。グループ化された条件待機はまだオプトインしません。古い Server では、Server をアップグレードする前に、そのキューのすべての Worker を 3.11 にアップグレードしてください。すでにこの機能を通知している Server では、3.11 の Worker がキューを消費する前に、古い Worker をすべてドレインまたは停止してください。期限が固定された待機が存在するようになったら、そのキューの Worker を 3.11 未満へロールバックしないでください。 + +PHP SDK 3.10 では `WorkflowContext::startChildWorkflow()` も追加されました。これは子ワークフローの開始がコミットされた時点で `ChildWorkflowHandle` を返し、`child_workflow_start_turn` を通知するランタイムが必要です。その他の追加点は、`ActivityContext::activityExecutionId`、`upsertSearchAttributes()` の任意の型付き宣言、遅延評価されるワークフロー一覧と履歴のイテレーター、既定値が `false` の Worker オプション `enableCompletionPipelining` です。完了に相乗りするポーリングは、ランタイムがそれを通知する場合にのみ使われます。完全な一覧は [3.11.0 の変更履歴](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md)を参照してください。 + ## プロトコルとリリースの境界 {#protocol-and-release-boundary} SDK は、対応する Server 範囲、Worker プロトコルバージョン、コントロールプレーンバージョン、ペイロードコーデックを Composer メタデータで宣言します。Server も `GET /api/cluster/info` から受け入れるプロトコルとコーデックの集合を公開します。Server のパッチバージョンから互換性を推測せず、デプロイ時にランタイムディスカバリーを確認してください。 @@ -205,7 +217,9 @@ PHP SDK は Laravel パッケージとは独立にバージョン管理します ## ワークフロー一覧と履歴のページ {#workflow-list-and-history-pages} -公開されている次の呼び出しは、自動的な全件取得ではなく**1ページ**を返します:`Client::listWorkflows(...)` / `Client::workflowHistory(...)`。返された不透明な token で続け、namespace、フィルター、選択した workflow/run を維持してください。最後の null/空 token で終了し、ページのエラーを明示的に処理します。部分的なページは replay bundle ではありません。オフライン replay には SDK の履歴エクスポート API を使います。[公開 PHP 3.2.0 クライアントのソース](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php)が現在の引数を定義しており、新たな自動イテレーターの提供を意味しません。 +公開されている次の呼び出しは、自動的な全件取得ではなく**1ページ**を返します:`Client::listWorkflows(...)` / `Client::workflowHistory(...)`。返された不透明な token で続け、namespace、フィルター、選択した workflow/run を維持してください。最後の null/空 token で終了し、ページのエラーを明示的に処理します。部分的なページは replay bundle ではありません。オフライン replay には SDK の履歴エクスポート API を使います。[公開 PHP 3.2.0 クライアントのソース](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php)がページの引数を定義しています。 + +PHP SDK 3.10.0 以降では `Client::iterateWorkflows()` と `Client::iterateWorkflowHistory()` も提供されます。これらは、不透明なカーソル、namespace、フィルターを維持しながら、ワークフロー一覧全体または特定の実行の履歴全体を 1 ページずつ遅延して読み取ります。後続ページのエラーは呼び出し元へ伝播し、不正な継続 token や token の循環は、途中で切り詰めたりループしたりせずに拒否されます。[公開 PHP 3.11.0 クライアントのソース](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php)を参照してください。 ## 障害レポートのサイズ制限 {#bounded-failure-reports} diff --git a/i18n/ja/source-hashes.json b/i18n/ja/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/ja/source-hashes.json +++ b/i18n/ja/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md index 1bbe7ecfa15..b4e1cd8d41a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compatibility.md @@ -101,11 +101,12 @@ O pacote embutido e o SDK de modo de serviço têm contratos separados. | Linha do pacote | PHP | Laravel | | --- | --- | --- | -| Workflow embutido 2.21 atual | PHP 8.2+ da linha 8.x; PHP 8.3+ para Laravel 13 | `^12.69.0` ou `^13.30.0` | +| Workflow embutido 2.22 atual | PHP 8.2+ da linha 8.x; PHP 8.3+ para Laravel 13 | `^12.69.0` ou `^13.30.0` | | Workflow embutido 2.20.5 | PHP `^8.1`, respeitando o mínimo do framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | -| SDK PHP 3.9.5 publicado | SDK básico PHP `^8.1`; a ponte Laravel também segue o mínimo do framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | +| SDK PHP 3.11 publicado | SDK básico PHP `^8.1`; a ponte Laravel exige PHP `^8.2`, e PHP 8.3+ para Laravel 13 | `^12.69.0` ou `^13.30.0` | +| SDK PHP 3.9.5 | SDK básico PHP `^8.1`; a ponte Laravel também segue o mínimo do framework | `^10.50.4`, `^11.56.1`, `^12.69.0` ou `^13.30.0` | -As autoridades são o [contrato embutido publicado](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +As autoridades são o [contrato embutido publicado](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) e o `composer.json` de cada versão. A versão embutida atual foi verificada com Laravel 12/PHP 8.2–8.4 e Laravel 13/PHP 8.3–8.4. Ela remove suporte a PHP 8.1 e Laravel 10/11. Isso preserva o [guia histórico do v1 estável](/docs/1.x/installation/) @@ -118,6 +119,25 @@ a plataforma permitir. Preserve o runtime original das execuções v1 abertas e siga o [guia de adoção](/docs/laravel-adoption) para drenagem ou coexistência. Alterar a restrição Composer não migra o histórico durável. +O SDK PHP 3.10 levou a ponte Laravel do modo de serviço aos mesmos mínimos de +PHP e Laravel do Workflow 2.21 e removeu o suporte a Laravel 10/11; a 3.11 os +mantém. Seu provider recusa versões de framework e PHP não suportadas ou +desconhecidas antes de registrar configuração, clientes ou workers. Aplicações +existentes com o SDK 3.9.x mantêm o próprio contrato enquanto a plataforma é +atualizada. Consulte as +[notas de atualização do SDK PHP](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +O Workflow 2.22 não adiciona migração de banco de dados e mantém os mínimos de +suporte da 2.21. Seu protocolo de worker embutido anuncia `1.22` e continua +aceitando requisições `1.20`. O `1.22` adiciona um prazo de ocorrência opcional +que chamadores externos podem solicitar para esperas por condição; o executor +embutido mantém o comportamento de espera existente. Depois que qualquer +workflow tiver usado essa política, volte para uma versão anterior do Workflow +somente restaurando um backup feito antes da atualização. Versões anteriores +podem descartar a política e misturar a cadeia de espera, e atualizar novamente +não repara esse histórico. Consulte o +[changelog da 2.22.0](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Níveis de estabilidade {#stability-levels} Cada interface pública do Durable Workflow tem exatamente um destes níveis. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/laravel-adoption.md index 6fd403d4ab1..6e1b924a253 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -42,11 +42,13 @@ depois de escolher a política de transição aqui. | Laravel 2.0 integrado | SDK PHP em modo de serviço | A aplicação deve deixar de ser responsável pelo runtime de orquestração ou precisa de uma fronteira de runtime compartilhada/entre linguagens. | Direcione novos inícios ao runtime de serviço depois que seus workers estiverem prontos. Deixe as execuções integradas terminarem onde começaram, ou use o procedimento explícito de importação de execuções elegíveis da v2 integrada para Server sob sua administração. | Confira as [linhas publicadas de suporte ao Laravel](./compatibility.md#laravel-support) -antes de escolher o destino. O pacote embutido atual exige Laravel 12.69 ou 13.30 -e PHP compatível. O SDK PHP 3.9.5 publicado mantém suporte ao Laravel 10–13 com -os patches mínimos; o cliente básico continua aceitando PHP 8.1. Uma aplicação -v1 antiga pode precisar atualizar o framework antes de migrar para a linha -embutida atual. Preserve seu runtime v1 e as execuções abertas. +antes de escolher o destino. O pacote embutido atual e, a partir do SDK PHP +3.10, a ponte Laravel do modo de serviço exigem Laravel 12.69 ou 13.30 e PHP +compatível. O cliente básico do modo de serviço continua aceitando PHP 8.1. O +SDK PHP 3.9.x mantém seu contrato anterior da ponte Laravel 10–13 com os patches +mínimos. Uma aplicação v1 antiga pode precisar atualizar o framework antes de +migrar para qualquer uma das linhas atuais. Preserve seu runtime v1 e as +execuções abertas durante essa atualização. ## Compare a fronteira de responsabilidade {#compare-the-ownership-boundary} @@ -334,8 +336,10 @@ copiado de uma release específica: composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -As versões compatíveis do Laravel descobrem o provider automaticamente. Publique a configuração -do pacote e liste as classes de handlers com atributos: +As versões compatíveis do Laravel descobrem o provider automaticamente. Em uma +versão do Laravel ou do PHP não suportada ou desconhecida, o provider recusa essa +versão antes de registrar qualquer configuração, cliente ou worker. +Publique a configuração do pacote e liste as classes de handlers com atributos: ```php diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/php.md index 1a1d3d1c616..a117e7297fe 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -78,7 +78,10 @@ completa de responsabilidades. ## Requisitos {#requirements} -- PHP 8.1 ou posterior +- PHP 8.1 ou posterior para o SDK independente de framework +- Para a ponte Laravel do modo de serviço no SDK PHP 3.10 e posteriores: PHP 8.2 + ou posterior e Laravel 12.69 ou posterior na 12.x, ou Laravel 13.30 ou + posterior na 13.x com PHP 8.3 ou posterior - Um [Server sob sua administração](/docs/polyglot/server/) acessível ou [runtime de namespace do Cloud](/docs/polyglot/cloud-control-plane) provisionado @@ -291,6 +294,54 @@ modo de serviço distribuída, incluindo drenagem e rollback. Use [Modos de implantação](/docs/polyglot/deployment-modes/) para a comparação mais ampla dos limites de runtime. +## Atualizar para o SDK PHP 3.10 e 3.11 {#upgrade-to-3-10-and-3-11} + +Leia o [guia de atualização do SDK PHP](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md) +antes de implantar. Atualize juntos todos os workers que podem receber trabalho +de uma fila de tarefas, incluindo pools de standby e de escalonamento automático. + +- **Ponte Laravel.** A partir da 3.10, a ponte Laravel do modo de serviço segue + o Workflow 2.21: PHP `^8.2` e Laravel com patches `^12.69.0|^13.30.0`. Laravel + 10 e 11 deixam de ser suportados. O provider recusa versões de framework e PHP + não suportadas ou desconhecidas antes de registrar qualquer coisa. O SDK + básico mantém suporte a PHP `^8.1` e Symfony 6.4/7/8. +- **Fingerprints de condição.** A partir da 3.10, novas esperas por condição + registram fingerprints de predicado v2 (`dwphp2:sha256:`). Workers mais + antigos os rejeitam, então reverter workers para versões anteriores à 3.10 + depois que existirem esperas v2 pode fazer o replay falhar. Pare ou drene os + workers antigos antes que os substitutos iniciem, implante os fontes PHP de + forma atômica e reinicie todo worker de longa duração, inclusive workers que + usam OPcache. Workers que fazem replay de esperas v2 precisam do tokenizer do + PHP. Esperas v1 existentes continuam exigindo correspondência exata da linha + do código-fonte. +- **Credenciais estáticas.** A partir da 3.10, credenciais estáticas são + validadas exatamente como fornecidas. UTF-8 malformado, espaços em branco + Unicode em qualquer extremidade e caracteres de controle embutidos agora + geram falha em vez de serem removidos ou ignorados. Verifique os valores + compartilhados, de cliente, de worker e de repasse entre processos do + framework antes de atualizar. +- **Prazos de ocorrência.** Na 3.11, uma nova espera por condição de nível + superior mantém seu primeiro prazo entre despertares falsos quando o Server + anuncia `condition_wait_occurrence_deadline` (Server nativo 3.3.0 ou + posterior). Sem essa capacidade, os workers enviam os mesmos comandos de + antes. Esperas por condição agrupadas ainda não aderem. Em um Server mais + antigo, atualize todos os workers da fila para a 3.11 antes de atualizar o + Server. Em um Server que já anuncia a capacidade, drene ou pare todos os + workers mais antigos antes que qualquer worker 3.11 consuma a fila. Depois + que existir uma espera ancorada, não reverta os workers dessa fila para + versões anteriores à 3.11. + +O SDK PHP 3.10 também adiciona `WorkflowContext::startChildWorkflow()`, que +retorna um `ChildWorkflowHandle` assim que o início do filho é confirmado e +exige um runtime que anuncie `child_workflow_start_turn`. Outras adições são +`ActivityContext::activityExecutionId`, declarações tipadas opcionais para +`upsertSearchAttributes()`, iteradores preguiçosos de lista e histórico de +workflows e a opção de Worker `enableCompletionPipelining`, cujo padrão é +`false`. Polls transportados pela conclusão são usados somente quando o runtime +os anuncia. Consulte o +[changelog da 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md) +para a lista completa. + ## Limite do protocolo e dos releases {#protocol-and-release-boundary} O SDK declara sua faixa de servidores suportados, versão do protocolo de @@ -317,7 +368,9 @@ igualdade de números de versão entre pacotes. ## Páginas de lista e histórico de workflows {#workflow-list-and-history-pages} -Estas chamadas publicadas retornam **uma página**, não uma leitura completa automática: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continue com o token opaco retornado preservando namespace, filtros e workflow/execução selecionados; encerre no token nulo/vazio e trate erros de página. Uma página parcial não é um bundle de replay. Use a API de exportação de histórico do SDK para replay sem servidor. O [cliente publicado PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) define os parâmetros atuais; não se afirma um novo iterador. +Estas chamadas publicadas retornam **uma página**, não uma leitura completa automática: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Continue com o token opaco retornado preservando namespace, filtros e workflow/execução selecionados; encerre no token nulo/vazio e trate erros de página. Uma página parcial não é um bundle de replay. Use a API de exportação de histórico do SDK para replay sem servidor. O [cliente publicado PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) define os parâmetros de página. + +O SDK PHP 3.10.0 e posteriores também oferecem `Client::iterateWorkflows()` e `Client::iterateWorkflowHistory()`. Eles leem de forma preguiçosa uma listagem completa de workflows ou o histórico de uma execução exata, uma página por vez, preservando o cursor opaco, o namespace e os filtros. Erros em páginas posteriores são propagados, e continuações malformadas ou ciclos de token são recusados em vez de truncar ou entrar em loop. Consulte o [cliente publicado PHP 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Relatórios de falha com limites {#bounded-failure-reports} diff --git a/i18n/pt-BR/source-hashes.json b/i18n/pt-BR/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/pt-BR/source-hashes.json +++ b/i18n/pt-BR/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md index 023588afcc2..d3caf774bd6 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/compatibility.md @@ -98,11 +98,12 @@ OpenAPI, AsyncAPI чи JSON Schema. Schema | Лінійка пакета | PHP | Laravel | | --- | --- | --- | -| Поточний вбудований Workflow 2.21 | PHP 8.2+ у 8.x; PHP 8.3+ для Laravel 13 | `^12.69.0` або `^13.30.0` | +| Поточний вбудований Workflow 2.22 | PHP 8.2+ у 8.x; PHP 8.3+ для Laravel 13 | `^12.69.0` або `^13.30.0` | | Вбудований Workflow 2.20.5 | PHP `^8.1` з урахуванням мінімуму фреймворку | `^10.50.4`, `^11.56.1`, `^12.69.0` або `^13.30.0` | -| Опублікований PHP SDK 3.9.5 | Базовий SDK PHP `^8.1`; міст Laravel також дотримується мінімуму фреймворку | `^10.50.4`, `^11.56.1`, `^12.69.0` або `^13.30.0` | +| Опублікований PHP SDK 3.11 | Базовий SDK PHP `^8.1`; міст Laravel потребує PHP `^8.2`, а для Laravel 13 — PHP 8.3+ | `^12.69.0` або `^13.30.0` | +| PHP SDK 3.9.5 | Базовий SDK PHP `^8.1`; міст Laravel також дотримується мінімуму фреймворку | `^10.50.4`, `^11.56.1`, `^12.69.0` або `^13.30.0` | -Першоджерела пакета — [опублікований контракт вбудованого оновлення](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +Першоджерела пакета — [опублікований контракт вбудованого оновлення](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) і `composer.json` кожного випуску. Поточний вбудований випуск перевірено з Laravel 12/PHP 8.2–8.4 та Laravel 13/PHP 8.3–8.4. Підтримку PHP 8.1 і Laravel 10/11 вилучено. [Історичний посібник стабільної v1](/docs/1.x/installation/) та @@ -115,6 +116,23 @@ Laravel 12/PHP 8.2–8.4 та Laravel 13/PHP 8.3–8.4. Підтримку PHP 8 [посібника переходу](/docs/laravel-adoption) для завершення чи співіснування. Зміна обмеження Composer не переносить довговічну історію. +PHP SDK 3.10 перевів міст сервісного режиму Laravel на ті самі мінімальні версії +PHP і Laravel, що й Workflow 2.21, та прибрав підтримку Laravel 10/11; 3.11 їх +зберігає. Його provider відмовляє на непідтримуваних або невідомих версіях +фреймворку та PHP ще до реєстрації конфігурації, клієнтів чи workers. Наявні +застосунки на SDK 3.9.x зберігають власний контракт, поки оновлюється платформа. +Див. [примітки щодо оновлення PHP SDK](./polyglot/php.md#upgrade-to-3-10-and-3-11). + +Workflow 2.22 не додає міграцій бази даних і зберігає мінімальні версії 2.21. +Його вбудований worker-протокол оголошує `1.22` і й далі приймає запити `1.20`. +`1.22` додає необов'язковий дедлайн екземпляра очікування, який зовнішні клієнти можуть +запитати для очікувань умов; вбудований runner зберігає наявну поведінку +очікування. Після того як будь-який workflow використав цю політику, відкат до +ранішого випуску Workflow можливий лише через відновлення резервної копії, +зробленої до оновлення. Старіші випуски можуть відкинути політику й перемішати +ланцюжок очікування, а повторне оновлення не виправляє цю історію. Див. +[журнал змін 2.22.0](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md). + ## Рівні стабільності {#stability-levels} Кожна публічна поверхня Durable Workflow має рівно один із цих рівнів diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/uk/docusaurus-plugin-content-docs/current/laravel-adoption.md index 6330d294fd8..0a96405fc4e 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -42,11 +42,13 @@ Laravel-застосунки мають два офіційні режими Dur | Laravel embedded 2.0 | PHP SDK service mode | Застосунок має передати orchestration runtime або потребує спільної/polyglot межі runtime. | Спрямовуйте нові запуски до service runtime після готовності його workers. Завершіть embedded runs там, де вони почалися, або використайте явний import допустимих embedded-v2 runs для власного Server. | Перед вибором режиму перевірте [опубліковані лінійки підтримки Laravel](./compatibility.md#laravel-support). -Поточний вбудований пакет вимагає Laravel 12.69 або 13.30 та сумісного PHP. -Опублікований PHP SDK 3.9.5 і далі підтримує Laravel 10–13 із мінімальними -виправленнями; базовий клієнт зберігає PHP 8.1. Старому застосунку v1 може -знадобитися оновлення фреймворку перед переходом на поточну вбудовану лінійку. -Збережіть його середовище v1 та незавершені виконання. +Поточний вбудований пакет і, починаючи з PHP SDK 3.10, міст Laravel сервісного +режиму вимагають Laravel 12.69 або 13.30 та сумісного PHP. Базовий клієнт +сервісного режиму зберігає підтримку PHP 8.1. PHP SDK 3.9.x зберігає свій +попередній контракт мосту для Laravel 10–13 із мінімальними виправленнями. +Старому застосунку v1 може знадобитися оновлення фреймворку перед переходом на +будь-яку з поточних лінійок. Збережіть його середовище v1 та незавершені виконання +під час цього оновлення. ## Порівняння відповідальності {#compare-the-ownership-boundary} @@ -338,8 +340,10 @@ WorkflowStub::assertDispatched( composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -Підтримувані версії Laravel автоматично знаходять provider. -Опублікуйте конфігурацію пакета та перелічіть класи обробників з атрибутами: +Підтримувані версії Laravel автоматично знаходять provider. На непідтримуваній +або невідомій версії Laravel чи PHP provider відмовляє ще до реєстрації будь-якої +конфігурації, клієнтів чи workers. Опублікуйте конфігурацію пакета та перелічіть +класи обробників з атрибутами: ```php diff --git a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/php.md index bfd2cdb8aa3..8023fd46f13 100644 --- a/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/uk/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -77,7 +77,10 @@ scripts/playground php ## Вимоги {#requirements} -- PHP 8.1 або новіший +- PHP 8.1 або новіший для SDK, не прив'язаного до фреймворку +- Для мосту Laravel сервісного режиму в PHP SDK 3.10 і новіших: PHP 8.2 або + новіший та Laravel 12.69 або новіший у 12.x, або Laravel 13.30 чи новіший у 13.x + з PHP 8.3 або новішим - Доступний [самостійно розгорнутий Server](/docs/polyglot/server/) або підготовлений [runtime простору імен Cloud](/docs/polyglot/cloud-control-plane) @@ -286,6 +289,51 @@ service mode, включно з drain і rollback. Ширше порівняння меж runtime наведено в [режимах розгортання](/docs/polyglot/deployment-modes/). +## Оновлення до PHP SDK 3.10 і 3.11 {#upgrade-to-3-10-and-3-11} + +Перед розгортанням прочитайте [посібник з оновлення PHP SDK](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md). +Оновлюйте разом усі workers, які можуть отримувати роботу з task queue, +включно з резервними пулами та пулами автомасштабування. + +- **Міст Laravel.** Починаючи з 3.10, міст Laravel сервісного режиму дотримується + Workflow 2.21: PHP `^8.2` і Laravel із виправленнями `^12.69.0|^13.30.0`. + Laravel 10 і 11 більше не підтримуються. Provider відмовляє на непідтримуваних + або невідомих версіях фреймворку та PHP ще до будь-якої реєстрації. Базовий SDK + зберігає підтримку PHP `^8.1` і Symfony 6.4/7/8. +- **Відбитки умов.** Починаючи з 3.10, нові очікування умов записують відбитки + предикатів v2 (`dwphp2:sha256:`). Старіші workers їх відхиляють, тож відкат + workers нижче 3.10 після появи очікувань v2 може зламати replay. Зупиніть або + завершіть роботу старіших workers до запуску замін, розгортайте PHP-код + атомарно й перезапускайте кожен довготривалий worker, включно з workers, що + використовують OPcache. Workers, які відтворюють очікування v2, потребують + PHP tokenizer. Наявні очікування v1 і далі вимагають точного збігу рядка + вихідного коду. +- **Статичні облікові дані.** Починаючи з 3.10, статичні облікові дані + перевіряються в тому вигляді, у якому їх передано. Некоректний UTF-8, пробільні + символи Unicode на будь-якому краю та вбудовані керівні символи тепер + спричиняють помилку, а не обрізаються чи ігноруються. Перед оновленням + перевірте спільні значення, значення клієнта, worker і ті, що фреймворк + передає між процесами. +- **Дедлайни екземпляра очікування.** У 3.11 нове очікування умови верхнього + рівня зберігає свій перший дедлайн після хибних пробуджень, якщо Server + оголошує `condition_wait_occurrence_deadline` (нативний Server 3.3.0 або + новіший). Без цієї можливості workers надсилають ті самі команди, що й раніше. + Згруповані очікування умов поки що не вмикають цю поведінку. Зі старішим + Server спочатку оновіть до 3.11 усі workers черги, а потім Server. На Server, + який уже оголошує цю можливість, завершіть або зупиніть усі старіші workers, + перш ніж будь-який worker 3.11 почне обробляти чергу. Щойно з'явиться + прив'язане очікування, не відкочуйте workers цієї черги нижче 3.11. + +PHP SDK 3.10 також додає `WorkflowContext::startChildWorkflow()`, який повертає +`ChildWorkflowHandle` після фіксації старту дочірнього workflow і потребує +runtime, що оголошує `child_workflow_start_turn`. Інші доповнення: +`ActivityContext::activityExecutionId`, необов'язкові типізовані оголошення для +`upsertSearchAttributes()`, ліниві ітератори списку workflow та історії, а також +опція Worker `enableCompletionPipelining`, яка за замовчуванням має значення `false`. +Опитування, передані разом із завершенням, використовуються лише тоді, коли +runtime їх оголошує. Повний перелік наведено в +[журналі змін 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md). + ## Межі протоколу та випусків {#protocol-and-release-boundary} SDK оголошує підтримуваний діапазон Server, версію worker-протоколу, @@ -311,7 +359,9 @@ SDK. Сумісність визначає оголошений контракт ## Сторінки списку workflow та історії {#workflow-list-and-history-pages} -Ці опубліковані виклики повертають **одну сторінку**, а не автоматично повний результат: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Продовжуйте з повернутим непрозорим token, зберігаючи namespace, фільтри та вибрані workflow/run; зупиняйтеся на null/порожньому token й явно обробляйте помилки сторінок. Часткова сторінка не є replay-bundle. Для офлайн-replay використовуйте API експорту історії SDK. [Опублікований клієнт PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) визначає поточні параметри; нові ітератори не заявляються. +Ці опубліковані виклики повертають **одну сторінку**, а не автоматично повний результат: `Client::listWorkflows(...)` / `Client::workflowHistory(...)`. Продовжуйте з повернутим непрозорим token, зберігаючи namespace, фільтри та вибрані workflow/run; зупиняйтеся на null/порожньому token й явно обробляйте помилки сторінок. Часткова сторінка не є replay-bundle. Для офлайн-replay використовуйте API експорту історії SDK. [Опублікований клієнт PHP 3.2.0](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php) визначає параметри сторінок. + +PHP SDK 3.10.0 і новіші також надають `Client::iterateWorkflows()` і `Client::iterateWorkflowHistory()`. Вони ліниво читають повний список workflow або історію точного run, по одній сторінці, зберігаючи непрозорий курсор, namespace і фільтри. Помилки на наступних сторінках поширюються далі, а некоректні продовження чи цикли token відхиляються замість обрізання результату чи зациклення. Див. [опублікований клієнт PHP 3.11.0](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php). ## Обмежені звіти про помилки {#bounded-failure-reports} diff --git a/i18n/uk/source-hashes.json b/i18n/uk/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/uk/source-hashes.json +++ b/i18n/uk/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md index 82ed373c350..dcaaa7c8911 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/compatibility.md @@ -65,11 +65,12 @@ import protocolCatalog from '@site/static/platform-protocol-specs.json'; | 包版本线 | PHP | Laravel | | --- | --- | --- | -| 当前嵌入式 Workflow 2.21 | PHP 8.x 中的 8.2+;Laravel 13 需要 PHP 8.3+ | `^12.69.0` 或 `^13.30.0` | +| 当前嵌入式 Workflow 2.22 | PHP 8.x 中的 8.2+;Laravel 13 需要 PHP 8.3+ | `^12.69.0` 或 `^13.30.0` | | 嵌入式 Workflow 2.20.5 | PHP `^8.1`,并满足框架自身最低要求 | `^10.50.4`、`^11.56.1`、`^12.69.0` 或 `^13.30.0` | -| 已发布 PHP SDK 3.9.5 | 基础 SDK 为 PHP `^8.1`;Laravel 桥接还需满足框架的 PHP 要求 | `^10.50.4`、`^11.56.1`、`^12.69.0` 或 `^13.30.0` | +| 已发布 PHP SDK 3.11 | 基础 SDK 为 PHP `^8.1`;Laravel 桥接需要 PHP `^8.2`,Laravel 13 需要 PHP 8.3+ | `^12.69.0` 或 `^13.30.0` | +| PHP SDK 3.9.5 | 基础 SDK 为 PHP `^8.1`;Laravel 桥接还需满足框架的 PHP 要求 | `^10.50.4`、`^11.56.1`、`^12.69.0` 或 `^13.30.0` | -包的依据是[已发布的嵌入式升级契约](https://github.com/durable-workflow/workflow/blob/2.21.0/resources/laravel-embedded-upgrade-contract.json) +包的依据是[已发布的嵌入式升级契约](https://github.com/durable-workflow/workflow/blob/2.22.0/resources/laravel-embedded-upgrade-contract.json) 及各版本的 `composer.json`。当前嵌入式版本已验证 Laravel 12/PHP 8.2–8.4 与 Laravel 13/PHP 8.3–8.4, 不再支持 PHP 8.1 和 Laravel 10/11。[历史稳定 v1 安装指南](/docs/1.x/installation/)与 [PHP SDK 的独立要求](https://php.durable-workflow.com/)保持独立。 @@ -79,6 +80,18 @@ import protocolCatalog from '@site/static/platform-protocol-specs.json'; 保留未完成 v1 运行的原运行时,并按 [Laravel 采用指南](/docs/laravel-adoption)执行排空或共存。 修改 Composer 约束不会迁移持久历史。 +PHP SDK 3.10 将 Laravel 服务模式桥接的 PHP 和 Laravel 最低版本调整为与 Workflow 2.21 相同, +并移除了 Laravel 10/11 支持;3.11 保持这些要求不变。其服务提供者会在注册配置、客户端或 Worker 之前, +拒绝不受支持或未知的框架与 PHP 版本。现有 SDK 3.9.x 应用在平台升级期间保留其自身的契约。 +参见 [PHP SDK 升级说明](/docs/polyglot/php#upgrade-to-3-10-and-3-11)。 + +Workflow 2.22 不新增数据库迁移,并保持 2.21 的最低支持版本。其嵌入式 Worker 协议声明 `1.22`, +同时仍接受 `1.20` 请求。`1.22` 新增了一项可选的单次出现截止时间(occurrence deadline), +外部调用方可为条件等待请求该策略;嵌入式运行器保持原有的等待行为。 +一旦有任何工作流使用过该策略,回滚到更早的 Workflow 版本只能通过恢复升级前创建的备份来完成。 +较旧版本可能丢弃该策略并混淆等待链,再次升级也无法修复这段历史。参见 +[2.22.0 变更日志](https://github.com/durable-workflow/workflow/blob/2.22.0/CHANGELOG.md)。 + ## 稳定性级别 {#stability-levels} Durable Workflow 中每个公开接口恰好具有以下一个稳定性级别。级别必须明确;未分类的接口不是公开接口。 diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/laravel-adoption.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/laravel-adoption.md index dba40b5798f..2234cb7625a 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/laravel-adoption.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/laravel-adoption.md @@ -35,9 +35,9 @@ Laravel 应用有两个第一方 Durable Workflow 2.0 目标。嵌入模式让 | 2.0 嵌入式 Laravel | PHP SDK 服务模式 | 应用应不再拥有编排运行时,或需要共享/多语言运行时边界。 | 服务 Worker 就绪后,将新启动路由到服务运行时。嵌入运行实例在原处排空,或对自托管 Server 使用明确的符合条件的嵌入 v2 导入流程。 | 选择目标前,请查看[已发布的 Laravel 支持范围](./compatibility.md#laravel-support)。 -当前嵌入式包需要 Laravel 12.69 或 13.30 以及兼容的 PHP。 -已发布的 PHP SDK 3.9.5 仍支持满足最低补丁要求的 Laravel 10 至 13,基础客户端仍支持 PHP 8.1。 -旧版 v1 应用可能需要先升级框架才能迁移到当前嵌入式版本线。 +当前嵌入式包,以及从 PHP SDK 3.10 起的服务模式 Laravel 桥接,均需要 Laravel 12.69 或 13.30 以及兼容的 PHP。 +基础服务模式客户端仍支持 PHP 8.1。PHP SDK 3.9.x 保留其此前支持满足最低补丁要求的 Laravel 10 至 13 的桥接契约。 +旧版 v1 应用可能需要先升级框架才能迁移到任一当前版本线。 升级期间须保留原 v1 运行时及其未完成的运行。 ## 比较归属边界 {#compare-the-ownership-boundary} @@ -298,7 +298,7 @@ WorkflowStub::assertDispatched( composer require %%artifact.publishedPhpSdkComposerPackage%% ``` -受支持的 Laravel 版本会自动发现 provider。发布软件包配置,并列出带属性标记的处理器类: +受支持的 Laravel 版本会自动发现 provider。在不受支持或未知的 Laravel 或 PHP 版本上,provider 会在注册任何配置、客户端或 Worker 之前拒绝运行。发布软件包配置,并列出带属性标记的处理器类: ```php diff --git a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/php.md b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/php.md index 929423d5001..09a7ba231b2 100644 --- a/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/php.md +++ b/i18n/zh-Hans/docusaurus-plugin-content-docs/current/polyglot/php.md @@ -45,7 +45,8 @@ Cloud 客户使用配置时返回的运行时 URL 和命名空间,并使用独 ## 要求 {#requirements} -- PHP 8.1 或更高版本 +- 框架无关的 SDK 需要 PHP 8.1 或更高版本 +- PHP SDK 3.10 及更高版本中的 Laravel 服务模式桥接:需要 PHP 8.2 或更高版本,以及 12.x 中的 Laravel 12.69 或更高版本,或 13.x 中的 Laravel 13.30 或更高版本(需 PHP 8.3 或更高版本) - 可访问的[自托管 Server](/docs/polyglot/server/) 或已配置的 [Cloud 命名空间运行时](/docs/polyglot/cloud-control-plane) ## 安装 {#install} @@ -183,6 +184,17 @@ Worker 会自动声明 `workflow_entry_arguments_validation`。在配套 Server 这些桥接不同于[嵌入式 Laravel 工作流](/docs/installation/);后者通过 `durable-workflow/workflow` 使 Laravel 应用自身管理持久状态并通过 Laravel 队列执行。参见 [Laravel 采用与运行时迁移](/docs/laravel-adoption/),了解同一个典型 Laravel 用例如何使用 v1、v2 嵌入式及已提供的服务模式桥接,包括排空和回滚。更全面的运行时边界比较见[部署模式](/docs/polyglot/deployment-modes/)。 +## 升级到 PHP SDK 3.10 和 3.11 {#upgrade-to-3-10-and-3-11} + +部署前请阅读 [PHP SDK 升级指南](https://github.com/durable-workflow/sdk-php/blob/3.11.0/docs/portal/operate/upgrading.md)。可从同一任务队列接收工作的所有 Worker 须一并升级,包括备用池和自动扩缩容池。 + +- **Laravel 桥接。** 从 3.10 起,Laravel 服务模式桥接与 Workflow 2.21 保持一致:PHP `^8.2` 及已打补丁的 Laravel `^12.69.0|^13.30.0`。不再支持 Laravel 10 和 11。provider 会在注册任何内容之前拒绝不受支持或未知的框架与 PHP 版本。基础 SDK 继续支持 PHP `^8.1` 以及 Symfony 6.4/7/8。 +- **条件指纹。** 从 3.10 起,新的条件等待会记录 v2(`dwphp2:sha256:`)谓词指纹。旧版 Worker 会拒绝这类指纹,因此在已存在 v2 等待后将 Worker 回滚到 3.10 以下,可能导致 replay 失败。请在替换 Worker 启动前停止或排空旧版 Worker,以原子方式部署 PHP 源码,并重启每个长时间运行的 Worker,包括使用 OPcache 的 Worker。replay v2 等待的 Worker 需要 PHP 的 tokenizer 扩展。现有 v1 等待仍要求源码行完全匹配。 +- **静态凭据。** 从 3.10 起,静态凭据按原样校验。格式错误的 UTF-8、首尾的 Unicode 空白字符以及内嵌的控制字符现在会导致失败,而不再被裁剪或忽略。升级前请检查共享、客户端、Worker 以及框架进程交接中使用的值。 +- **单次出现截止时间。** 在 3.11 中,当 Server 声明 `condition_wait_occurrence_deadline`(原生 Server 3.3.0 或更高版本)时,新的顶层条件等待在虚假唤醒后仍保留其首个截止时间。若没有该能力,Worker 发送的命令与之前相同。分组条件等待暂未启用此行为。对于较旧的 Server,请先将该队列上的所有 Worker 升级到 3.11,再升级 Server。对于已声明该能力的 Server,请在任何 3.11 Worker 消费该队列之前,排空或停止所有旧版 Worker。一旦存在锚定的等待,就不要将该队列的 Worker 回滚到 3.11 以下。 + +PHP SDK 3.10 还新增了 `WorkflowContext::startChildWorkflow()`,它在子工作流启动提交后返回 `ChildWorkflowHandle`,并要求运行时声明 `child_workflow_start_turn`。其他新增内容包括 `ActivityContext::activityExecutionId`、`upsertSearchAttributes()` 的可选类型化声明、惰性工作流列表与历史迭代器,以及默认值为 `false` 的 `enableCompletionPipelining` Worker 选项。只有在运行时声明支持时才会使用随完成结果携带的轮询。完整列表见 [3.11.0 变更日志](https://github.com/durable-workflow/sdk-php/blob/3.11.0/CHANGELOG.md)。 + ## 协议与发布边界 {#protocol-and-release-boundary} SDK 在 Composer 元数据中声明支持的 Server 范围、Worker 协议版本、控制平面版本和负载编解码器。Server 也通过 `GET /api/cluster/info` 公布接受的协议和编解码器集合。部署时检查运行时发现,不要根据 Server 补丁版本推断兼容性。 @@ -202,7 +214,9 @@ PHP SDK 独立于 Laravel 包进行版本管理。可运行示例中保留精确 ## 工作流列表与历史页面 {#workflow-list-and-history-pages} -这些已发布调用每次返回**一页**,不会自动完整读取:`Client::listWorkflows(...)` / `Client::workflowHistory(...)`。继续请求时使用返回的不透明 token,并保持 namespace、筛选条件和所选 workflow/run 不变;最终 null/空 token 表示结束,页面错误必须明确处理。部分页面不是 replay bundle。离线 replay 请使用 SDK 的历史导出 API。[已发布的 PHP 3.2.0 客户端源码](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php)定义当前参数;这里不声称新增自动迭代器。 +这些已发布调用每次返回**一页**,不会自动完整读取:`Client::listWorkflows(...)` / `Client::workflowHistory(...)`。继续请求时使用返回的不透明 token,并保持 namespace、筛选条件和所选 workflow/run 不变;最终 null/空 token 表示结束,页面错误必须明确处理。部分页面不是 replay bundle。离线 replay 请使用 SDK 的历史导出 API。[已发布的 PHP 3.2.0 客户端源码](https://github.com/durable-workflow/sdk-php/blob/3.2.0/src/Client.php)定义分页参数。 + +PHP SDK 3.10.0 及更高版本还提供 `Client::iterateWorkflows()` 和 `Client::iterateWorkflowHistory()`。它们以惰性方式逐页读取完整的工作流列表或精确运行的历史,并保持不透明游标、namespace 和筛选条件不变。后续页面的错误会向上传播;格式错误的续读或 token 循环会被拒绝,而不会截断结果或陷入循环。参见[已发布的 PHP 3.11.0 客户端源码](https://github.com/durable-workflow/sdk-php/blob/3.11.0/src/Client.php)。 ## 有界失败报告 {#bounded-failure-reports} diff --git a/i18n/zh-Hans/source-hashes.json b/i18n/zh-Hans/source-hashes.json index 590401d8cd3..6a91f5c9e5e 100644 --- a/i18n/zh-Hans/source-hashes.json +++ b/i18n/zh-Hans/source-hashes.json @@ -4,7 +4,7 @@ "ai-agent-workflow-engine.md": "28016466b179adbabdff6467ce351100c9bee48529a8bec9df7ec22c8d786d4d", "ai-assisted-development.md": "b246bb60585fb7a69bc534978f470f3f16e899e1f8f203ba0847d2d11b8a1ec3", "capabilities.md": "d9a2bbc0d04adf8cb3f4c7f42d779a43aafab60791210305e7e476c0499528fc", - "compatibility.md": "3b2b45cbc9f1d614d19cb1ed876b7f63ee73506845951b4658b70febe62df1cc", + "compatibility.md": "3d7a81fb13123b3a8b3485b896b15fae8d99c362fbdbf6639c52f7534bc445e4", "configuration/customization-matrix.md": "3d115863eaee7852b541bcd01615f424cc19c5847c7cd7d75e5ae63bc3f5cc78", "configuration/database-connection.md": "cc83ae77133236309506fa44d39bfd0c939c32a6154c0bd6099bc64c83bdaec9", "configuration/ensuring-same-server.md": "6c665f37cc198c7b1a775a60a94aab5ff4e55383385e76f1834c7840559b512a", @@ -60,7 +60,7 @@ "how-it-works.md": "90454c37f4244297d5c11bcc59549859acf59f88d15ecd26f0a6951c115f86eb", "installation.md": "f69b98de4e10ba5ab892203b0418e4ed77e3edf3ac84cc46d9cf4694ee47ada9", "introduction.md": "06bf96d164d402d4e376c6308b20f96d324110b2e0cf96c2a1a67b39906072e3", - "laravel-adoption.md": "b78962f1a895d03120e4221a6709c43993be3acf3b6e7a8b6b38e4feea5dad6c", + "laravel-adoption.md": "be0890619736ee2362ee96b6b1f5f397f10fb58cb845448ac15b437ac3062b36", "mcp-workflows.md": "1c0b5bb7f2e5c7ca835dfdfa57bbe8f6624172c855f4e225057ac2377abf360e", "migration.md": "7304a53786d5e45d3a639c33386e6558e855ee77982883a5e051ef5084b8453b", "monitoring.md": "202278c1196508df5ff00d34cfe94fd2d60dfb7fd2fcb768cf37864c7605de0a", @@ -80,7 +80,7 @@ "polyglot/invocable-carrier.md": "d32d8b5c7c33204b342f977e0af734166d91e96073db1a49ccb4d414a6d67380", "polyglot/invocable-php-handler.md": "3b678eb1d69fe32dfcfdc05d36b33e49e01b79d7216bd784f6a61a6f1c3c3a13", "polyglot/namespace-auth-workers.md": "2b4078ceb74b849f12cb1975b410ff8e7266cd4345f6cf1d4dd906db12460ffb", - "polyglot/php.md": "b8bcbc5cae4c04f19e6662f20f37811fb5de5271c468493e5cc873f8783fe1e7", + "polyglot/php.md": "57062b36db54b2255670ba62aa53affa6a59d7a937911263875ddd46b5ddc728", "polyglot/polling-patterns.md": "30875099a23731c6c471b481a771378acc6ff57eed2fda4405a509057534c989", "polyglot/portable-worker-affinity.md": "40973c6a31a76845b4f95e9a505e68ad76abd5174bbdccf37993cdebc8904959", "polyglot/prerelease-history-migration.md": "a57f05f492228a8a67791f9152648a1e5f80856325b78777cf63b6ef49b7413c", diff --git a/static/stable-releases.json b/static/stable-releases.json index 1495e42dcf5..4c38d4db7b9 100644 --- a/static/stable-releases.json +++ b/static/stable-releases.json @@ -1,16 +1,16 @@ { "schema": "durable-workflow.docs.stable-releases", "schema_version": 1, - "updated_at": "2026-11-07", + "updated_at": "2026-11-09", "artifacts": { "cli": "2.3.6", "helm-chart": "1.0.3", - "sdk-php": "3.9.4", + "sdk-php": "3.11.0", "sdk-python": "2.14.1", "sdk-rust": "4.12.0", "server": "3.0.5", "waterline": "2.14.0", - "workflow": "2.21.0" + "workflow": "2.22.0" }, "helm_chart": { "app_version": "3.0.5",