Я пытался создать конфигурацию для диаграммы состояния, прилагаемой . Проблема в том, что я не смог зарегистрировать действия входа в состояния в регионах внутри вилки. т.е. для состояний S41, S41E, S42, S42E.Нужна помощь для создания конфигурации конечного автомата
Конфигурация выглядит, как показано ниже.
Builder builder = StateMachineBuilder.builder();
builder.configureConfiguration()
.withConfiguration()
.autoStartup(false).listener(listener()).taskExecutor(taskExecutor());
builder.configureStates().withStates().initial("S1", ActionFactory.getAction("S1EntryAction"))
.fork("FORK_STATE")
.join("JOIN_STATE")
.state("S4")
.state("S2", ActionFactory.getAction("S2EntryAction"), null)
.state("S3", ActionFactory.getAction("S3EntryAction"), null)
.state("S5", ActionFactory.getAction("S5EntryAction"), null)
.state("S6", ActionFactory.getAction("S6EntryAction"), null)
.state("S7", ActionFactory.getAction("S7EntryAction"), null)
.and().withStates().parent("S4").initial("S41").end("S41E")
.and().withStates().parent("S4").initial("S42").end("S42E");
builder.configureTransitions()
.withExternal().source("S1").target("S2")
.and().withExternal().source("S2").target("S3")
.and().withExternal().source("S3").target("FORK_STATE")
.and().withFork().source("FORK_STATE").target("S4")
.and().withExternal().source("S41").target("S41E")
.and().withExternal().source("S42").target("S42E")
.and().withJoin().source("S4").target("JOIN_STATE")
.and().withExternal().source("JOIN_STATE").target("S5")
.and().withExternal().source("S5").target("S6")
.and().withExternal().source("S6").target("S7");
return builder.build();
Еще одна помощь. В приведенной выше конфигурации состояния машины каждое состояние имеет вложенные состояния.
S1 имеет шаг0 и старт1. Оба ортогональны step0 имеет состояние task1, а задача 2 step1 имеет задачу состояний 3, а задача 4 step0 должна быть завершена, когда задача 1 параллельных областей заканчивается ее exexution. Шаг 1 должен быть завершен, когда задача 3 параллельных областей и задача 4 заканчивают его exexution. Фактически все четыре состояния task1, task2, task3, task4 должны выполняться параллельно
S1 завершен, если завершены шаги step0 и step2.
переходов от S1 к S2 будут происходить только после завершения всех параллельных штатов т.е. (step0 (task1 & задачи 2) и step2 (Task3 и task4))
Также обратите внимание, что S1 является начальным состоянием моей конфигурации.
Я обновил конфигурацию в таких штатах, как ниже
.and().withStates().parent("S1")
.initial("Step0")
.and().withStates().parent("Step0")
.initial("task1", dummyAction1())
.and().withStates().parent("Step0")
.initial("task2", dummyAction2())
.and().withStates().parent("S1")
.initial("Step1")
.and().withStates().parent("Step1")
.initial("task3", dummyAction3())
.and().withStates().parent("Step1")
.initial("task4", dummyAction4())
.and().withStates().parent("S2")
.initial("Step01")
.and().withStates().parent("Step01")
.initial("task5", dummyAction3())
.and().withStates().parent("Step01")
.initial("task6", dummyAction4())
.and().withStates().parent("S2")
.initial("Step11")
.and().withStates().parent("Step11")
.initial("task7", dummyAction3())
.and().withStates().parent("Step11")
.initial("task8", dummyAction4())
Как настроить переход от S1 к S2? (S1 - начальное состояние, а S1to S2 должно выполняться после завершения всех параллельных задач в S1 (т. Е. Task1, task2, task3, task4).
Прежде чем я буду рассматривать это дальше, попытались ли вы определить действие для 'S41' с' .initial ("S41"). State ("S41", null, null) 'или с возможным' .state (" S41 ", null, null)' на родительском уровне? Также в версии 1.1.x сделано много исправлений, которые идут на следующей неделе. –
Спасибо! это сработало. – user2330825
Я обновил вопрос. Цените любую помощь – user2330825