代码之家  ›  专栏  ›  技术社区  ›  Vaibhav

只有一个触发的规则无法找出为什么没有执行drl文件中声明的所有规则

  •  -1
  • Vaibhav  · 技术社区  · 6 年前

    我不太会流口水。我使用了drool 7。这是我写在drl文件中的规则。

    rule "initListFact" dialect "java" when     not List() then     insert( new ArrayList() ); end 
    

    rule "TermAndConditionRequest_0_NOTNULL" when obj : TermAndConditionRequest(candidateId == null); result:ConstraintValidationResult(); 在java中,我创建了kieSession对象,然后插入class对象并触发规则:-

    kieSession.insert(classObject);
        kieSession.insert(constraintValidationResult);
        List error = new ArrayList<String>();
        kieSession.setGlobal("errorList", error);
        kieSession.addEventListener(new DroolEventListener());
        int i = kieSession.fireAllRules();
    

    我想执行我在中声明的所有规则。drl文件,但仅执行“initListFact”规则。请帮我解决这个问题。

    1 回复  |  直到 6 年前
        1
  •  -1
  •   Vaibhav    6 年前

    我已经找到了为什么它不适用于spring boot的解决方案,并且由于Drools不适用于spring boot开发工具,因此不会触发任何规则。

    如果你加入pom。在以下情况下,Drools不会触发任何规则。

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>
    

    如果您对此进行注释,那么规则将在Drools中正确触发。

    请点击链接了解更多信息: https://issues.jboss.org/browse/DROOLS-1540

    谢谢