Вот также, как вы могли бы сделать это с рабочим процессом. Заметьте, я не говорю, что вы должны сделать это с помощью рабочего процесса, просто вы можете;)
Вам потребуется (большое) количество штатов. Насколько велико, зависит от комбинаций (! = Перестановок) ваших состояний безопасности. Комбинации выбора m вещей среди n определяются следующим образом:
n!/(m!(n-m)!),
где! является факториалом.
Например, в приведенном вами примере у вас есть 3 состояния безопасности: альфа, браво и зулу. Это дает:
3!/(1!2!) + 3!/(2!1!) + 3!/(3!0!) = 3 + 3 + 1 = 7
Сумма - это комбинации, состоящие из 1, 2 или 3 из них.
Итак, все семь штатов;)
Переходы - это другой зверь. Если вам нужно иметь возможность перейти из любого из этих комбинированных состояний в любое другое, то вам придется рассчитывать перестановки, поскольку переход от a к b отличается от перехода от b к a. Перестановки даются:
n!/(n-m)!
т.е. для 7 состояний выше у вас будет 7! / (7-2)! = 7 * 6 = 42 (!!!) переходов. Конечно, вы могли бы упростить переходы, разрешив добавлять / удалять только одно состояние безопасности каждый раз.
Вот, пожалуйста, надеюсь, вам будет так же интересно читать это, как и мне:)