2009-11-30 5 views
2

Comment définir un global dans Drools 4 à partir d'une règle? Je veux définir un booléen si une règle se déclenche afin qu'elle puisse le lire à partir d'une autre règle avec une saillance inférieure.Définition des globales dans Drools

Répondre

1

En supposant que vous utilisez 5.x Drools, vous pouvez le faire dans votre conséquence de la règle.

kcontext.getKnowledgeRuntime() setGlobal (nom, valeur);

+0

Désolé j'ai oublié de mentionner c'est Drools 4 – Tarski

0

Vous pourriez être en mesure de faire quelque chose comme:.

drools.getWorkingMemory() setGlobal ... (similaire ci-dessus, ce kris dit).

0

Je n'utiliserais pas de global ici. Vous déduisez un nouveau fait à partir d'autres faits, vous pouvez simplement «insérer» le nouveau fait et faire en sorte que l'autre règle s'enflamme.

rule "some rule" 
when 
    //… 
then 
    insert(new MyNewFact()) 
end 

Il n'y a aucune garantie que Drools réévaluera vos règles en réponse à l'insertion d'un (nouveau) global et votre autre règle pourrait ne pas tirer. Il sera cependant réévalué en réponse aux faits qui sont insérés (ou retirés ou modifiés).