我需要实现一个工作流系统。
例如,要导出一些数据,我需要:
- 使用 XSLT 处理器转换 XML 文件
- 使用生成的转换转换为任意数据结构
- 使用结果(文件或数据)并生成存档
- 将存档移动到给定文件夹中。
我开始创建两种类型的类,Workflow,它负责添加新的 Step 对象并运行它。
每个 Steps 实现一个 StepInterface。
我主要担心的是我的所有步骤都依赖于前一个步骤(第一个除外),我想知道处理此类问题的最佳方法是什么。
我虽然循环遍历每个步骤并为每个步骤提供前一个步骤的结果(如果有的话),但我对此并不满意。
另一个想法是允许将“上一个”步骤设置为步骤,例如:
$s = new Step();
$s->setPreviousStep(Step $step);
但是我失去了 Workflow 类的实用性。
有什么想法、建议吗?
顺便说一句,我也关心整个工作流程的成功或失败,这意味着如果任何步骤失败,我需要回滚或清理以前的数据。