代码之家  ›  专栏  ›  技术社区  ›  Zaffiro

web应用程序中的动态业务规则

  •  8
  • Zaffiro  · 技术社区  · 16 年前

    问候语!

    在基于网络的项目中,业务规则和逻辑需要由客户定制。我想这样做,而不必每次在系统上注册新客户端时都重新编译应用程序。到目前为止,我概述的架构是:

    1. 真正的业务规则引擎
    2. 实现类似IOC容器的结构图。[zaff:添加6/4]

    你曾经实施过类似的事情吗?如果是这样,你的经验是什么?最后,我是否应该探索另一种解决方案?

    6 回复  |  直到 16 年前
        1
  •  2
  •   duffymo    16 年前

    我已经实施了你提到的大部分方法。答案可能取决于多种因素。

    哪些客户角色将对业务规则进行更改(例如业务分析师、开发人员、高级用户等)?对业务分析师的有意义的支持可能需要一个在数据库中具有外部化规则的规则引擎和一个可用的UI。对开发人员的有意义的支持可能就像利用MEF这样的东西一样简单( http://www.codeplex.com/MEF ).

    您还可以考虑业务规则需要更改的频率以及可能适用的相关操作要求(例如,主机进程必须保持运行,应用程序域卸载正常等)。一个好的选择可能需要仔细考虑未来可能的需求和不太可能的需求。

        2
  •  2
  •   Jason Weber    16 年前

    您可以执行数据驱动的业务规则,例如 this

    您还可以考虑将面向方面的编程作为实现业务规则的一种方式。

    我对Rete感应规则引擎的唯一警告是,规则集应该保持较小,并靠近使用它们的对象。如果你能将对象的行为封装在作为其状态一部分的规则引擎中,那就更好了。我不喜欢将数千条规则转储到单个规则引擎中的“企业”解决方案,该引擎成为企业每个部分的依赖项。

        3
  •  1
  •   Andy White    16 年前

    我们基本上是在数据库或配置文件中配置客户端,对于每个客户端,都有一个查找表,其中存储了一个类名,用于执行任何业务操作。当代码收到客户端a的请求时,它会查找要使用的类,并通过反射创建和执行它。

        4
  •  1
  •   Tom Debevoise Tom Debevoise    16 年前

    我建议1和3的组合。

    Visual Rules 。让您的业务分析师或支持人员进行更改也有很多好处,而无需调整代码。

    此外,这些要求都不需要复杂的人工智能工具,如RETE和推理——顺序逻辑是最好的。

        5
  •  0
  •   Michael Kniskern    16 年前
        6
  •  0
  •   JP Alioto    16 年前

    K2 此外, BizTalk 支持BRE。