Вызов из правила Drools на Java и вызов на запросJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вызов из правила Drools на Java и вызов на запрос

Сообщение Anonymous »

При переходе с версии 5.5.0.Final Drools на последнюю версию Drools 9.44.0.Final возникает загадочная ошибка.
У нас есть правило, которое вызывает метод Java, а затем этот метод вызывает запрос от Drools. В старой версии это работало нормально, но теперь в последних версиях не работает. Выполнение зависает.
Отладка, как будто текущее состояние повестки дня KieSessions было ЗАПУСКА, и вызов Query вызывает новый элемент в этой повестке дня, который блокируется навсегда и никогда не возвращается в код.< /p>
Пример кода:

Код: Выделить всё

////
// DROOLS
////
query javaToDrools
ves : Data()
end

rule "INSERT: New Item"
when
$data: MyData($id:id)
then
System.out.println("Insert Data: " + $id);
insert(new Data($data));
myJavaClass.droolsToJava();
end

Код: Выделить всё

////
// JAVA
////
public void droolsToJava() {
QueryResults results = session.getQueryResults("javaToDrools");
results.forEach(res -> {
res.toString();
});
session.fireUntilHalt();
}
Проблема здесь:

Код: Выделить всё

StatefulKnowledgeSessionImpl.getQueryResults
-> StatefulKnowledgeSessionImpl.internalGetQueryResult
-> StatefulKnowledgeSessionImpl.evalQuery
-> StatefulKnowledgeSessionImpl.addPropagation -> It adds the Propagation
Но тогда в методе evalQuery вызов ExecuteQuery.getResult() никогда не возвращает результат. Он зависает в бесконечном цикле.
Как будто я не могу вставить факт в KieSession и одновременно вызвать запрос...

Подробнее здесь: https://stackoverflow.com/questions/791 ... l-to-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»