首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解使用agenda group锁定活动

了解使用agenda group锁定活动
EN

Stack Overflow用户
提问于 2017-12-15 15:25:58
回答 1查看 562关注 0票数 1

我尝试了一个示例,以了解lock-on-active是如何工作的。当我启动规则而不使用agenda group时,一切似乎都很正常。但是,当我取消注释下面代码中的agenda group并将焦点设置到组"Group B“时,没有触发任何规则。

规则

代码语言:javascript
复制
rule "Additional Rs.1 tax for books above Rs.10"

//agenda-group "Group B"
lock-on-active true
when 
    $o: Product(name=="Book",amount>10)
then
    System.out.print($o.getAmount()+"-->");

    modify ($o) {
        setAmount($o.getAmount()+1); 
    }

    System.out.println($o.getAmount());
end

rule "Additional Rs.2 tax for books above Rs.20"

//agenda-group "Group B"
lock-on-active true
when 
    $o: Product(name=="Book",amount>20)
then
    System.out.print($o.getAmount()+"-->");
    modify ($o) {
        setAmount($o.getAmount()+1); 
    }

    System.out.println($o.getAmount());
end

用于触发规则的代码

代码语言:javascript
复制
KieServices kieServices=KieServices.Factory.get();
KieContainer kieContainer=kieServices.getKieClasspathContainer();
KieSession kieSession=kieContainer.newKieSession("ksession-lockOnActive");

Product product=new Product();
product.setName("Book");
product.setAmount(11);

Product product2=new Product();
product2.setName("Book");
product2.setAmount(21);

kieSession.getAgenda().getAgendaGroup("Group B").setFocus();

kieSession.insert(product);
kieSession.insert(product2);
kieSession.fireAllRules();

不带议程组的输出

代码语言:javascript
复制
21-->22
11-->12
22-->23
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-18 21:10:36

我使用的是较旧版本的Drools ( 6.2.0最终版)。当我将其更改为7.4.1时。代码运行正常

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47827625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档