如果我有一个.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()方法;但是,要执行规则列表中的某些规则,我应该执行一个或哪些步骤?
1条答案
按热度按时间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
传递给相同的方法。