我有一个要求,即我在屏幕上执行一组作业(每个作业可能需要数小时才能执行),我需要制定一些规则来执行这些作业。它可以用图表表示。
几乎总结了不同类型的规则,我的问题是,我可以使用一种设计模式来实现这一点吗?理想情况下,我希望在数据库中保留此工作流,并根据该工作流验证是否允许作业运行。 Windows工作流程对此可能有点过头了,我正在寻找可能不是最好的简单解决方案,但花费的时间更少。
要使用的技术:ASP.NET 3.5,C#3.0,SQL Server 2008
答案 0 :(得分:0)
听起来你可能想看一下Workflow Foundation,在WF4中有一个WorkflowApplication
类,它允许你轻松地将工作流嵌入到GUI应用程序中。
查看此页面中的“在WPF中托管工作流程”和“在Windows窗体中托管工作流程”部分:http://www.packtpub.com/article/hosting-workflow-applications-microsoft-windows-workflow-foundation-40
答案 1 :(得分:0)
http://code.djangoproject.com/wiki/GoFlow/sampleprocess这对我有帮助。这是强大的架构
答案 2 :(得分:0)
好吧,我不认为你已经使用简单直接的设计模式实现了许多管理规则的要求。您可以使用多种设计模式的组合来获得良好的设计。
但是,考虑到您的要求,我认为您可以使用template pattern。此设计模式将允许您定义程序框架 - 行为和顺序。但是,由于您有一些其他规则可以更改序列或可以进行并行处理 - 模板模式可以用于覆盖算法步骤以允许使用子类或模板模式的不同行为可以与钩子一起使用以跳过某些步骤并诱导不同的行为。
我只是在这里大声思考,你必须仔细权衡你的要求,并检查这是否是你实施的最佳设计模式。
答案 3 :(得分:0)
每个作业都有一个序列号 并且应该执行工作 序列
这对我来说表明您需要队列来添加作业。我首先找到Priority Queue的实现,并采用它来了解队列中的所有其他作业,并在此基础上分配优先级。这将确保它们都按照正确的顺序运行,具体取决于它们的“类型”。
答案 4 :(得分:0)
我通过将这些作业依赖项以树格式存储在表中并使用递归函数对其进行评估来解决这个问题。可能不是最好的,但它可以工作和配置。