アジェンダグループがどのように機能するかのサンプルを試しました。最初は、ksessionの焦点をagenda-group "ag1"に設定し、ルールを実行しました。ドループのアジェンダグループを理解する
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
これは私が得た出力です。
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
...
...
「GoodBye 2」までの出力の最初の5行を理解できました。しかし、焦点が「ag2」に設定されているので、どのようにして「ag1」アジェンダグループの「GoodBye」ルールに戻って再帰しましたか?
ありがとうございました。
この監査ログを有効にするにはどうすればよいですか? –
session.addEventListener(new DebugAgendaEventListener())を見てください – Topera