排序任务列表的最佳位置

时间:2020-03-06 14:44:40  来源:igfitidea点击:

我正在构建一个Web应用程序,它是一个流程管理应用程序。几种不同的员工类型将显示要执行的任务列表,并且每项任务完成时,该任务将移至下一位要处理的员工。

任务层次结构是"批次">"加载">"装配">"零件">"任务"。当前有8条规则来确定每种Employee类型应首先处理哪个Task。这些规则适用于零件的尺寸,以及零件的​​完成将如何影响层次结构,例如,如果零件A完成了,则完成了一个完整的批次,而零件B则没有完成,因为该批次中还有其他零件需要完成。

无论如何,这就是系统运作方式的提升音调。考虑到规则可能会更改,并且可能会添加更多规则,我试图找出的是一种有效,快速且可维护的方式来执行此操作。

最初,我打算让数据库(sql 2005)完成所有繁重的工作,但我担心使用DB很难实现更复杂的规则。因此,另一种方法是将任务列表拉入中间层并创建对象集合,然后将每个规则应用于集合。我毫不怀疑每个规则都可以独立地转换为T-SQL,但是根据任务类型最多按8个标准进行排序感觉很麻烦。

我可以用中间层方法看到的一个好处是,我可以创建一个松散的,受限制的系统,在其中可以更改任务流,这在我认为的DB中将更加困难。

那么你们会推荐什么?我有没有想到的第三种选择?

EDIT [1]只是为了进一步说明这一点,预计数据库不会与我最初开发的内容有所变化。

解决方案

从问题的细节很难确定。但是,将逻辑放在业务逻辑(中间)层将意味着无论后端数据库可能是什么,业务规则都可以继续使用相同的代码。目前,我们指定了T-SQL,但将来是否有可能迁移到非SQL Server环境?

什么平台? .NET 3.5引入了LinqToSQL,这可能会引起争议。我们可以使用策略模式根据任务类型从中选择/构建适当的查询,然后让LINQ为我们执行到SQL的转换。这样,我们可以在代码中构建查询,但是仍然可以在数据库上实际执行查询。