使用Drools 7.21的when部分中的布尔值

时间:2019-05-23 19:30:39

标签: java drools

我正在尝试将Drools从5.2版迁移到7.21版。我将代码重建为KIE A​​PI,并且一切正常,但现在我在DRL文件中遇到了问题。在Drools文件的“ when”部分中,我需要使用语句“ finished!= true”。在v5.2中可以正常工作,但在v7.21中则不能...

我的代码:

rule"..."
  when
    element : Operation( person.id == $person.getId(), finished != true )
  then
    (...)
  end

我做了一些测试,结果很奇怪:

  • 完成了!= true ->它不起作用,并且所有带有“ finished == true”的对象也在结果中
  • 完成==假->如上
  • 完成->工作正常,结果中仅包含“ finished == true”的对象
  • 完成== true ->如上

我需要使用完成!= true 或类似的方法。我该如何解决?新的Drools版本是否有错误?

2 个答案:

答案 0 :(得分:0)

我找到了对我有用的解决方法。如果有人有更好的方法,请在这里分享。

    public void Test()
    {
        var options = new ChromeOptions();
        options.AddAdditionalCapability("zal:name", "TEST NAME", true);
        options.AcceptInsecureCertificates = true;
        options.AddArgument("--headless");
        options.AddArgument("--whitelisted-ips");
         options.AddArgument("--no-sandbox");
        options.AddArgument("--disable-extensions");
        options.AddAdditionalCapability("platform", "LINUX", true);

        driver = new RemoteWebDriver(new 
                           -Uri("http://localhost:4445/wd/hub"), options);
    }

        [Test(Author ="shiva")]
        public void SampleTest() { 

        string homepage = "https://stackoverflow.com";
        driver.Navigate().GoToUrl(homepage);

答案 1 :(得分:0)

只需在下面使用:

rule"..."
  when
    element : Operation( person.id == $person.getId(), finished)
  then
    (...)
  end

rule"..."
  when
    element : Operation( person.id == $person.getId(), !finished)
  then
    (...)
  end