Как интегрировать отдельное приложение Guvnor и Drools

Я задал несколько вопросов в stackoverflow по интеграции приложения drools с guvnor, и до сих пор не понял этого. У меня есть отдельное приложение drools, правила в файле DRL используют пользовательские классы Java, которые являются частью моего приложения. Для интеграции Guvnor я загрузил файл DRL в соответствующем пакете и загрузил необходимые файлы классов в виде JAR отдельной модели. Я использую KnowledgeAgent в отдельном приложении и наборе изменений xml, указывающем на URL-адрес пакета, который руководитель предоставляет, как это предлагается в этот пост и ниже выдается исключение

java.lang.RuntimeException: исключение KnowledgeAgent при попытке десериализовать KnowledgeDefinitionsPackage
в org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:796) в org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl. java:1103) в org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:844) в org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:684) в org.drools.agent.impl .KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:207) в org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:186) Причина: java.io.IOException: Сервер вернул код ответа HTTP: 500 для URL: http://localhost.com/guvnor-5.5.0.Final-tomcat-6.0/org.drools.guvnor.Guvnor/package/com/LATEST на sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) на org.drools.io.impl.UrlResource.grabStream(UrlResource.java:210) на org.drools .io.impl.UrlResource.getInputStream(UrlResource.java:146) в org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:759) ... еще 8

Может ли кто-нибудь помочь мне с пошаговыми действиями, связанными с интеграцией приложения Drools с Guvnor?

Заранее спасибо!


person vaish    schedule 30.10.2014    source источник
comment
Пара вопросов. Вы успешно создали свой пакет? Что вы увидите, если перейдете к следующему в своем веб-браузере? localhost.com/ guvnor-5.5.0.Final-tomcat-6.0/   -  person Steve    schedule 30.10.2014
comment
@Steve Были проблемы при сборке пакета в guvnor, и я удалил весь ненужный код в DRL, и теперь пакет успешно собран. При выполнении автономного приложения, указывающего на localhost :8080/guvnor-5.5.0.Final-tomcat-6.0/rest/packages/, приложение работает нормально и ничего не делает с моими пользовательскими объектами.   -  person vaish    schedule 31.10.2014
comment
Звучит как хорошее начало. Если вам нужна помощь с приложением, которое ничего не делает, вам нужно будет показать факты вставки кода и DRL. Некоторые из следующих инструментов могут оказаться полезными: github.com/gratiartis/sctrcd-payment-validation-web/blob/master/ и github.com/gratiartis/sctrcd-payment-validation -web/blob/master/ ... что может быть удобно для регистрации того, что находится в рабочей памяти, и активации ваших правил.   -  person Steve    schedule 31.10.2014
comment
@Steve Я уже включил журнал с помощью кода: KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession); и он отслеживает детали выполнения. Я вижу, что для всех моих правил выполняются только 2 действия OBJECT ASSERTED & ACTIVATION CREATED. Мне очень нужно понять, как это работает. DRL в guvnor будет ссылаться на java-объекты, загруженные в guvnor. Из автономного приложения, если я укажу на Guvnor DRL и запущу приложение, как атрибуты pojo будут обновляться в автономной программе после выполнения правил (в основном 2 diff JVM правильно)?   -  person vaish    schedule 31.10.2014
comment
Похоже, основы работают. «объект подтвержден» означает, что факт был вставлен в сеанс. «активация создана» означает, что сработало одно из ваших правил. Все объекты Java являются локальными для вашего приложения (одна JVM! Их нет в Guvnor — Guvnor просто нужны им для компиляции правил), поэтому вы можете просто напрямую изменять их свойства. Точно так же вы можете вызывать статические методы.   -  person Steve    schedule 31.10.2014
comment
@Steve Спасибо за объяснение. Я вставляю пользовательские объекты pojo в сеанс знаний через автономное приложение. После вставки я вызываю метод fireAllrules() и печатаю pojo. Я вижу, что пользовательские объекты не обновляются по правилам, доступным в guvnor. Пожалуйста, помогите мне в решении этой проблемы.   -  person vaish    schedule 03.11.2014
comment
Похоже, что в вашем DRL есть ошибки, если ваши правила не срабатывают должным образом. Создайте новый вопрос, показав код того, как вы вставляете и запускаете свои правила, и показывая DRL для этих правил.   -  person Steve    schedule 03.11.2014
comment
@ Стив, я понял проблему. Я определил группу правил для каждой схемы процесса, указанной в правиле. Но мне не удалось изменить конфигурацию jBPM xml, для которой требуется субдомен управляющего, которого я использую. Спасибо за поддержку. В случае возникновения дополнительных вопросов, я подниму новый вопрос :)   -  person vaish    schedule 04.11.2014