我需要实现一个工作流程系统。您将如何实施Workflow系统?
例如,导出一些数据,我需要:
- 使用XSLT处理器来转换XML文件
- 使用出现的转变转换成任意的数据结构
- 使用生成(文件或数据)并生成归档文件
- 将归档文件移动到给定文件夹中。
我开始创建两类类Workflow,它负责添加新的Step对象并运行它。
每个步骤实现一个StepInterface。
我主要关心的是我所有的步骤都依赖于前一个步骤(除第一个步骤外),我想知道处理这些问题的最佳方法是什么。
我虽然循环遍历每个步骤,并提供每个步骤的结果前面(如果有的话),但我并不满意它。
另一个想法已经允许“前面的”步骤被设定于一个步骤,如:
$s = new Step();
$s->setPreviousStep(Step $step);
但我失去了工作流类的实用工具。
任何想法,建议?顺便说一句,我还担心整个工作流程的成败,这意味着如果任何步骤失败,我需要回滚或清理以前的数据。
您好,感谢您的宝贵答案,我做了类似的事情(至少是第一步,http://pastebin.com/KF2bp0Wy)我虽然过的StepResult但不是StepInput,关于“配置”为我正在使用Symfony2我想知道如何使用ConfigurationBuilder来验证结果。 – Trent 2012-04-05 18:19:42
恐怕我不能给你任何实施帮助,除非你用Java来做。 :)请注意,回滚的“自然”方法是以相反顺序调用它们,以便每个步骤都可以知道它处于与运行后完全相同的状态。 – biziclop 2012-04-05 18:32:23