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):

  1. Создан новый репозиторий под названием testRepo

  2. Создан новый проект под названием HelloWorld

  3. Создан новый объект данных с именем 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;
      }
    
    } 
    
  4. Создан новый ДХО, содержащий следующее содержание:

    package demo;
    
    import demo.HelloWorld;
    
    rule "hello"
    
    when 
        HelloWorld(message == "Joe");
    then
        System.out.println("Hello Joe!");
    end
    
  5. Когда я разверну его на своем Kie Server по этому URL:

HTTP: // локальный: 8080 / Кий-сервер 6.2.0.Final-Webc / услуги / отдых / сервер / контейнеры / HelloWorld

Когда я копирую и вставляю указанный выше 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>
  1. Когда я пытаюсь сделать POST, используя следующую полезную нагрузку (используя Postman или SoapUI):

    <batch-execution lookup="defaultKieSession">
    <insert out-identifier="message" return-object="true" entrypoint="DEFAULT">
        <demo.HelloWorld>
            <message>Joe</message>
        <demo.HelloWorld>
    </insert>
    

  2. Получил следующее:

    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

Я надеюсь, что это было полезно.

Извините за мой английский!:)

Другие вопросы по тегам