Oop 对任务列表进行排序的最佳位置

Oop 对任务列表进行排序的最佳位置,oop,data-structures,sorting,collections,Oop,Data Structures,Sorting,Collections,我正在构建一个web应用程序,它是一个流程管理应用程序。几个不同的员工类型将显示一个要执行的任务列表,当每个人完成一项任务时,它将转移到下一个要处理的员工 任务层次结构为批处理>加载>装配>零件>任务。目前有8条规则用于确定每种员工类型应首先处理哪项任务。这些规则适用于零件的尺寸,以及零件完成将如何影响层次结构,例如,如果零件A已完成,则其完成整个批次,而零件B则不会完成,因为其批次中仍有其他零件需要完成 不管怎么说,这就是系统工作原理的电梯音调。我想找出的是一种高效、快速和可维护的方法,要记住

我正在构建一个web应用程序,它是一个流程管理应用程序。几个不同的员工类型将显示一个要执行的任务列表,当每个人完成一项任务时,它将转移到下一个要处理的员工

任务层次结构为批处理>加载>装配>零件>任务。目前有8条规则用于确定每种员工类型应首先处理哪项任务。这些规则适用于零件的尺寸,以及零件完成将如何影响层次结构,例如,如果零件A已完成,则其完成整个批次,而零件B则不会完成,因为其批次中仍有其他零件需要完成

不管怎么说,这就是系统工作原理的电梯音调。我想找出的是一种高效、快速和可维护的方法,要记住规则可能会改变,可能会添加更多的规则

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

我可以看到中间层方法的一个好处是,我可以创建一个限制更为宽松的系统,在这个系统中可以更改任务流,我认为这在数据库中会更加困难

你们推荐什么?还有第三种选择我没有想到吗


编辑[1]只是为了进一步限定这一点,预期DB不会改变我最初开发它的内容。

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

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

什么平台。NET3.5引入了LinqToSQL,这可能使其成为一个没有实际意义的观点。您可以使用策略模式根据任务类型选择/构建适当的查询,然后让LINQ为您转换为SQL。这样,您可以在代码中构建查询,但仍然可以在数据库中实际执行查询。

什么平台。NET3.5引入了LinqToSQL,这可能使其成为一个没有实际意义的观点。您可以使用策略模式根据任务类型选择/构建适当的查询,然后让LINQ为您转换为SQL。这样,您可以在代码中构建查询,但仍然可以在数据库中实际执行查询