1、Fact设置
- String[] names = new String[] { "Fred", "Joe", "Bob", "Tom" };
- String[] colors = new String[] { "red", "blue", "plaid", "orange" };
- int[] positions = new int[] { 1, 2, 3, 4 };
-
- for ( int n = 0; n < names.length; n++ ) {
- for ( int c = 0; c < colors.length; c++ ) {
- for ( int p = 0; p < positions.length; p++ ) {
- session.insert( new Golfer( names[n], colors[c], positions[p]) );
- }
- }
- }
2、Golfer对象
- public class Golfer {
- private String name;
- private String color;
- private int position;
-
- public Golfer() {
-
- }
-
- public Golfer(String name,
- String color,
- int position) {
- super();
- this.name = name;
- this.color = color;
- this.position = position;
- }
-
-
-
- public String getColor() {
- return this.color;
- }
-
-
-
- public String getName() {
- return this.name;
- }
-
-
-
-
- public int getPosition() {
- return this.position;
- }
-
- }
3、规则
- rule "find solution"
- when
- # 规则:高尔夫球员Fred,目前不知道他的位置和衣服颜色
- Golfer( $fredsName : name == "Fred",
- $fredsPosition : position,
- $fredsColor : color )
-
- # 规则:Fred的右边球员穿蓝色的衣服
- # 潜在规则:该球员的衣服颜色和Fred不一样,名字不是Fred
- Golfer( $unknownsName : name != "Fred",
- $unknownsPosition : position == ( $fredsPosition + 1 ),
- $unknownsColor : color == "blue",
- color != $fredsColor )
-
- # Joe排在第2个位置
- # 潜在规则:Joe的位置不是Fred的位置,Joe的衣服颜色不是Fred的颜色
- Golfer( $joesName : name == "Joe",
- $joesPosition : position == 2,
- position != $fredsPosition,
- $joesColor : color != $fredsColor )
-
- # Bob穿着格子短裤
- # 潜在规则:Bob的名字与穿蓝衣服的球员名字不同,Bob的位置和Fred,Joe,以及蓝衣球员的位置都不同
- # Bob的颜色也于之前三个球员不同
- Golfer( $bobsName : name == "Bob",
- name != $unknownsName,
- $bobsPosition : position != $fredsPosition,
- position != $unknownsPosition,
- position != $joesPosition,
- $bobsColor : color == "plaid",
- color != $fredsColor,
- color != $joesColor,
- color != $unknownsColor )
-
- # Tom没有排在第1位或第4位,也没有穿橙色衣服
- # 潜在规则:Tom的位置与Fred,Joe,Bob的位置不同;Tom的衣服颜色不是橙色和蓝色,并于另外三人不同
- Golfer( $tomsName : name == "Tom",
- $tomsPosition : position != 1,
- position != 4,
- position != $fredsPosition,
- position != $joesPosition,
- position != $bobsPosition,
- $tomsColor : color != "orange",
- color != "blue",
- color != $fredsColor,
- color != $joesColor,
- color != $bobsColor )
- then
- System.out.println( "Fred " + $fredsPosition + " " + $fredsColor );
- System.out.println( "Joe " + $joesPosition + " " + $joesColor );
- System.out.println( "Bob " + $bobsPosition + " " + $bobsColor );
- System.out.println( "Tom " + $tomsPosition + " " + $tomsColor );
- end
注:按照上面的方法会得到两个相同的结果,也就是规则被成功匹配两次,但结果相同。为何产生这个问题我暂时还没有想清楚,如果有谁了解问题的原因,请留言指点,谢谢!
分享到:
相关推荐
Drools4 Demo 实例 Drools4示例 Drools4例子
drools-示例:Drools:规则引擎
NULL 博文链接:https://wu1g119.iteye.com/blog/2287940
Drools入门-环境搭建,分析及示例
使用Java开源框架Drools实现的一个示例 可以直接运行
drools学习的各个知识点的小示例,与springboot的整合项目,动态从库中加载规则的项目
drools drools drools drools drools
不关闭服务,修改规则文件条件,使得原来不能通过的条件通过,实现规则的动态加载。
drools7.5.0和spring 4.3.12集成示例,替换了最新的包,借鉴了csdn另外一个网友的代码,再次基础上做了调整。主要调整了pom.xml,升级了版本
Drools规则引擎是一种嵌套在应用程序中的组件, 是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。 它实现了将业务规则从程序代码忠分离出来,规则引擎使用特定的语法编写业务规则,规则引擎...
很不错的drools6学习的例子 里面有入门的实例及一些语法的例子。
你好Drools 示例项目
Drools是一个Java语言版本的基于Charles Forgy's Rete算法研究的规则引擎实现。结合Rete到一个面向对象接口中,允许业务对象处理业务表达式。Drools由Java语言开发,但是可以运行在Java环境和.NET环境下。 Drools被...
Drools4 insurance例子 j2ee环境!用jboss会更好
储存库初始化内容 您的项目描述在这里。
流口水示例Drools 规则引擎示例。
使用Drools5.1 规则引擎做的一个关于规则流的小示例,含规则流的rf 和 Xml 格式文件,以及一个自动生成顺序规则流的方法。 在 eclipse indigo 上运行通过。
这个是本人在研究drools flow总结的报告,希望对大家有帮助
drools
JPA+DROOLS4整合的例子,JPA+DROOLS4整合的例子,