Codehaus Drools теперь как JBoss Rules

Оказывается JBoss перенял разработку Codehaus Drools, и вот выпустил JBoss Rules 3, что, по идее, должно быть Drools 3. А Drools это реализация алгоритма Рете, т.е. язык(?) декларативного программирования, как и знакомый многим Prolog (хотя, как я понимаю, в самой сути алгоритма вычислений они противоположны)

Чем мне не нравился Drools, так этим монстроидальным XML. В JBoss же основательно переделали синтаксис самого языка, и теперь можно описывать правила такими вот компактными и понятными правилами:

when
e: Enemy(distance > 10)
w: Weapon(type == Weapons.ROCKET_LAUNCHER)
not exists Enemy(distance = 1)
then
w.attack(e);
</pre>

ну или типа такого, я этот новый синтаксис пока сильно не смотрел, но суть понятна. Также можно подключать свои DSL языки и написать подобное:

when
enemy: Distance to Enemy great that 10
rocketLauncher: Weapon with type Weapons.ROCKET_LAUNCHER
there is no Enemy with distance equal to 1
then
Attack enemy using rocketLauncher
</pre>

Помимо синтаксиса еще множество улучшений, самым значимым из которых, наверное, является улучшение производительноти до 20 раз.
Отличная вещь для написания всяких ботов для игр и подобных вещей. Лежит у меня в запасниках MMORG с ботами под управлением Drools, хорошо так упрощал написание логики поведения.

Для Java есть, кстати, связка с Прологом: InterProlog. На него я очень интересно наткнулся: оказывается мой полный тезка Игорь Артамонов, также занимающийся Java, переписывался с разработчиками. Те, после некоторого общения, видимо решили погуглить и нашли меня, о чем мне и написали :)

  • http:// SergINI

    И где здесь схожесть с Prolog, основанном на логике предикатов второго порядка?

  • http:// ikim

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

    А нужен он в основном для того, чтобы аналитики могли самостоятельно разрабатывать базы правил на понятном им языке (по крайней мере rule engines сейчас так позиционируются для бизнес-приложений, хотя изначально эти алгоритмы (RETE) были предназначены для высокой скорости принятия решений при очень больших базах правил).

  • http:// igor

    По мне так схожесть с прологом в подходе написания алгоритма 🙂

    В принципе внутренней работы я, чесно говоря, запутался, потому и написал, что вроде по сути противоположны.

    И вот сейчас подумал, и действительно, JBoss Rules больше полезен аналитикам, а вот на Прологе лучше совсем другие вещи делать.

  • http:// glebster

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

    Кстати, еще есть Jess, не такой красивый синтаксис зато полностью динамический. Жаль только денег стоит для коммерческого использования:)