我有一个要求,我有一组作业要从屏幕执行(每个作业可能需要几个小时才能执行),我需要制定一些规则来执行这些作业。它可以用图表来表示。哪种设计模式适合此工作流程要求?
- 每个职业都有一个序列号和作业应该在序列
- 然而,有一组可以在任何顺序执行的工作和他们每个人都可以有自己的路径来执行。例如一旦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中