Сколько StateMachines может иметь Spring StateMachine? - PullRequest
0 голосов
/ 30 января 2019

Я понял, что в документации упоминается «машина выражений», а также состояния для состояний «для простых случаев использования».В примерах определены аннотации @StateMachine, что не сулит ничего хорошего для моего вопроса.

Что, если я хочу иметь другой StateMachine для бизнес-процесса вместо того, чтобы пытаться определить один все более сложный конечный автомат?

1 Ответ

0 голосов
/ 15 февраля 2019

Можно использовать StateMachine factory и получать новый экземпляр для каждого бизнес-процесса.

@Configuration
@EnableStateMachineFactory
public class BusinessProcessStateMachineConfig
        extends EnumStateMachineConfigurerAdapter<States, Events> {

    @Override
    public void configure(StateMachineStateConfigurer<States, Events> states)
            throws Exception {
        states
            .withStates()
                .initial(States.S1)
                .end(States.SF)
                .states(EnumSet.allOf(States.class));
    }

}

Затем вы можете добавить фабрику в свои службы и получить экземпляры.Вы даже можете иметь более одной фабрики (например, если вы хотите иметь совершенно разные конечные автоматы в одной кодовой базе).

@EnableStateMachineFactory(name = "one")

Указание имени позволяет существовать нескольким фабрикам и нескольким экземплярам sm каждой фабрики.быть введенным в услуги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...