java - 要使用的工作流设计模式类型?

标签 java design-patterns workflow

我有一个按顺序进行的工作流

A->B->C->D->E

我需要一种设计模式,允许我以最少的代码更改在它们之间添加状态。

http://en.wikipedia.org/wiki/Workflow_patterns

哪些设计模式有效?

最佳答案

您可以查看 petri 网实现、受微积分启发的框架,例如 Jacob ,用于进程的虚拟机 PVM或类似 SCXML 的状态机实现尽管后者正在等待状态更改然后执行某些操作,因此您需要将控制流更改为数据流。

如果您想自己实现它,您需要确保将控制权交还给某个运行时 Controller ,而不是仅仅调用下一个节点,因为那样会破坏您的堆栈。该运行时 Controller 还可以将上下文对象注入(inject)到 Activity 可运行对象中,这样您就可以在 Activity 之间共享状态。请在下面找到一个粗略的草图作为伪代码:

interface Activity {
    Activity run(SharedContext context);
}

class A implements Activity {
    public Activity run(SharedContext context) {
        doA(context);
        return new B();
    }
}

class B implements Activity {
    public Activity run(SharedContext context) {
        doB(context);
        return new C();
    }
}

// runtime controller
SharedContext context = new SharedContext();
Activity next = new A();

while (next != null) {
    next = next.run(context);
}

关于java - 要使用的工作流设计模式类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17829386/

相关文章:

r - 在 R 工作流程中编写函数与逐行解释

asp.net - 您对 Windows Workflow Foundation 有何体验?

java - 如何在 Parse 中使用多个查询约束

c# - 状态设计模式的功能等价物

javascript - 在 javascript 中开发模式

design-patterns - 策略的替代模式

python - 使用异步事件实现状态引擎的正确方法是什么?

java - 在方法之间传递 jedis 实例是一种不好的做法吗?

java - Spring Data : issue with OneToMany, 子级未正确保存

java - java计算点之间的距离