2015-04-22 4 views
0

Je cherche un moyen de classer les règles dans mes fichiers drl et de déterminer quelle catégorie/catégories de règles ont tiré.Drools règles catégorisation

Je vois que la documentation de Drools Guvnor a quelque chose à propos de la catégorisation http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/ch03.html#d0e228. Cependant, il n'est pas clair pour moi s'il s'agit de métadonnées maintenues par Guvnor ou si cela fait partie de l'exécution du fichier drl/rules. Je n'ai pas été en mesure de trouver un exemple de fichier DRL avec la catégorie qui y est mentionnée. Et, un moyen de déterminer la catégorie/catégories de règles qui ont été virées.

Je suis conscient du groupe d'activation mais cela ne correspond pas tout à fait à mon besoin car une fois qu'une règle dans le groupe d'activation se déclenche, les autres règles du groupe ne sont pas évaluées.

Merci

+0

Comment créez-vous vos règles? Guvnor? Éditeur? – laune

+0

Je n'utilise pas Guvnor. Eclipse/éditeur – shikarishambu

Répondre

1

La meilleure façon de classer les règles est de le faire via des métadonnées. Une entrée de métadonnées est ajouté à la règle:

rule metademo 
    @meta2(123) 
    @meta3(foo ) 
    @meta4("foo") 
when...then...end 

Vous pouvez accéder aux métadonnées via une règle, obtenue à partir d'un colis ou d'un événement:

for(Rule rule: kPackage.getRules()){ 
    Map<String,Object> key2meta = rule.getMetaData(); 
    for(Map.Entry<String,Object> entry: key2meta.entrySet()){ 
     System.out.print(" @" + entry.getKey() + "("); 
     Object value = entry.getValue(); 
     System.out.print("[" + value.getClass().getSimpleName() + "] " 
          + value.toString()); 
     System.out.println(") "); 
    } 
} 

Sortie:

@meta2([Integer] 123) 
@meta4([String] foo) 
@meta3([String] foo) 

Il y avait un plan pour autoriser les cartes en tant que valeur afin que vous puissiez utiliser

@meta7(foo = "foo", bar = "bar") 

Cela n'a pas fonctionné dans 5.5, et je n'ai jamais essayé encore.