Intenté un ejemplo de muestra para ver cómo funciona el grupo agenda. Inicialmente establecí el foco de ksession en el grupo de agenda "ag1" y activaba las reglas.entendiendo agenda-group en drools
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
agenda-group "ag1"
when
m : Message(status == Message.HELLO, myMessage : message)
then
System.out.println("Hello World");
m.setMessage("Goodbye cruel world");
m.setStatus(Message.GOODBYE);
update(m);
end
rule "Hello World 2"
agenda-group "ag2"
when
m : Message(status == Message.HELLO, myMessage : message)
then
System.out.println("Hello World 2");
m.setMessage("Goodbye cruel world");
m.setStatus(Message.GOODBYE);
update(m);
end
rule "GoodBye"
agenda-group "ag1"
when
m : Message(status == Message.GOODBYE, myMessage : message)
then
System.out.println("GoodBye");
drools.setFocus("ag2");
System.out.println("comeon man");
m.setStatus(com.sample.DroolsTest.Message.HELLO);
update(m);
end
rule "GoodBye 2"
agenda-group "ag2"
when
Message(status == Message.GOODBYE, myMessage : message)
then
System.out.println("GoodBye 2");
end
Esta es la salida que obtuve.
Hello World
GoodBye
comeon man
Hello World 2
GoodBye 2
GoodBye
comeon man
Hello World 2
GoodBye 2
GoodBye
comeon man
Hello World 2
GoodBye 2
GoodBye
comeon man
Hello World 2
GoodBye 2
GoodBye
comeon man
Hello World 2
...
...
Pude entender las primeras 5 líneas de la salida hasta "GoodBye 2". Pero dado que el foco se configuró en "ag2", ¿cómo volvió a la regla "GoodBye" del grupo de agenda "ag1" y, por lo tanto, recursó?
Gracias.
¿Cómo activar este registro de auditoría? –
Eche un vistazo en session.addEventListener (nuevo DebugAgendaEventListener()) – Topera