Ідентифікатор workflow
Ідентифікатори екземпляра та запуску
Стійкий workflow має два ідентифікатори з різними життєвими циклами:
- Ідентифікатор екземпляра (
id(),workflowId()) — стабільний публічний ідентифікатор workflow. Він генерується під час першого запуску або надається викликачем і не змінюється протягом життя workflow, зокрема в ланцюжках continue-as-new. - Ідентифікатор запуску (
runId()) визначає одне конкретне покоління виконання workflow. Він виділяється щоразу під час створення нового запуску: при першому старті та коли workflow продовжується як новий.
Використовуйте ідентифікатор екземпляра для публічних викликів. Ідентифікатор запуску є вказівником на конкретне покоління, корисним для дослідження, налагодження чи аудиту. Тривалі клієнти площини керування не мають його відстежувати.
use Workflow\V2\WorkflowStub;
$workflow = WorkflowStub::make(MyWorkflow::class);
$id = $workflow->id();
$workflow->start();
$runId = $workflow->runId();
Використовуйте id, коли потрібен стабільний публічний ідентифікатор workflow. Ідентифікатор запуску використовуйте для дослідження одного конкретного виконання.
Життєвий цикл ідентифікатора запуску
Ідентифікатор запуску визначає покоління виконання. Кожне покоління workflow v2 має власний ідентифікатор запуску, а один ідентифікатор екземпляра може з часом охоплювати багато поколінь:
- Новий
start()створює перший запуск і його перший ідентифікатор. continueAsNew(...)закриває поточний запуск якcompleted/continuedта починає новий із новим ідентифікатором запуску, зберігаючи ідентифікатор екземпляра. Дивіться продовження як новий запуск.
Оскільки ідентифікатор запуску належить одному поколінню, для стійкої поведінки між такими переходами викликачі мають звертатися за ідентифікатором екземпляра:
- Signal, query, update та операторські команди завжди знаходять найновіший стійкий запуск екземпляра. Викликачам не потрібно відстежувати ідентифікатори запусків через межі continue-as-new.
- Засоби детального дослідження конкретного покоління, наприклад сторінка деталей запуску Waterline, експорт історії чи налагоджувач відтворення, приймають явний ідентифікатор запуску для окремого дослідження одного виконання.
Ідентифікатор запуску доступний як runId() у коді workflow й activity та як поле
workflow_run_id / run_id в історії, проєкціях та експортах. Це завжди
ідентифікатор покоління, якому належить подія чи рядок. Ідентифікатор запуску в
старих подіях історії може відрізнятися від поточного ідентифікатора запуску того
самого екземпляра.
Ідентифікатори екземпляра, задані користувачем
Під час запуску workflow можна задати власний id. Такі ідентифікатори мають бути
безпечними для URL рядками завдовжки до 191 символу, що містять лише літери,
цифри, ., _, - та :.
$workflow = WorkflowStub::make(MyWorkflow::class, 'order-123');
Згодом workflow можна завантажити за власним id.
$workflow = WorkflowStub::load('order-123');
Доступ до ідентифікаторів усередині activity та workflow
Усередині activity:
use Workflow\V2\Activity;
class MyActivity extends Activity
{
public function handle(): void
{
$id = $this->workflowId();
$runId = $this->runId();
}
}
Усередині workflow $this->workflowId() повертає ідентифікатор екземпляра,
а $this->runId() — обраний ідентифікатор поточного запуску.