我有一個要求,我有一組作業要從屏幕執行(每個作業可能需要幾個小時才能執行),我需要制定一些規則來執行這些作業。它可以用圖表來表示。哪種設計模式適合此工作流程要求?
- 每個職業都有一個序列號和作業應該在序列
- 然而,有一組可以在任何順序執行的工作和他們每個人都可以有自己的路徑來執行。例如一旦A和B完成,D,E,F可以按任意順序運行,但是可以有一條規則,像G只能在D完成後才能運行,H只能在E完成之後運行。
- 如果其之前的任何並行作業成功,則可以運行一些作業。如果作業是A,B,C,D和A,則B,C可以按任意順序運行,只有在A或B或C完成時才能運行D.
- 只有完成所有前面的並行作業,才能運行一些作業。在上面的例子中,如果A和B和C完成,可以運行規則D如果A和B和C完成
- 有一些檢查點,這意味着一旦檢查點作業完成,以前都不能重新運行,包括檢查點作業。
不知怎的,我需要能夠表達一個可以在運行時評估的工作條件。例如E =(A和B)或(C和D);這意味着如果A和B成功或者C和D成功,則作業E可以運行。
幾乎總結了不同類型的規則,我的問題是,是否有我可以用來實現這個設計模式?理想情況下,我希望將此工作流保存在數據庫中,並基於此驗證是否允許作業運行。窗口工作流可能是一個矯枉過正的,我正在尋找更簡單的解決方案,可能不是最好的,但需要更少的時間。使用
技術:ASP.NET 3.5,C#3.0,SQL Server 2008中