Сохранить субгосударство при возвращении в государство без гражданства?
У меня есть конечный автомат, как показано ниже. Я реализовал это в 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? Кто-нибудь делал это раньше?