【问题标题】:Best place to Sort a List of Tasks对任务列表进行排序的最佳位置
【发布时间】:2010-09-13 05:27:37
【问题描述】:

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

任务层次结构是批处理 > 加载 > 装配 > 零件 > 任务。目前有 8 条规则可用于确定每种员工类型应首先处理的任务。这些规则适用于零件的大小,以及零件完成将如何影响层次结构,例如,如果 A 部分完成,那么它会完成整个批次,而 B 部分不会,因为在其批次中还有其他部分要完成。

无论如何,这就是系统如何工作的电梯音调。我想弄清楚的是一种高效、快速且可维护的方法,考虑到规则可能会改变并且可能会添加更多规则。

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

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

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

编辑[1] 只是为了进一步说明这一点,预计数据库不会改变我最初开发它的方式。

【问题讨论】:

    标签: oop data-structures sorting collections


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-08
        • 2017-09-09
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 1970-01-01
        • 2014-10-02
        • 2016-04-15
        相关资源
        最近更新 更多