我有一个按顺序进行的工作流
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/