Повторите и макс попытки с конечным автоматом
Я пытаюсь создать конечный автомат, в котором я хочу создать функцию повторных попыток и максимальных попыток. Позвольте мне объяснить, пока у меня есть это:
От SAVED я хочу перейти к VALIDATED, хотя, если есть ошибка, он должен перейти в состояние AWAITING_VALIDATION. Через 3 минуты, попробуйте снова в состояние VALIDATED.
- Правильно ли настроен механизм повтора?
- После 3 попыток я хочу вернуться в состояние SAVED (и остановить машину состояния). Можно ли сделать это в необычном виде (например, с помощью пружинного автомата) или мне нужно делать это вручную, используя какой-то кэш?
Спасибо за вашу помощь
1 ответ
Вероятно, есть много способов сделать это с различными конфигурациями машин, но, сказав, что это настолько ясно представленное предположение, что я хотел потратить некоторое время на это.
Вы близки, и вы упустили некоторые вещи (я бы сказал трюки), чтобы это произошло. Ответ заключается в использовании extended state variables
добавить память в машину. Эти переменные обычно используются, чтобы ограничить количество необходимых значений, чтобы представить, что машина должна делать. Вам нужно 3 цикла, и вы, вероятно, могли бы создать больше состояний для представления каждого цикла и перехода (с определенными элементами защиты) к ним по мере необходимости. Однако это просто взорвет конфигурацию состояния, если вам нужно больше циклов, таких как 10, 20 или 100+.
Я создал пример в ssm-sample3, который показывает, как extended state variables
и разные guards
а также actions
может быть использован для управления этим конкретным потоком.
К сожалению, в токе есть ошибка 1.1.1.RELEASE
что мешает вам напрямую перейти от AWAITING_VALIDATION
в HAS_ERROR
соединение и петля, пока вы не остановитесь в VALID
используя анонимный переход с защитой (поэтому образец имеет пустышку TMP
состояние, которое не нужно с 1.2.x
).
Вероятно, это то, что я хотел бы добавить в качестве примера или часто задаваемых вопросов к нашим ссылкам.
Лемми знает, поможет ли это.