Перейти до основного вмісту
Версія: 2.0

Можливості клієнтів і worker

Оберіть інтерфейс за потребами процесу. CLI dw та офіційні SDK PHP, Python і Rust використовують спільні контракти площини керування v2 та worker, але їхні ролі оператора, клієнта й worker відрізняються.

Цей посібник для всіх клієнтів залишається за початковим маршрутом /docs/polyglot/cli-python-parity/, щоб наявні посилання працювали.

Порівняння можливостей​

МожливістьCLI dwPHP SDKPython SDKRust SDK
Життєвий цикл workflowПідтримується: команди оператора для запуску, списку, перегляду, очікування, скасування, припинення й архівування. КомандиПідтримується: запуск, опис, список, очікування результатів, скасування й припинення через Client і WorkflowHandle. Докази життєвого циклуПідтримується: запуск, список/опис, очікування результатів, скасування й припинення через async-клієнт. Операції workflowПідтримується: запуск, опис, очікування результатів, скасування й припинення через Client і WorkflowHandle. Термінальні операції
SignalПідтримується: надсилання за ID workflow або обраним run. КомандиПідтримується: методи надсилання клієнта й handle та історія signal worker. PHP APIПідтримується: async-клієнт надсилає signal, а worker workflow обробляють їх. ПовідомленняПідтримується: надсилання клієнтом і handle та обробка signal worker. Rust API
QueryПідтримується: виконання іменованого query лише для читання зі структурованим виводом. КомандиПідтримується: query клієнта й handle та зареєстровані обробники query worker. PHP APIПідтримується: query async-клієнта та обробники query worker через replay. ПовідомленняПідтримується: query клієнта та обробники query worker через replay, коли виявлення runtime оголошує підтримку завдань query. Rust API
UpdateПідтримується: подання й очікування прийнятого або завершеного результату. КомандиПідтримується: updateWorkflow і registerUpdate. PHP SDK не має написання валідаторів і не оголошує їх. PHP APIПідтримується: клієнти, обробники workflow та синхронні оголошені валідатори, коли виявлення оголошує контракт перевірки перед прийняттям. Worker із валідаторами відхиляють непідтримувані runtime. ПовідомленняПідтримується: клієнт, handle, payload Avro та зареєстровані інтерфейси update worker. Rust SDK не має написання валідаторів і не оголошує їх. Update
РозкладиПідтримується: повний життєвий цикл розкладу, backfill та історія аудиту. КомандиПідтримується: повний життєвий цикл розкладу та список через Client. PHP APIПідтримується: повний async-життєвий цикл розкладу та посторінкова історія аудиту. РозкладиНе підтримується: поточний Rust SDK не заявляє API керування розкладами. Використовуйте CLI, PHP, Python або Server API.
ВидимістьПідтримується: пошук workflow/run, worker, черги завдань, історія та JSON діагностики. КомандиПідтримується: фільтрування/посторінковий перегляд workflow, історія, простори імен, worker та черги завдань. Докази видимостіПідтримується: клієнтські інтерфейси workflow, розкладів, просторів імен, worker, черг, історії та пошукових атрибутів. Client APIВідрізняється: опис/результат обраного run підтримуються. Загальний список/пошук усіх worker/run та адміністрування просторів імен не заявлені. Клієнт Rust
Виконання workerНавмисно відрізняється: низькорівневі команди протоколу worker підтримують діагностику й перевірку відповідності. dw не є runtime worker застосунку. Команди workerПідтримується: віддалені обробники workflow, activity, query та update через durable-workflow/sdk. Worker PHPПідтримується: детерміновані worker workflow та activity. Worker PythonПідтримується: власні обробники workflow, activity, query та update. API worker Rust

Підтримується означає, що названий інтерфейс поточного випуску має можливість. Відрізняється позначає навмисну межу ролі. Не підтримується є явною поточною прогалиною без прихованої обіцянки. Виявлення протоколу runtime залишається джерелом істини, коли можливість залежить від узгодженого протоколу worker.

Докази за інтерфейсами продукту​

CLI​

Огляд CLI визначає встановлення, профілі, структурований вивід і поведінку кодів завершення. Довідник команд містить повний інтерфейс оператора: життєвий цикл, повідомлення, розклади, видимість і низькорівневі команди протоколу worker, які не є циклом worker SDK.

PHP SDK​

Зафіксований PHP SDK має API клієнта та віддаленого worker, незалежні від фреймворку. Його поточний публічний інтерфейс містить життєвий цикл workflow й handle результатів, signal, query, update, розклади, фільтрування/історію workflow, видимість просторів імен, worker і черг завдань, а також зареєстровані обробники workflow, activity, query та update. Дивіться посібник PHP SDK і згенерований довідник PHP API.

Python SDK​

Python SDK поєднує async-клієнт площини керування з детермінованими worker workflow та activity. Його посібник описує операції клієнта, обробники повідомлень, виконання worker і керування розкладами. Згенерований довідник Python API містить точні сигнатури й типи результатів.

Rust SDK​

Опублікований Rust SDK має площину керування й життєвий цикл обраного run, signal, query через replay, update та власні worker workflow/activity. Підтримка update містить Client::update_workflow, WorkflowHandle::update, Worker::register_update та їхні варіанти зі значеннями Avro. Керування розкладами й загальний список/пошук залишаються явними прогалинами. Дивіться посібник Rust SDK і згенерований довідник Rust API.

Докази спільного контракту​

Усі чотири продукти працюють з однаковою версійованою площиною керування HTTP+JSON та публічним конвертом payload. Докази поділено за тим, що вони підтверджують:

  • Індекс можливостей фіксує точні мінімальні версії артефактів і поточний набір підтримки.
  • Набір перевірок відповідності платформи фіксує сценарії runtime між клієнтами та worker.
  • Репозиторії CLI й Python зберігають спільні фікстури запитів операцій, для яких семантичні тіла запитів зараз порівнюються байт у байт.
  • Публічні довідники API PHP та Rust і тести випусків підтверджують додаткові підтримувані методи, перелічені вище.

Наявність спільної фікстури у двох репозиторіях не означає відсутності операції в інших SDK. Так само спільний endpoint не означає, що кожен продукт має однакову роль оператора чи worker.

Додавання або розширення клієнтського інтерфейсу​

Під час додавання нової операції CLI або SDK:

  1. Зберігайте шляхи, методи, семантичні поля, конверти payload і результати помилок незалежними від мови.
  2. Додавайте докази запитів і runtime для кожного клієнта чи worker-учасника.
  3. Документуйте навмисні відмінності синтаксису або межі ролей.
  4. Явно позначайте непідтримувані продукти.
  5. Вважайте мовну серіалізацію, шляхи файлів, назви класів або форми помилок дефектами публічного контракту.