У меня есть несколько пакетов для правил, каждый пакет содержит разные правила, и я добавил все правила пакетов в файл kmodule.xml, и как только я запустил один из моих bpmns (каждый пакет правил имеет разный bpmn и ruleflow-grouo), все правила запускаются даже в разных пакетах и в другой группе правил. Я хочу создать несколько Kiebase, каждый из которых содержит соответствующие drl-файлы (также создавая kmodule программно и динамически, а не записывая их в папку meta-inf), и как только я решаю, какой из них мне нужен, я добавлю kiebase на сеанс и запустить правильный bpmn. Как я могу это реализовать?Создание множественной KieBase и создание программно-программно в drools
0
A
ответ
0
Посмотрите на this other question. Там вы можете найти 2 способа программного создания KieBases в Java.
Надеется, что это помогает,
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.
Мой drl не работает таким образом (без исключения). Вы знаете, как я могу создать kmodule.xml динамически во время выполнения и без использования по умолчанию, помещенного в папку META-INF? – arielb