0

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

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

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

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

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

那么大家会推荐什么呢?有没有我没有想到的第三种选择?

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

4

2 回答 2

3

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

于 2008-09-25T19:49:30.390 回答
0

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

于 2008-09-25T19:52:36.527 回答