1

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

4

2 回答 2

5

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

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

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

我在这里假设您了解理论并自己构建引擎。alphazero 提出了使用现有规则引擎库的重要建议,这是明智的——这是一种从学术理论中受益的学科。

于 2009-04-30T12:35:13.223 回答
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/

--

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

于 2009-04-30T12:34:59.837 回答