HelloWorld с использованием Drools Workbench & KIE Server
Установите KIE Drools Workbench 6.2.0 Final внутри локального экземпляра сервера приложений JBoss 7, а Kie Server 6.2.0 Final - в локальном экземпляре Tomcat 7.
Использование веб-приложения KIE Workbench строго для целей оценки (я использую его для кодирования при создании проектов Maven на основе Java и не использую конкретную среду IDE, например Eclipse или IntelliJ IDEA):
Создан новый репозиторий под названием testRepo
Создан новый проект под названием HelloWorld
Создан новый объект данных с именем HelloWorld со свойством String с именем message:
package demo; /** * This class was automatically generated by the data modeler tool. */ public class HelloWorld implements java.io.Serializable { static final long serialVersionUID = 1L; private java.lang.String message; public HelloWorld() { } public java.lang.String getMessage() { return this.message; } public void setMessage(java.lang.String message) { this.message = message; } public HelloWorld(java.lang.String message) { this.message = message; } }
Создан новый ДХО, содержащий следующее содержание:
package demo; import demo.HelloWorld; rule "hello" when HelloWorld(message == "Joe"); then System.out.println("Hello Joe!"); end
Когда я разверну его на своем Kie Server по этому URL:
Когда я копирую и вставляю указанный выше URL в Google Chrome, я получаю следующий ответ:
<response type="SUCCESS" msg="Info for container hello">
<kie-container container-id="hello" status="STARTED">
<release-id>
<artifact-id>Hello</artifact-id>
<group-id>demo</group-id>
<version>1.0</version>
</release-id>
<resolved-release-id>
<artifact-id>Hello</artifact-id>
<group-id>demo</group-id>
<version>1.0</version>
</resolved-release-id>
<scanner status="DISPOSED"/>
</kie-container>
</response>
Когда я пытаюсь сделать POST, используя следующую полезную нагрузку (используя Postman или SoapUI):
<batch-execution lookup="defaultKieSession"> <insert out-identifier="message" return-object="true" entrypoint="DEFAULT"> <demo.HelloWorld> <message>Joe</message> <demo.HelloWorld> </insert>
Получил следующее:
HTTP Status 415 - Невозможно использовать тип содержимого. Сообщение о состоянии. Сообщение Невозможно использовать тип содержимого.
описание Сервер отклонил этот запрос, потому что объект запроса находится в формате, который не поддерживается запрошенным ресурсом для запрошенного метода.
Что я, возможно, делаю не так? Я пошел в Deploy -> Rule Deployments и зарегистрировал свой kie-сервер вместе с созданием контейнера с именем helloworld, и, как видно из шага № 5, это сработало. Возможно, я не правильно его развернул?
Кстати, я использовал следующий пост переполнения стека в качестве основы (прежде чем задать этот вопрос)...
Большинство результатов поиска Google просто объясняют, как программно создавать проекты Drools путем настройки проектов на основе Maven. Я оцениваю KIE Drools Workbench, чтобы увидеть, как легко нетехнический специалист может использовать KIE Drools Workbench для генерации правил на основе Drools и их выполнения.
Я пропускаю шаг? В Tomcat 7 он содержит только следующие каталоги в каталоге apache-tomcat-7.0.64 / webapps / kie-server-6.2.0.Final-webc:
META-INF
WEB-INF
Спасибо, что нашли время, чтобы прочитать это...
3 ответа
Какой тип контента вы используете в заголовке запроса POST? Насколько я помню, это сообщение об ошибке произошло, если вы не предоставили content-type: application/xml
в заголовке вашего запроса.
Надеюсь, поможет,
Я получил его с помощью Postman (приложение / плагин Chrome) с вкладкой Авторизация, выбранной как Нет аутентификации. Действительно классный ответ!
<response type="SUCCESS" msg="Container helloworld successfully called.">
<results>
<![CDATA[<execution-results>
<result identifier="message">
<demo.HelloWorld>
<message>Joe</message>
</demo.HelloWorld>
</result>
<fact-handle identifier="message" external-form="0:4:1864164041:1864164041:4:DEFAULT:NON_TRAIT"/>
</execution-results>]]>
</results>
</response>
С тобой все в порядке?
Ответ Esteban верен, но вы должны добавить еще один заголовок, заголовок, который вам нужно добавить, - "Авторизация", а значение Авторизация - это пользователь, которого вы зарегистрировали в своей области приложения на вашем kie-сервере, преобразованном в base64. например:
kieserver: система *01
преобразован в base64:
a2llc2VydmVyOnN5c3RlbSowMQ ==
В любом случае, полный заголовок моего запроса выглядит так:
Authorization : Basic a2llc2VydmVyOnN5c3RlbSowMQ==
Content-Type : application/xml
Я надеюсь, что это было полезно.
Извините за мой английский!:)