首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Outlook样式规则引擎

Outlook样式规则引擎
EN

Stack Overflow用户
提问于 2009-03-12 14:16:32
回答 2查看 1.4K关注 0票数 2

我正试图构建一个基于规则的数据解释系统。但是,我在决定如何构造存储和解释规则的逻辑方面存在问题。

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

我的问题如下:

  1. 我应该使用什么模式来将这些规则存储在对象中?
  2. 我应该使用eval()或正确的面向对象来执行规则吗?

例如,规则可能是:

必须在公园区有项圈

在每个元素(狗,必须有,项圈,在区域,公园)是一个独立的逻辑,以解释。

如对上述问题有任何一般性建议,敬请见谅!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-12 14:31:15

我从未在“现实世界”中实现过像你所描述的那样的系统,但我把它们当作业余爱好项目来玩。我喜欢的方法是使用某种逻辑语言(如Prolog )来进行断言并检查它们。你会断言公园在哪里,有什么东西,狗是什么,然后你会制定一条规则,就像你在帖子底部括号里的例子一样。很抱歉我的Prolog太生疏了,不能给你举个有用的例子.我玩本土的推理语言太久了。

在大多数语言中都有可嵌入的Prolog解释器,不过我不确定是否使用PHP5。如果找不到Prolog解释器,您可以在自己创建的规则数据结构上组合一些简单的正向链式推理。您可能对这些自动推理的备注感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2009-03-12 15:15:00

也许这个答案对您来说太琐碎/显而易见了,但是我只是在考虑如何在我现有的项目( Zend应用程序)中解决类似的问题。我想到的过滤器-和validatorChains ZF使用。我假设您有有限个可能的输入对象、一个条件/约束的有限数量和一个有限的操作数。在这种情况下,您首先实例化一个对象,然后根据一个条件链(验证器)运行它,如果满足所有条件,则您将针对actionChain运行该对象。在这里,我可能需要实施某种行动优先制度,因为有些行动必须先于其他行动。就像‘发送通知’,然后‘删除’有关的对象。因此,在ZF中,我将为每个条件/约束构建一个自定义验证器。我不相信Outlook系统非常智能,这意味着我不认为验证器是非常通用的。

在数据库中,可以有一个用于实际规则的表、一个用于条件的表和一个用于操作的表。然后可以有两个多到多的表,将规则与所有所需的条件和操作联系起来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/638801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档