Механизм правил для автономного приложения Java

У меня есть отдельное приложение Java, для которого мне нужно интегрировать механизм правил. Я должен определить правила, используя файл свойств или файл XML. Мне нужно, чтобы Rules Engine читал эти правила, определенные в свойствах или XML-файле, и, соответственно, реализовывал код в приложении.

Любой такой механизм правил (с открытым исходным кодом), я могу использовать его для своего приложения. Обратите внимание, что мне не нужен механизм правил, который мне нужно развернуть на сервере приложений или веб-сервере. Мне нужен какой-то файл jar, где я могу напрямую использовать его для своего приложения.

Пожалуйста, подскажите, есть ли такой механизм правил, который я могу использовать?


person user632323    schedule 27.04.2012    source источник
comment
Вы уже пробовали какое-либо программное обеспечение? Если да, пожалуйста, упомяните и об этом: теперь вы можете получать предложения, которые вы, возможно, уже пробовали (и отклонили). Кроме того, не могли бы вы объяснить немного больше об этих правилах (примеры помогут).   -  person Bart Kiers    schedule 27.04.2012


Ответы (4)


Вы можете использовать Drools, которые также можно использовать в отдельных программах.

http://www.jboss.org/drools

person GuruKulki    schedule 27.04.2012

Предупреждение о подключении!

Я предвзят, так как это мой собственный проект, но если вам нужен чрезвычайно быстрый и легкий механизм правил, вы можете проверить Рули.

Философия проекта основана на моем личном опыте: JSR-94 — это излишество, большинство движков правил слишком тяжелы, имеют слишком много зависимостей и крутую кривую обучения.

Roolie не рассматривает «функциональные» правила, которые изменяют состояние приложения (в любом случае, ИМХО, это должна быть Java).

Вместо этого он позволяет разработчику реализовывать простые правила с помощью одного метода «проходов» и связывать их вместе с помощью короткой логической логики в XML-файле. Он не имеет никаких зависимостей во время выполнения и очень быстр.

Это простое решение простой проблемы (например, может ли пользователь видеть файл? Только если он «вошел в систему», «администратор» ИЛИ «опытный пользователь» и «имеет достаточно сообщений»).

Составным правилом будет «UserCanSeeFile», состоящее из «IsLoggedIn», «IsAdmin», «IsPowerUser» и «HasEnoughPosts».

Если позже вам будет все равно, сколько сообщений им нужно, чтобы они могли увидеть файл, просто дерните эту строку XML, и все готово.

person rallyredevo    schedule 31.03.2013

Я экспериментировал с несколькими библиотеками оценки выражений в java. Я нашел МВЭЛ лучшим. В моем случае я читал «правила» из базы данных. Так выглядели мои правила

player.platform == 'iOS' && ( player.ltv > 100 || player.status >= GOLD )

Теперь я проанализировал приведенное выше выражение для всех переменных. В моем случае переменной был любой токен с точкой ( object.method ). Это сработало для меня. Не уверен, сработает он у вас или нет.

Но однажды все переменные были заменены на значения. Я только что вызвал MVEL.evaluate().

Кроме того, в моем случае все выражения, которые мне нужно было оценить, будут выдавать логический результат. Но MVEL может вычислять любое выражение с разными типами результатов.

person snegi    schedule 06.03.2015

Я рекомендую вам Drools

Также проверьте другие параметры

person Balaswamy Vaddeman    schedule 27.04.2012
comment
Я отмечаю ваш ответ, так как ваш ответ не объясняет, почему вы рекомендуете использовать слюни. Из вопроса ясно, что пользователь уже выполнил базовый поиск в Google. - person snegi; 19.01.2015