首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在基于stateless4j的状态机中持久化状态和转换?

如何在基于stateless4j的状态机中持久化状态和转换?
EN

Stack Overflow用户
提问于 2015-05-01 15:36:46
回答 1查看 1.2K关注 0票数 1

我正在为基于Stateless4j API的工作流管理系统实现状态机。但是,我无法找到一种有效的方法来持久化Stateless4j中的状态和转换。

作为我们的应用程序的一部分,我们有这样的要求:在用户返回到工作流之前,状态必须持续3到4天以上。我们将同时运行多个工作流。

请您分享您对在基于Stateless4j的状态机实现中持久化状态的最佳实践的见解吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 12:25:46

看起来,您需要做的是使用自定义访问器和mutator构造StateMachine,如下所示:

代码语言:javascript
复制
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)
    }
}

然后,您需要使用访问器和变异器调用构造函数:

代码语言:javascript
复制
/**
 * 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的作者

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29990009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档