我即将潜入一个面向规则的项目(使用ILOGs .NET规则 - 现在是IBM).我已经阅读了几个关于如何设置规则处理以及如何与规则引擎交互的不同观点.
我看到的两个主要想法是将规则引擎集中(进入自己的服务器场),并通过Web服务API(或通过WCF在ILOG的情况下)对服务器场进行编程.另一方面是在每个应用服务器上运行规则引擎的实例,并在本地与其进行交互,每个实例都有自己的规则副本.
集中化的优势在于易于将规则部署到集中位置.规则按需要扩展,而不是每次扩展应用程序服务器配置时进行扩展.这减少了购买许可证的浪费.此设置的缺点是进行服务调用,网络延迟等的额外开销.
本地运行规则引擎的上行/下行与集中配置的上行/下行完全相反.没有慢速服务调用(快速API调用),没有网络问题,每个应用服务器都依赖于它自己.管理规则的部署变得更加复杂.每次向应用云添加节点时,您都需要更多的规则引擎许可证.
在阅读白皮书时,我发现亚马逊正在为每个应用服务器配置运行规则引擎.他们似乎对规则进行了缓慢的部署,并认识到规则发布中的滞后是"可接受的",即使业务逻辑在给定的时间段内不同步.
问题:根据您的经验,开始将规则集成到基于.net的Web应用程序中的最佳方法是什么?这个商店还没有花费太多时间在规则驱动的世界中工作?
我正在开始一个Drools和Drools Guvnor的项目.
我的规则部署在drools guvnor中.当您执行包发布构建和发布时,我的规则引擎实例可以通过drools Guvnor公开的pkg文件访问这些规则.
这一切都运行正常,我正在寻找的是一种在运行时禁用规则的解决方案.
我现在唯一的解决方案是转到guvnor,归档规则并对包含该规则的包进行构建+发布.
是不是有另一种策略?
我们正在设计一个项目,该项目将听取机场管制员和飞行员之间的对话以防止跑道入侵(例如,一架飞机正在起飞而其他飞机正在越过跑道).我们的教授希望我们使用Jena作为知识库(或其他任何东西,但它应该是某种基于规则的引擎).推理不是耶拿的主要内容,并没有太多的文档和示例.因此,我们需要一个引擎,它可以从飞行员那里得到消息作为输入和输出可能的入侵风险或消息协议中的任何其他错误.编写规则应该很容易,并且应该很容易为引擎提供实时数据.
我想像这样:
那么Jena,或prolog或任何其他适合此规则的引擎?我的意思是它是合适的,但我们真的需要使用它吗?我问教授.如果我们可以保持跑道的状态并根据我们收到的消息使用一些简单的检查,他说它不可扩展,我们需要知识库.有人可以给我任何关于该系统使用方法的建议吗?如果你推荐kb,那我们应该使用哪一个?该项目是用java编写的.
谢谢.
我有一组带有属性和一系列规则的对象,当应用于对象集时,它们提供了这些对象的子集.为了使这更容易理解,我将提供一个具体的例子.
我的对象是人,每个人都有三个属性:原籍国,性别和年龄组(所有属性都是离散的).我有一堆规则,比如"来自美国的所有男性",它们与这组较大的对象的子集相对应.
我正在寻找现有的Java"推理引擎"或类似的东西,它将能够从规则映射到一部分人,或者建议如何创建我自己的.我已阅读过规则引擎,但该术语似乎专门用于外部化业务规则的专家系统,通常不包括任何高级形式的推理.以下是我必须处理的更复杂场景的一些示例:
我需要规则的结合.因此,当提出"包括所有男性"和"排除10-20岁年龄组中的所有美国人"时,我只对美国以外的男性以及美国境内10岁以外的男性感兴趣 - 20岁年龄组.
规则可能有不同的优先级(明确定义).因此,"排除所有男性"的规则将覆盖"包括所有美国男性"的规则.
规则可能存在冲突.因此,我可以同时拥有"包括所有男性"和"排除所有男性",在这种情况下,优先级必须解决问题.
规则是对称的.所以"包括所有男性"相当于"排除所有女性".
规则(或更确切地说子集)可以具有与它们相关联的元规则(明确定义).必须在应用原始规则的任何情况下应用这些元规则,或者如果通过推理到达子集,则必须应用这些元规则.因此,如果"排除美国"的元规则附加到"包括所有男性"的规则,并且我向引擎提供"排除所有女性"的规则,那么它应该能够推断"排除所有女性"子集相当于"包括所有男性"子集,因此另外应用"排除美国"规则.
我很可能没有项目5,但我确实需要提到的所有其他属性.我的规则和对象都存储在数据库中,并且可以在任何阶段更新,因此我需要在需要时实例化"推理引擎"并在之后销毁它.
这就是我想做的事情.
我想把"规则"放在数据库表中.这有点像drools xls决策表格式,除了所有规则都是表格中的行.这样我就可以轻松修改规则.我需要把它放在一个表而不是xls中,因为我的规则可能经常变化.这可能与流口水有关吗?我是否可以使用从DB(而不是DRL或xls文件)检索的规则构建知识库,并且每次规则更改都可以从头开始重建知识库(或者可能只是知识库的一部分,实际上只更新那些已更改的规则..)
我想在我的Rails 3.2应用程序上实现Rule Engine,它具有复杂的定价逻辑,我想将定价逻辑中的条件转换为规则,并使用它们.我正在为此创建一个全新的应用程序.
我在这方面搜索了很多,发现了rule_engine,ruleby,treetop,但是他们提供的文档不仅仅是足够的,我在决定最适合我的要求时遇到了很多困难.
在规则引擎上开始开发的最佳方法是什么?
我正在构建一个应用程序,它具有在配置 yaml 文件中嵌入表达式/规则的功能。因此,例如用户可以引用在 yaml 文件中定义的变量,如${variables.name == 'John'}或${is_equal(variables.name, 'John')}。我可能可以使用简单的表达式,但我想支持复杂的规则/表达式,例如${variables.name == 'John'} and (${variables.age > 18} OR ${variables.adult == true})
我正在寻找一个解析/dsl/rules-engine 库,它可以支持这些类型的表达式并对其进行规范化。如果有人知道该语言的库,我会使用 ruby、javascript、java 或 python 打开。
我想到的一种选择是只支持 javascript 作为条件/规则,并基本上通过 eval 使用正确的上下文设置来访问变量和其他可引用的变量。
我正在寻找一个C或Python的规则引擎,但如果你知道用另一种语言实现的规则引擎,我会很高兴知道它.
引擎将用作自动化房屋的方式,例如当有人离开房间时关灯.所以那里没有"办公室"规则(也就是你在Excel中规则等).
我已经研究过Java中的Jess和Drools并且做得很好.我想知道其他人,并且可能使用比Java更少的内存.我在Python中听说过RuleCore,但实际上找不到任何文档(SourceForge上的版本1.0可用,但看起来它们正在销售v.2.0).
编辑:通过规则引擎(推理引擎),我的意思是RETE或等效的实现.
我正在研究AI相关的应用程序.对于这个应用程序,我需要一个规则引擎.Jess是一个完全用Java编写的好的规则引擎.但是对于我的应用程序,由于许可限制,我无法使用它.
有人能告诉我一个用Java编写的开源规则引擎吗?
我期待在nodejs中创建nools规则.我是nools规则引擎的新手.我正在尝试写一条规则,但我对nools一无所知.我研究过整个文档,但这让我很困惑.所以,任何人都可以帮助我如何在服务器端创建nools规则以及如何将这些规则与客户端连接?