Drools4:对Golfer示范的分析
Drools4:对Golfer示例的分析rule?find?solution??????when ??????????#?规则:高尔夫球员Fred,目前不知道
Drools4:对Golfer示例的分析
- 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???? ??
注:按照上面的方法会得到两个相同的结果,也就是规则被成功匹配两次,但结果相同。为何产生这个问题我暂时还没有想清楚,如果有谁了解问题的原因,请留言指点,谢谢!
?
1 楼 dong_ta 2008-06-23 对,确实是这样