私はこのような単純なルールを持っています:
rule "First Rule" //You do not talk about Fight Club
when
MyInp(id=="1")
then
insert(new MyOut(true));
end
私が欲しいのは、作成された MyOut オブジェクトを Java クラスから取得することです。これを行う方法はありますか、またはグローバル変数を渡してルール内で更新する必要がありますか?
私はこのような単純なルールを持っています:
rule "First Rule" //You do not talk about Fight Club
when
MyInp(id=="1")
then
insert(new MyOut(true));
end
私が欲しいのは、作成された MyOut オブジェクトを Java クラスから取得することです。これを行う方法はありますか、またはグローバル変数を渡してルール内で更新する必要がありますか?
ステートレス セッションを使用すると、挿入したファクトを変更したり、更新したグローバルを登録したりできます。
ステートフル セッションがある場合は、さらにいくつかのオプションがあります。
ステートレス セッション中にワーキング メモリに存在していたものを調べる一般的な方法を探している場合は、
StatelessKnowledgeSession ksession =
kbase.newStatelessKnowledgeSession();
TrackingWorkingMemoryEventListener listener =
new TrackingWorkingMemoryEventListener();
ksession.addEventListener(listener);
List<Object> facts = new ArrayList<Object>();
facts.add(myRequestFact);
ksession.execute(facts);
List<ObjectInsertedEvent> insertions = listener.getInsertions();
デバッグや監査の目的には便利ですが、リクエストから実際の結果を取得する手段としてはお勧めしません。トラッキング WorkingMemoryEventListener のサンプル コード (私による) は、次の場所にあります。