0
我正在使用專有的規則引擎,現在我正在嘗試使用Drools,我對Drools很新。如何將規則應用於會話中對象的所有屬性?
使用先前的規則引擎,即使它們是其他對象的屬性,也會爲現有對象的所有實例觸發規則。
我有一套適用於給定類型的對象O的規則。我添加到我的會話和對象O'具有O作爲屬性。但是由於規則不適用於O',它們不會應用於O'的屬性O.
我將與一個HELLO字例子說明這一點:
我添加到基本流口水實施例下面的類:
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很多!我會嘗試第一種方法 –
@RickyBobby我可以問一下嗎?我怎樣才能獲得插入'$消息'的Java代碼? – newbie
或者如果可能的話從java中插入規則到對象? – newbie