我正在处理的应用程序是各种各样的"配置器".它是用C#编写的,我甚至编写了一个规则引擎来配合它.这个想法是有一堆命题逻辑语句,用户可以进行选择.根据他们选择的内容,其他一些项目变得必需或完全不可用.
命题逻辑语句通常采用以下形式:
A => ~X
ABC => ~(X+Y)
A+B => Q
A(~(B+C)) => ~Q A <=> B
Run Code Online (Sandbox Code Playgroud)
符号:
=> -- Implication
<=> -- Material Equivalence
~ -- Not
+ -- Or
Two letters side-by-side -- And
Run Code Online (Sandbox Code Playgroud)
我对Prolog很新,但似乎它可以为我处理所有"规则处理",允许我摆脱目前的规则引擎(它可以工作,但它不是那么快或容易按照我的意愿保持).
此外,所有可用选项都属于层次结构.例如:
Outside
Color
Red
Blue
Green
Material
Wood
Metal
Run Code Online (Sandbox Code Playgroud)
如果暗示了第二级(特征,如颜色)的项目,则必须选择第三级的项目(选项,例如红色).同样,如果我们知道某个功能是假的,那么它下面的所有选项也都是假的.
问题在于每个产品都有自己的一套规则.设置包含这些运算符作为谓词的知识库是一种合理的方法,然后在运行时开始构建产品的所有规则吗?
我想象它可能会起作用的方式是建立组件,功能和选项的想法.然后设置then之间的关系(例如,如果该功能为false,则其所有选项均为false).在运行时,添加产品的特定规则.然后将所有用户的选择传递给一个函数,检索哪些项为真,哪些项为假.
我不知道我所要求的所有含义,因为我刚刚进入Prolog,但我正试图避免走上一条糟糕的道路,并在此过程中浪费大量时间.
一些问题可能有助于针对我想要找到的内容:
提前感谢您的建议!
我目前正在设计一个规则引擎可能有用的Java应用程序.我可以在哪里学习如何使用它们,它们如何工作,如何实现它们,看样品等等?
我想为我的游戏使用规则引擎.它将用于NPC AI和GM AI.
什么可能是一个好的和快速的规则引擎为此目的?它必须是Java和开源.
我想听听那些使用Java Rule Engines for Artificial Intelligence关于他们的经历的人们.
我们正在购买商业规则引擎.我们希望使我们的核心应用程序可以根据不同的需求定制到不同的客户.实际进行自定义的人是分析师.即技术熟练的非程序员(通常拥有科学学位).
评估业务规则引擎的标准是什么?有开源和商业吗?您在易用性,文档,支持,价格等方面有哪些经验?
我们的应用程序是Java.
在工作中,我们有优化引擎,这些引擎使用的输入之一是业务规则,我们使用专有规则编辑器创建和编辑.
这些规则属于我们自己的专有格式,因为现有的规则引擎无法表示我们所需的复杂性的业务规则.
无论如何,我们对规则引擎当前的工作方式或多或少感到满意- 它对复杂的业务规则非常有效,但对用户界面(规则编辑器)不满意.基本上,这当前包含一组表格,这些表格使用复杂的电子表格式表格GUI进行编辑.
虽然这是功能性的,但它是一个非常糟糕的界面,可以呈现给非开发人员而非等同于业务分析师的最终用户.在弄脏之前,我认为最好询问StackOverflow社区对特定于这种情况的用户界面设计的看法.
我分别使用术语规则引擎和规则编辑器.对于这个问题,我只关心规则编辑器
StackOverflow上有关规则引擎的其他问题,但规则编辑器和用户界面设计都没有:
使用junit测试drools规则的最佳做法是什么?
到目前为止,我们使用junit和dbunit来测试规则.我们有样本数据放到hsqldb.我们有几个规则包,到项目结束时,很难做出一个好的测试输入来测试某些规则而不是激发其他规则.
所以确切的问题是,如何将junit中的测试限制为一个或多个特定的测试规则?
感谢帮助,
Hubidubi
我目前正在使用c#编写.net应用程序,并希望检查一些规则,并根据规则的通过或失败,执行操作.所以我希望实现一个通用的解决方案,我可以重复使用,遵循良好的oop原则.这让我得出结论,我需要编写一个规则引擎.
我对c#有很好的了解,但这是我第一次需要编写规则引擎,作为我研究设计和开发的一部分,我正在寻找有关创建这种引擎的任何提示.什么会更好的是我可以看到的任何例子?任何c#/ .net规则引擎应用程序?典型的3层架构中应该采用哪种层?我快速浏览了codeplex和谷歌代码,但没有人跳出来对我!所以一些方向会很棒.
我刚刚开始使用Drools(版本5.1.0),所以请耐心等待这个问题已经得到解答.
我有一个java.util.List对象,其中包含复杂类型A的对象,其中A为:
class A {
String name;
String Value;}
Run Code Online (Sandbox Code Playgroud)
列表及其元素位于Drools引擎的工作内存中.只有当列表中元素的名称和值与特定值匹配时,是否有一种简单的方法可以触发规则?
目前,我在Drools规则中使用了一个自定义函数,它遍历列表并返回true,如果有一个符合规范的元素,但我不知道这是否是最有效和最简单的用法.
Drools和Jrules之间有区别吗?Jboss和Jrules的统治是一样的吗?什么类型的环境通常使用Drools?
我想知道如何使用drools运行时在Java应用程序中使用Drools Workbench的指导决策表.我们的想法是,用户可以在工作台中定义规则,流程和一些决策表,这些表将由drools运行时获取.
仍然,出于某种原因,我无法弄清楚如何在drools中执行此操作,因为它将表存储为gdst文件,并且它似乎无法编译为drools.
使用drools,有没有办法: - 执行gdst文件,就像我使用excel决策表一样? - 或者在规则中编译gdst文件?
我一直在寻找解决方案,但找不到具体的例子......:/
rule-engine ×10
java ×5
drools ×4
jboss-rules ×2
asp.net ×1
c# ×1
compilation ×1
drools-flow ×1
enterprise ×1
inference ×1
jboss ×1
jrules ×1
junit ×1
logic ×1
prolog ×1
rules ×1