J'utilisais un moteur de règles propriétaire, et j'essaie maintenant d'utiliser Drools, je suis assez nouveau pour Drools. Avec le moteur de règles précédent, la règle a été déclenchée pour toutes les instances d'objet existant même s'il s'agissait d'un attribut d'un autre objet.Comment appliquer des règles à tous les attributs d'un objet dans la session?
J'ai un ensemble de règles qui sont appliquées à un type donné d'objet O. J'ajoute à ma session et à l'objet O 'ayant O comme attribut. Mais comme les règles ne sont pas appliquées à O ', elles ne seront pas appliquées à l'attribut O de O'.
Je vais illustrer cela par un exemple de mot HELLO:
J'ajouté à la bave de base Exemple la classe suivante:
public static class Email {
private Message message ;
public void setMessage(Message message) {
this.message = message;
}
public Message getMessage() {
return message;
}
}
Email est O » et un message est O.
Mon la session "fonctionne" comme suit:
...
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();
...
et j'ai un exemple de fichier de bave:
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
La règle est uniquement appliquée au message. Si je lance ma session comme elle est, aucune règle ne sera déclenchée. Pour avoir des règles tirées je dois ajouter la règle:
rule "email"
when
e : Email(message != null)
then
insert(e.getMessage());
end
Il fonctionne très bien, mais ma question est: est-il un moyen plus facile d'avoir la règle tiré sur chaque instance d'un objet même si elle est un attribut de un autre objet?
Merci beaucoup! Je vais essayer la première approche –
@RickyBobby Puis-je demander? Comment puis-je obtenir le '$ message' inséré dans le code java? – newbie
ou si possible obtenir l'objet inséré des règles à Java? – newbie