Сохранить субгосударство при возвращении в государство без гражданства?

У меня есть конечный автомат, как показано ниже. Я реализовал это в C# с помощью Stateless.

On государство может вернуться в случае RequestStatus спусковой крючок. Когда это происходит, состояние машины может находиться в любом из следующих состояний: On, On > Standby или же On > Operational, Теперь для этого триггера текущее состояние должно оставаться как есть, и только состояние должно быть возвращено, т.е. выполнить ReturnStatus(),

Выполнение функций в зависимости от триггера может быть выполнено с помощью OnEntryFrom(Trigger, Action) метод. Но проблема в том, если я установлю OnEntryFrom из On состояние, каждый раз, когда запускается триггер, если любое из подсостояний активно, они сначала выходят, затем On состояние выходит, а затем OnEntry из On состояние происходит.

Теперь, что я хочу, независимо от того, в каком из 3 состояний работает машина состояний, для RequestStatus триггер, просто выполните ReturnStatus() метод.

Один способ, которым я мог сделать это, установлен OnEntryFrom(PowerOn, () => Initialize()) а также OnEntryFrom(RequestStatus, () => ReturnStatus()), Сделайте то же самое для подсостояний, добавив новые триггеры StandbyRequestStatus а также OperationalRequestStatus и вызвать их в соответствии с тем, который был ранее активен. Что, на мой взгляд, утомительно, особенно если число подсобных мест растет.

Другой способ - сохранить подсостояние и обработать его только один раз. Но я не могу найти способ сделать это в Stateless.

Это достижимо при использовании Stateless? Кто-нибудь делал это раньше?

Stateless Statemachine Используется

0 ответов

Другие вопросы по тегам