【问题标题】:Rules Based Database Engine基于规则的数据库引擎
【发布时间】:2009-04-30 12:21:02
【问题描述】:

我想在 Oracle 中为 PeopleSoft 时间输入应用程序设计一个基于规则的数据库引擎。我该怎么做?

【问题讨论】:

    标签: rule-engine


    【解决方案1】:

    基于规则的系统需要几个关键组件: - 一组定义为数据的规则 - 一组统一的输入进行操作 - 规则执行者 - 主管层次结构

    1. 写出一系列用例 - 有人试图使用该系统完成什么?
    2. 决定您的规则可以将哪些内容作为输入,以及将哪些内容作为输出
    3. 将您的用例中的规则描述为一系列数据,从而确定您的规则格式。为此根据需要展开 2。
    4. 创建基本规则执行器,并测试它是否能正确获取规则数据并进行处理
    5. 扩展上述内容以处理具有不同优先级的多个规则
    6. 学习足够的规则引擎理论和图论来理解基于规则的常见问题 - 循环性、冲突规则等 - 以及如何使用(节点)图来查找它们的案例
    7. 编写一个能够管理规则集并根据上述可能问题做出决策的主管层次结构。这部分很重要,因为它可以防止规则创建者的愚蠢行为导致整个系统运行时失败。
    8. 利润!

    从广义上讲,规则引擎是一种管理复杂性的练习。如果您不管理它,您很容易以相互级联的规则结束,从而导致循环循环、竞争条件和其他问题。很容易意外地构造这些:考虑一个电子邮件程序,如果它包含神奇的单词“beta”,则将邮件从文件夹 A 移动到 B,如果它包含单词“alpha”,则从 B 移动到 A。包含两者的电子邮件将来回穿梭,直到出现问题,从而阻止处理所有其他规则。

    我在这里假设您想要了解理论并自己构建引擎。 alphazero raises the important suggestion 使用现有的规则引擎库,这是明智的 - 这是一种从学术理论中受益的学科。

    【讨论】:

      【解决方案2】:

      我自己没有尝试过,但一个明显的方法是在 Oracle 数据库中使用 Java 过程,并在该代码中使用 Java 规则引擎库。

      试试:

      http://www.oracle.com/technology/tech/java/jsp/index.html

      http://www.oracle.com/technology/tech/java/java_db/pdf/TWP_AppDev_Java_DB_Reduce_your_Costs_and%20_Extend_your_Database_10gR1_1113.PDF

      http://www.jboss.org/drools/

      http://www.jessrules.com/

      --

      基本上,您需要捕获数据事件(插入、更新、删除),将它们映射到规则空间的事件,然后应用规则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多