Drools 5 предоставляет его для веб-приложений и веб-сервисов (SOAP) с использованием jaxb - PullRequest
0 голосов
/ 02 июня 2010

У нас есть требование. где нам нужно выставить drools 5 с ESB и аналогично веб-приложению. Хотя я нашел способы запуска drools с помощью eclipse, мне было трудно настроить Drools 5 с тем же веб-приложением на данный момент и перенести его в будущем в esb , Гувнор и Drool-Server не просто достаточны, чтобы помочь мне, ни гуглить это помогает даже пружинная поддержка также недоступна.

Любая помощь будет высоко оценена ... Спасибо

1 Ответ

1 голос
/ 19 марта 2011

На каком уровне вам нужно «выставлять» Drools в ESB? Я использую Drools в решении Enterprise, которое использует асинхронные веб-сервисы; многие из моих рабочих процессов чрезвычайно продолжительны (от 2 недель до месяца). Ключ должен временно сохранить StatefulKnowledgeSession между вызовами. Существует JPAStatefulKnowledgeSession, который сериализует сеанс и сохраняет его как большой двоичный объект в реляционной базе данных. Я решил не использовать это решение, потому что многие из моих асинхронных задач заканчиваются в течение секунды после вызова. Затраты на производительность для сохранения процесса в СУБД слишком велики для моих нужд. Моим решением было сохранить сессию в кеше в памяти. Infinispan был смехотворно прост в настройке и использовании, и у меня не было ни одной проблемы с фреймворком.

Вам нужно, чтобы ESB и веб-приложение использовали один и тот же KnowledgeSession? Это должна быть StatefulKnowledgeSession? Если вам нужно поддерживать состояние, вы должны рассмотреть систему на основе очередей и fireAllRules () через некоторый интервал. Если ваши действия основаны на командах (вставка объекта, запуск процесса и т. Д.), Я полагаю, что в Drools уже есть API для шаблона (я полагаю, именно это Drools Server делает изнутри). Вы также можете сделать KnowledgeSession синглтоном; но рассмотрите возможность использования ReentrantLock для предотвращения одновременных вызовов объекта. Если вы изолируете сеансы, лучше всего создать свой собственный репозиторий. Кэш Infinispan реализует ConcurrentHashMap, поэтому вы можете использовать идентификатор сеанса в качестве ключа и KnowledgeSession в качестве значения.

...