Динамичные факты слюни гувнора
Я пытаюсь интегрировать автономный редактор правил Guvnor в существующее приложение. Приложение теперь позволяет загружать файлы drl. Я хочу интегрировать редактор Guvnor, чтобы пользователь мог создавать или редактировать правила из приложения. Проблема, с которой я сталкиваюсь, состоит в том, что приложение позволяет пользователю вводить поля для правил и хранится в БД. Поля извлекаются во время выполнения. Нет доступного модельного класса. Я не мог понять, могу ли я использовать эти поля для динамического заполнения фактов, показанных в редакторе Guvnor.
Любая помощь очень ценится.. Спасибо!
1 ответ
Правила Drools работают путем сопоставления с фактами, которые являются просто классами Java. Java не является динамическим языком, поэтому вы не можете просто добавлять методы в классы. Поэтому вам нужно сделать что-то другое.
Самым простым решением было бы иметь базовый факт, который содержит HashMap пар ключ / значение. Затем можно написать правила для сопоставления со значениями в этой коллекции. Недостатком здесь будет то, что двигатель не будет реагировать на изменения этих значений.
Для действительно динамичных фактов не составит труда сгенерировать код DRL для декларативных фактов на основе пользовательских моделей. Затем вы можете загрузить их в базу знаний и написать правила на их основе.