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

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

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

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

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

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

编辑[1]只是为了更多地证明这一点,数据库预计不会改变我最初开发的内容。

有帮助吗?

解决方案

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top