只有一个规则触发无法弄清楚为什么不执行在drl文件中声明的所有规则

时间:2018-04-08 12:27:05

标签: java drools

我是流口水的新手。我使用了流口水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对象,然后插入类对象并触发规则: -

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 个答案:

答案 0 :(得分:-1)

我找到了解决方案,为什么它不使用spring-boot,因为Drools不能与spring-boot-devtools一起使用,所以不会触发任何规则。

如果您在pom.xml中添加以下内容,则不会在Drools中触发任何规则。

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

如果您注释掉这个,那么规则将在Drools中正确触发。

请点击此链接了解详情:https://issues.jboss.org/browse/DROOLS-1540

由于