2015-04-22 3 views
0

Я ищу способ классифицировать правила в своих файлах drl и определять, какие категории/категории правил запускаются.Drools правила категоризации

Я вижу, что в документации Drools Guvnor есть что-то о категоризации http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/ch03.html#d0e228. Однако мне непонятно, являются ли это метаданные, поддерживаемые Guvnor, или если они являются частью выполнения файла drl/rules. Мне не удалось найти образец файла DRL с указанной в нем категорией. И способ определения категории/категорий правил, которые были уволены.

Я знаю группу активации, но это не совсем соответствует моей потребности, поскольку после того, как правило в группе активации запускается, другие правила в группе не оцениваются.

Благодаря

+0

Как вы разрабатываете свои правила? Дяденька? Редактор? – laune

+0

Я не использую Guvnor. Затмение/редактор – shikarishambu

ответ

1

Лучший способ классифицировать правила, чтобы сделать это с помощью метаданных. Запись метаданных добавляется к правилу:

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

Вы получаете доступ к метаданным с помощью правила, полученная из пакета или каких-либо событий:

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(") "); 
    } 
} 

Выход:

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

Был план разрешить Карты в качестве значения, чтобы вы могли использовать

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

Это не сработало в 5.5, и я никогда не пробовал это снова.

Смежные вопросы