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

Підсумок обмежень

ОбмеженняКод workflowКод activity
Введення-виведенняЗабороненоДозволено
Змінні глобальні змінніЗабороненоДозволено
Недетерміновані функціїЗабороненоДозволено
Carbon::now()ЗабороненоДозволено
sleep()ЗабороненоДозволено
Зовнішні побічні ефектиПеренесіть їх до activityДозволено лише за безпечного повторення

Код workflow має бути детермінованим, оскільки рушій відновлює стан workflow шляхом відтворення історії стійких кроків. Він повторно викликає тіло workflow, а не activity. Якщо тіло ухвалює інші рішення під час відтворення, рушій не може коректно відновити стан і продовжити виконання. Тіло workflow не має бути ідемпотентним. Для відтворення потрібна детермінованість.

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

Дивіться ідемпотентність та детермінованість workflow для прямого порівняння та прикладів, які розділяють ці властивості.

Публічний контракт v2 щодо цих понять наведено в гарантіях виконання та ідемпотентності.