基于规则的数据库引擎

时间:2009-04-30 12:21:03

标签: rule-engine

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

2 个答案:

答案 0 :(得分:5)

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

  1. 写出一系列用例 - 可能有人试图使用该系统完成什么?
  2. 决定您的规则可以作为输入的内容,以及作为输出的内容
  3. 将用例中的规则描述为一系列数据,从而确定您的规则格式。根据需要展开2。
  4. 创建基本规则执行程序,并测试它将获取规则数据并正确处理
  5. 扩展上述内容以处理具有不同优先级的多个规则
  6. 学习足够的规则引擎理论和图论来理解基于规则的常见问题 - 循环性,冲突规则等 - 以及如何使用(节点)图来查找它们的案例
  7. 编写一个管理层次结构,该层次结构能够管理规则集并根据上述可能的问题做出决策。这部分很重要,因为它可以防止规则创建者的愚蠢行为导致整个系统运行时失败。
  8. 利润!
  9. 从广义上讲,规则引擎是管理复杂性的一种练习。如果您不管理它,您可以轻松地结束彼此级联的规则,从而导致循环循环,竞争条件和其他问题。这些意外构建起来非常容易:考虑一个电子邮件程序,如果它包含魔术单词'beta',则告诉你将邮件从文件夹A移动到B,如果它包含单词'alpha',则从B移动到A.包含两者的电子邮件将被往返传送,直到出现问题,从而阻止处理所有其他规则。

    我假设你想要了解理论并自己构建引擎。 alphazero raises the important suggestion使用现有的规则引擎库,这是明智的 - 这是受益于学术理论的主题。

答案 1 :(得分:1)

我自己没有尝试过,但一个明显的方法是在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/

-

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