Мне нужны некоторые предложения. Я пытаюсь выполнить процесс онлайн-заказа через машину состояния Spring и пытаюсь построить диаграмму состояний, прежде чем я получу работу. Теперь скажите, что мой заказ может быть отменен тремя разными пользователями admin CanceledByAdmin1, CanceledByAdmin2 и CanceledByAdmin3. Должен ли я заставить их подставить состояние «Отмена» или создать три разных состояния? Помня о том, что все отмененные состояния являются конечными состояниями и независимы друг от друга, я не знаю, делает ли что-то другое, кроме упрощения бумажной диаграммы. Любая помощь будет оценена по достоинству.Независимые подходы в государственной машине
ответ
Что касается Spring Statemachine
, мы можем иметь только одно состояние завершения и пытаться сделать это, поскольку сборка подстанций немного неудобна, потому что, как только вы входите в нее, конечный автомат должен остановить всю обработку. Думал, что эта область - это то, чего я, вероятно, не замечал, и мог бы попытаться улучшить ситуацию.
В то время как вы могли бы, вероятно, состояние S1
, имеющий три подсостояния S11/S11E
, S12/S12E
и S13/S13E
с переходом triggerless от S11
к S11E
и же с другими подсостояниями, даже это чувствует себя немного странно, потому что никто из них не будет на самом деле прекратить корневую государственную машину.
Я думаю, вопрос заключается в том, чего вы пытаетесь достичь?
Если вы хотите сохранить информацию только о том, кто отменил заказ, можете ли вы использовать простое однократное состояние окончания и во время перехода к этому состоянию завершения добавьте/измените расширенные переменные состояния с этой информацией.
Extended state variables
обычно используются для преодоления этих проблем внезапно, когда астрономический подсчет состояний хранит произвольную информацию. Я знаю, что в этом примере у вас всего три, но как насчет 10 или 100? Если вам действительно нужно добавить еще один, вам нужно изменить конфигурацию конечного автомата и перекомпилировать. С расширенными переменными состояния вам не нужно будет этого делать.
Got it. В любом случае, Janne нам нужно начать использовать FSM в нашем проекте электронной коммерции. Наша идея - разработать собственную государственную машину для жизненного цикла процесса заказа. Теперь я думаю использовать Spring statemachine. Что ты предлагаешь? Есть ли у вас какие-либо идеи о том, как долго до конечной машины вообще доступен? – RBS
Если вам не требуется, чтобы многие функции были установлены на машине, и ваша собственная реализация была бы очень простой одноразовой разработкой, я не вижу в этом ничего плохого. Просто после того, как вам нужно начать добавлять функции, внутренняя структура машины становится почти экспоненциально более сложной. Поверь мне, там, сделал это. Мы планируем попасть в 1.0.0.RC1 в месяц SpringOne. От RC1 до RELEASE, я бы сказал, 1-2 месяца. Просто оценка, но, вероятно, довольно точная. –