2017-01-24 10 views
0

Прежде чем кто-нибудь уйдет с глубокого конца, об этом было освещено, ну не совсем. В первом мы используем Drools 6.5. Затем я отвечаю за структуру, которая запускает движок, а не правила. 3-я У меня есть требование сообщить в реальном времени правило, которое не удалось. RHS не проблема, это охватило. LHS - проблема, NPE, деление на ноль и т. Д. И т. Д. И т. Д.Drools Exceptions LHS, определить правило, которое не удалось

Очевидно, что все исключения исключаются и обрабатываются соответственно. Насколько я могу судить, недостаточно информации, чтобы определить правило, которое не удалось. Я попытался ввести глобальное значение и установил, что в качестве 1-го stmt, но похоже, что он не копируется в память приложения из рабочей памяти LHS.

Я могу использовать некоторые требования к создателям правил ... ограничено. Я могу вводить stmts во время выполнения (когда я загружаю правила), но я бы предпочел не делать этого.

Рабочие элементы будут разнообразными и ненадежными. Обработка должна быть очень высокой. Правила будут сотнями до тысяч и, возможно, обновлены в режиме реального времени, или, может быть, «на лету» - лучшее описание.

Доступен ли слушатель, который будет использоваться до оценки LHS? (Я бы сомневался в этом, но думал, что лучше спросить).

ErrorListener было бы неплохо, я попробовал обработчик Exsequence Exception, но это не сработало. Есть ли еще ошибка ErrorHandler, которую я пропустил?

Я предполагаю, что двигатель JBPM имеет те же ограничения, не так ли? Это также нужно будет запустить в рамках.

Благодаря

ответ

0

Ограничения не анализироваться в контексте правило, они оцениваются в контексте сети.

Если вы не дадите правителям веревку, они не смогут повесить себя. Если вы не дадите им классы Java, которые попадают в NPE или деление на ноль, они не смогут сделать это в своих выражениях ограничений. (Хорошо, они могут все еще иметь возможность явно выражать выражение, где делитель равен нулю, но что именно.)

У вас есть ограниченная возможность поймать исключение LHS, если вы напишите обработчик вокруг вызова вставки. Однако вы не будете знать, какое правило. (Что бы вы сделали, если бы знали? Назовите морских пехотинцев?)

Использование правил без тестирования похоже на использование любого другого ПО без тестирования.

+0

В целом я согласен. Однако у меня нет контроля над WorkItems или правилами, у меня есть только требование, за которое платят счет, и у меня есть структура, в которой работают двигатели. У вас есть критическая система, которая обрабатывает более 1 миллиарда фактов в день, через огромная ферма серверов, и ваш босс хочет знать, какие правила терпят неудачу и почему. Идите фигуру. – pdread

+0

Если у вас нет контроля над классами, определяющими ваши факты: забудьте об этом. - Если это трудно, я могу попытаться разработать стратегию проверки правил, прежде чем они будут освобождены от невинных, но это правда, и для этого потребуется больше информации о приложении, чем вы, и, возможно, больше работы, чем я мог бы быть готовым дать. - Возможно, вам придется разработать собственную систему оценки правил, которая выполнима, если вам не нужна сложность синтаксиса LHS, как это делает Drools. – laune

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