2016-09-12 6 views
0

У меня есть несколько пакетов для правил, каждый пакет содержит разные правила, и я добавил все правила пакетов в файл kmodule.xml, и как только я запустил один из моих bpmns (каждый пакет правил имеет разный bpmn и ruleflow-grouo), все правила запускаются даже в разных пакетах и ​​в другой группе правил. Я хочу создать несколько Kiebase, каждый из которых содержит соответствующие drl-файлы (также создавая kmodule программно и динамически, а не записывая их в папку meta-inf), и как только я решаю, какой из них мне нужен, я добавлю kiebase на сеанс и запустить правильный bpmn. Как я могу это реализовать?Создание множественной KieBase и создание программно-программно в drools

ответ

0

Посмотрите на this other question. Там вы можете найти 2 способа программного создания KieBases в Java.

Надеется, что это помогает,

+0

Мой drl не работает таким образом (без исключения). Вы знаете, как я могу создать kmodule.xml динамически во время выполнения и без использования по умолчанию, помещенного в папку META-INF? – arielb

0

Может быть, этот фрагмент может вдохновить вас, чтобы взломать его свой путь:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 

    String someRules = getRulesFromSomewhere(); // find your rules text here... 

    kbuilder.add(someRules, ResourceType.DRL); 


    if (kbuilder.hasErrors()) { 
     //in case of compiling errors 
     for (KnowledgeBuilderError error : kbuilder.getErrors()) { 
      LOG.error(error.toString()); 
     } 
    }else{ 

     kSession = kbuilder.newKnowledgeBase().newStatelessKieSession(); 

     //use your stateless ksession here! 
    } 

В моем случае эти «someRules» происходит от запроса к базе данных, которые получают все правила из одной таблицы в соответствии с определенными критериями. Вы можете легко использовать этот тип кода для создания нескольких kieSessions, основанных на разных наборах правил os.

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

  • Нет связанных вопросов^_^