0

Я работаю над внедрением конечного автомата для системы управления рабочими процессами на основе Stateless4j API. Однако я не могу найти эффективный способ сохранения состояний и переходов в Stateless4j.Как мы можем сохранить состояния и переходы на государственной машине, основанной на stateless4j?

Как часть наших случаев использования, у нас есть требование сохранить жизнь людей более 3 - 4 дней, пока пользователь не вернется к рабочему процессу. И одновременно будет работать несколько рабочих процессов.

Не могли бы вы поделиться своими идеями о лучших практиках, чтобы упорствовать в состояниях государственной машины Stateless4j?

ответ

1

Похоже, что вам нужно сделать, это построить свой Statemachine с настраиваемым аксессором и мутатором, что-то вроде этого:

public class PersistentMutator<S> implements Action1<S> { 
    Foo foo = null; 

    @Inject 
    FooRepository fooRepository; 

    public PersistentMutator(Foo foo) { 
     this.foo = foo; 
    } 

    @Override 
    public void doIt(S s) { 
     foo.setState(s); 
     fooRepository.save(foo) 
    } 
} 

Затем вы хотите вызвать конструктор с аксессорами и мутаторами:

/** 
* Construct a state machine with external state storage. 
* 
* @param initialState The initial state 
* @param stateAccessor State accessor 
* @param stateMutator State mutator 
*/ 
public StateMachine(S initialState, Func<S> stateAccessor, Action1<S> stateMutator, StateMachineConfig<S, T> config) { 
    this.config = config; 
    this.stateAccessor = stateAccessor; 
    this.stateMutator = stateMutator; 
    stateMutator.doIt(initialState); 
} 

Кроме того, вы можете посмотреть StatefulJ. Он построил поддержку для атомарного обновления состояния как в JPA, так и в Mongo из коробки. Это может сэкономить вам некоторое время.

Отказ от ответственности: Я автор StatefulJ

+0

Здравствуйте Андрей, Спасибо за ваш обмен подход и понимание на StatefulJ. Пожалуйста, позвольте мне внимательно изучить возможности StatefulJ. –

+0

'setState' в' StateMachine' теперь закрыт или я не понимаю, что Foo здесь. – NagyI