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();
}
}
执行结果: