9

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

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

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

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

这些设计模式中的哪一个有效?

4

2 回答 2

12

您可以查看 petri-net 实现、像Jacob这样的受微积分启发的框架、用于PVM等进程的虚拟机或像SCXML这样的状态机实现,尽管后者正在等待状态更改然后做一些事情,所以你需要改变你的控制流变成数据流。

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

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);
}
于 2013-07-24T20:48:20.583 回答
2

你可以试试activiti您还可以使用eclipse 插件设计自己的工作流程

于 2013-07-24T09:14:52.790 回答