HelloWorld使用Drools Workbench& KIE服务器

时间:2015-10-06 00:54:37

标签: drools kie kie-workbench kie-wb kie-server

将KIE Drools Workbench 6.2.0 Final安装在本地Tomcat 7实例内的JBoss 7 Application Server本地实例和Kie Server 6.2.0 Final中。

严格使用基于Web的KIE Workbench进行评估(使用它来编写生成基于Java的Maven项目的代码,而不是使用特定的IDE,如Eclipse或IntelliJ IDEA):

  1. 创建了一个名为testRepo

  2. 的新存储库
  3. 创建了一个名为HelloWorld

  4. 的新项目
  5. 使用名为message:

    的String属性创建了一个名为HelloWorld的新数据对象
    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;
      }
    
    } 
    
  6. 创建了包含以下内容的新DRL:

    package demo;
    
    import demo.HelloWorld;
    
    rule "hello"
    
    when 
        HelloWorld(message == "Joe");
    then
        System.out.println("Hello Joe!");
    end
    
  7. 当我在此网址下将其部署到我的Kie服务器时:

  8. http://localhost:8080/kie-server-6.2.0.Final-webc/services/rest/server/containers/helloworld

    我在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状态415 - 无法使用内容类型 类型状态报告 消息无法使用内容类型

      描述服务器拒绝了此请求,因为请求实体的格式不受所请求方法所请求资源的支持。

    3. 我可能做错了什么?我去了Deploy - &gt;规则部署和注册我的kie-server以及创建一个名为helloworld的容器,从步骤#5可以看出,它工作正常。也许我没有正确部署它?

      顺便说一句,我使用了以下Stack Overflow post作为基础(在提出这个问题之前)......

      Google的大部分搜索结果都解释了如何通过设置基于Maven的项目以编程方式创建Drools项目。我正在评估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 个答案:

答案 0 :(得分:0)

您在POST请求标头中使用了哪种内容类型? 据我记忆,如果您未在请求的标头中提供content-type: application/xml,则会出现错误消息。

希望它有所帮助,

答案 1 :(得分:0)

你还好吗?

Esteban的回答是正确的,但是,您应该添加另一个标题,您需要添加的标题是“授权”,授权的值是您向您的kie-注册到应用领域的用户服务器在base64中转换。例如:

  

kieserver:系统* 01

转换为base64:

  

a2llc2VydmVyOnN5c3RlbSowMQ ==

无论如何,我的请求的完整标题是这样的:

Authorization : Basic a2llc2VydmVyOnN5c3RlbSowMQ==
Content-Type  : application/xml

我希望它有所帮助。

抱歉我的英文! :)

答案 2 :(得分:0)

我使用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>