![]() |
1
2
您可以执行数据驱动的业务规则,如 this 您还可以考虑将面向方面编程作为实现业务规则的一种方式。 对于Rete归纳规则引擎,我唯一要注意的是,规则集应该保持较小,并靠近使用它们的对象。如果可以将对象的行为封装在作为其状态一部分的规则引擎中,那就更好了。我不喜欢“企业”解决方案,它将数千条规则转储到一个单例规则引擎中,从而成为企业每个部分的依赖项。 |
![]() |
2
2
我已经实施了你提到的大多数方法。答案可能取决于多种因素。 http://www.codeplex.com/MEF ). 您还可以考虑业务规则需要更改的频率以及可能应用的相关操作要求(例如,主机进程必须保持运行、应用程序域卸载正常等)。一个好的选择可能需要仔细考虑未来可能的需求与不可能的需求。 |
![]() |
3
1
这可能不是最好的方法,但我的公司已经在多个案例中实施了您的#2选项,并取得了成功。 我们基本上是在数据库或配置文件中配置客户机,对于每个客户机,都会有一个查找表,其中存储要调用的类名,以便执行任何业务操作。当代码收到客户机a的请求时,它会查找要使用的类,并通过反射创建并执行该类。 我不太喜欢把代码相关的东西放到数据库中,但它实际上可以正常工作,在这种情况下也不太复杂。 |
![]() |
4
1
我建议1和3的组合。 但是不要将工作流存储在数据库中,而是将其存储为决策树或规则流(我们称之为决策树或规则流)。 当您有一个可视的、动作驱动的工具(例如)时,更改工作流以适应特定的客户或将他们与他们的配置文件相关联是一项简单的任务 Visual Rules 此外,这些需求都不需要复杂的人工智能工具,如RETE和推断——顺序逻辑是最好的。 |
![]() |
5
0
我基于以下开源.NET业务规则引擎创建了一个动态规则引擎 NxBRE . 我使用流引擎作为动态规则引擎的主要示例。 我使用了你问题中提到的相同架构。 |