gpt4 book ai didi

drools - Drool 无法正确对数字进行排序

转载 作者:行者123 更新时间:2023-12-02 06:31:41 29 4
gpt4 key购买 nike

我是 Drools 的新手,正在尝试让示例程序正常工作。drools 文档 http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/index.html#d0e9542 中给出了此示例。这个流口水的规则预计可以对整数进行排序。我刚刚更改了示例中给出的数字,但它们没有按预期排序。尝试使用drools版本5.5.0、5.5.1和master 6.0.0,但得到了相同的错误结果。

主要代码如下:

    package com.sample;    public class Example2 {      public static void main(String[] args) throws Exception {        Number[] numbers = new Number[] { wrap(5), wrap(6), wrap(4), wrap(1), wrap(2) };        new RuleRunner().runRules(new String[] { "Example3.drl" }, numbers);      }      private static Integer wrap(int i) {        return new Integer(i);      }    }

RuleRunner 类与示例中给出的相同,我认为我不应该在这里给出它,因为它会使问题变得困惑。它只是创建知识库、有状态 session ,插入上面“numbers”数组中给定的事实,然后在 session 上调用 fireAllRules 方法。

规则文件(Example3.drl)是:


规则“规则 04”
方言“mvel”

$数字:数字()
不是 Number(intValue < $number.intValue)
那么
System.out.println("找到的数字,值为:"+ $number.intValue());
撤回($number);
结束

我得到的输出如下:

Loading file: Example3.drlInserting fact: 5Inserting fact: 6Inserting fact: 4Inserting fact: 1Inserting fact: 2Number found with value: 1Number found with value: 4Number found with value: 2Number found with value: 5Number found with value: 6

不是正确的预期升序排序顺序。

我可能做错了什么?我无法想象 drools 规则引擎会在这个基础级别上被破坏。

最佳答案

这似乎是 5.5.0 以后引入的错误,并且仍然存在。
此排序代码适用于 5.4.0。

解决方法:


而不是:
  “not Number(intValue < $number.intValue)”
如果您使用:
  “not Number(intValue() < $number.intValue) )"
然后就可以了。



未告知其是函数的非 getter 方法似乎会产生问题。

一个令人衰弱的问题,会降低评估阶段对产品的信心。

关于drools - Drool 无法正确对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14372663/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com