我在努力构建一个基于规则的系统,用于解释数据。然而,我具有的问题决定的一种方式建造的逻辑,用于储存和解释规则。

目前,有一个数据库结构,该结构相当复杂,但会处理的所有方面的储存的规则的数据。这个想法是,该系统将能够模仿的方式MS Outlook允许用户增加的规则。

我的问题如下:

  1. 什么图案我应该用于储存这些规则内部的对象?
  2. 我应该使用eval()或适当的对象的取向执行规则?

例和规则可以是:

必须有 领区 公园

其中每个元素(狗,必须具有领,在区域、公园)是一个独立的逻辑来进行解释。

任何一般性意见对上述问题是非常感谢!

有帮助吗?

解决方案

我从来没有实施一个系统的喜欢你描述的在"现实世界"方面,但我已经打了他们相当数量作为业余爱好项目。我的首选办法是使用某种语言的逻辑就像 序言 做出的断言和行检查。你就会有主张在该公园是,这意味着什么有什么,什么,一只狗,然后你会成为一项规则几乎完全像你的例括号内的底部的员额。我很抱歉我的序言是太锈给你一个有用的例子...我一直在玩家的增长推断的语言太长。

还有序言口译人员可用于嵌入在大多数语言,虽然我不确定关于PHP5.你可以扔在一起简单的东西,不 向前链的推断 在规则的数据结构你自己创造在相当短了,如果你不能找到一个序言的翻译。你可能有兴趣在这些 注意到 上自动推理。

其他提示

也许这回答太琐碎/显而易见你,但我只是想在我会怎样解决这样的事情在我的前的现有项目,该项目是一个Zend框架的应用程序。我想到的过滤器和validatorChains苏的用途。我假定你有一个finit数量的可能输入的对象,finit些条件/限制和finit数量的行动。在这种情况下你会第一个实例对象,并运行它对一个链条件(验证),如果所有条件都满足你跑的对象对actionChain.在这里我可能会有实施某种行动优先的系统,因为有些行动必须进行之前,其他人。像'发送通知",然后"删除'的对象的问题。因此,在埃孚我将建立一个自定义的验证程序,为每一个条件/限制。我不相信Outlook系统是非常聪明的意思,我不认为验证程序是非常普通的。

在该数据库有可能是一个表的实际规则,一个针对的条件和一个行动。然后可能有两个"多对多"的表格链接的规则与所有需要的条件和行动。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top