Можливості клієнтів і worker
Оберіть інтерфейс за потребами процесу. CLI dw та офіційні SDK PHP,
Python і Rust використовують спільні контракти площини керування v2
та worker, але їхні ролі оператора, клієнта й worker відрізняються.
Цей посібник для всіх клієнтів залишається за початковим маршрутом
/docs/polyglot/cli-python-parity/, щоб наявні посилання працювали.
Порівняння можливостей
| Можливість | CLI dw | PHP SDK | Python SDK | Rust 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:
- Зберігайте шляхи, методи, семантичні поля, конверти payload і результати помилок незалежними від мови.
- Додавайте докази запитів і runtime для кожного клієнта чи worker-учасника.
- Документуйте навмисні відмінності синтаксису або межі ролей.
- Явно позначайте непідтримувані продукти.
- Вважайте мовну серіалізацію, шляхи файлів, назви класів або форми помилок дефектами публічного контракту.