私は独自のルールエンジンを使用していましたが、今はDroolsを使用しようとしています。私はDroolsにはかなり新しいです。セッション内のオブジェクトのすべての属性にルールを適用する方法はありますか?
以前のルールエンジンでは、他のオブジェクトの属性であっても、既存のオブジェクトのすべてのインスタンスに対してルールが実行されました。
私は与えられた種類のオブジェクトOに適用される一連の規則を持っています。私は自分のセッションに追加し、オブジェクトとしてOを属性として持つオブジェクトを追加します。しかし、ルールはO 'に適用されないので、Oの属性Oには適用されません。
私は、ハロー単語の例でこれを説明します:
を私は基本的なよだれ例に次のクラスを追加しました:
public static class Email {
private Message message ;
public void setMessage(Message message) {
this.message = message;
}
public Message getMessage() {
return message;
}
}
メールOである」とメッセージがO.
私ですセッションは次のように動作します。
...
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
Email email = new Email();
email.setMessage(message);
ksession.insert(email);
ksession.fireAllRules();
logger.close();
...
と私はサンプルの脱落ファイルを持っています:
rule "Hello World"
when
m : Message(status == Message.HELLO, myMessage : message)
then
System.out.println(myMessage);
m.setMessage("Goodbye cruel world");
m.setStatus(Message.GOODBYE);
update(m);
end
ルールはメッセージにのみ適用されます。
セッションを起動した場合、ルールは起動されません。
rule "email"
when
e : Email(message != null)
then
insert(e.getMessage());
end
それは正常に動作しますが、私の質問は次のとおりです:それはの属性だ場合でも、オブジェクトの各インスタンスに解雇ルールを持っている簡単な方法がある 持っているルールは、私は、ルールを追加する必要が解雇しました他のオブジェクト?
thx a lot!私は最初のアプローチを試みるよ –
@RickyBobby私は聞くことができますか? Javaコードに '$ message'を挿入するにはどうすればよいですか? – newbie
または可能であれば、ルールからJavaに挿入されたオブジェクトを取得しますか? – newbie