我需要實現一個工作流程系統。您將如何實施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