1.salience
说明:指定规则的顺序,默认为0
demo:
package u51.test.student;
import u51.test.student.Student;
rule "student"
salience -1
no-loop
when
s:Student()
then
System.out.println("0.0.1");
end
rule "student-1"
salience 1
no-loop
when
s:Student()
then
System.out.println("0.0.2");
end
结果:会先输出0.0.1,在输出0.0.2
2.agenda-group
说明:议程组,可以为规则指定议程组,然后指定议程组的先后执行顺序
demo
规则文件:
package u51.test.person;
import u51.test.person.Person;
rule "test"
agenda-group "test"
no-loop
when
p : Person()
then
System.out.println("1.0.1");
end
rule "test-1"
agenda-group "test-1"
no-loop
when
p : Person()
then
System.out.println("1.0.2");
end
AgendaTest.java
/** * caicongyang.com Inc. * Copyright (c) 2004-2016 All Rights Reserved. */ package com.caicongyang.drools.drools; import org.kie.api.KieServices; import org.kie.api.runtime.KieContainer; import org.kie.api.runtime.KieSession; import org.kie.api.runtime.rule.Agenda; import u51.test.person.Person; /** * Agenda group test case:优先执行的规则 * @author caicongyang1 * @version id: Test, v 0.1 16/10/18 上午11:41 caicongyang1 Exp $$ */ public class AgendaTest { static KieSession getSession() { KieServices ks = KieServices.Factory.get(); KieContainer kc = ks.getKieClasspathContainer(); return kc.newKieSession("personKiesession"); } public static void main(String[] args) { KieSession kSession = getSession(); Agenda agenda = kSession.getAgenda(); agenda.getAgendaGroup("test").setFocus(); agenda.getAgendaGroup("test-1").setFocus(); Person fact = new Person(); kSession.insert(fact); kSession.fireAllRules(); kSession.dispose(); } }
执行结果: