java 如果我在Drools规则项目中有一个规则文件,当我收到请求时,我如何选择要应用的规则?

xmq68pz9  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(143)

如果我有一个.drl文件,使用以下规则:

package com.baeldung.drools.rules;

import com.baeldung.drools.model.Applicant;

global com.baeldung.drools.model.SuggestedRole suggestedRole;

dialect  "mvel"

rule "Suggest Manager Role"
    when
        Applicant(experienceInYears > 10)
        Applicant(currentSalary > 1000000 && currentSalary <= 
         2500000)
    then
        suggestedRole.setRole("Manager");
end

其调用方式如下

public SuggestedRole suggestARoleForApplicant(
    Applicant applicant,SuggestedRole suggestedRole){
    KieSession kieSession = kieContainer.newKieSession();
    kieSession.insert(applicant);
    kieSession.setGlobal("suggestedRole",suggestedRole);
    kieSession.fireAllRules();  //I don't want to execute all my rules I just want to execute specific rules
    // ...
}

如果我有多个规则,如何只执行规则文件(.drl)中规则列表中的1或2个特定规则?
我希望不要使用kieSession.fireAllRules()方法;但是,要执行规则列表中的某些规则,我应该执行一个或哪些步骤?

7eumitmz

7eumitmz1#

查看javadochttps://docs.drools.org/7.5.0.Final/kie-api-javadoc/org/kie/api/runtime/rule/StatefulRuleSession.html#fireAllRules-int-您可以使用kieSession.fireAllRules(1);来触发任意数量的规则,如果您只想匹配特定的规则,也可以将AgendaFilter agendaFilter传递给相同的方法。

相关问题