2010-02-17 6 views
0

Notre équipe utilise les règles Drools pour les évaluations. Maintenant, nous prévoyons de migrer vers des tables de décision à la place.Comment récupérer des objets faits à partir de tables de décision dans Drools 4.x

Dans la version Drool ruleflow, nous avions des fichiers DRL avec un composant de requête pour extraire les objets créés dans le contexte des fichiers DRL de la mémoire de travail.

Je suis coincé à faire la même chose dans la table de décision? Nous utilisons StatefulSession pour les règles de tir. En outre, ces faits sont insérés dans le RHS des règles; nous n'avons pas les FactHandles au moment de les licencier.

Le code utilisé pour démarrer le moteur de règle Drools est la suivante:

RuleBase ruleBase = RuleBaseFactory.newRuleBase(); 
StatefulSession session = ruleBase.newStatefulSession(); 
MyFacts nmrs = new MyFacts(); 
session.insert(nmrs); 
session.fireAllRules(); 

Le fichier Drools utilisé pour récupérer la requête se présente comme suit:

query "resultQuery" 
    response : Outcome() 
end 

Merci

Répondre

0

Il n'y a pas directe Prise en charge des requêtes dans les tables de décision XLS pour le moment. Cependant, les tables de décision se compilent elles-mêmes en drl - il est donc possible d'ajouter par programme des requêtes après le fait à drl (peut-être dans un fichier DRL séparé).

Vous pouvez également obtenir une collection de toutes les poignées de fait et (laid) itérer la recherche de résultats instanceof, etc ...

+0

Lorsque je tente d'ajouter requête comme addPackageFromDRL dans le constructeur de paquet avec StringReader (queryString), il échoue pour une raison quelconque. Je dois faire un hack laid de préfixe au dernier fichier de règles – Maddy

Questions connexes