1

将 KIE Drools Workbench 6.2.0 Final 安装在 JBoss 7 应用服务器本地实例中,并将 Kie Server 6.2.0 Final 安装在本地 Tomcat 7 实例中。

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

  1. 创建了一个名为 testRepo 的新存储库

  2. 创建了一个名为 HelloWorld 的新项目

  3. 使用名为 message 的字符串属性创建了一个名为 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;
      }
    
    } 
    
  4. 创建了一个包含以下内容的新 DRL:

    package demo;
    
    import demo.HelloWorld;
    
    rule "hello"
    
    when 
        HelloWorld(message == "Joe");
    then
        System.out.println("Hello Joe!");
    end
    
  5. 当我在这个 URL 下将它部署到我的 Kie 服务器时:

http://localhost:8080/kie-server-6.2.0.Final-webc/services/rest/server/containers/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. 当我尝试使用以下有效负载(使用 Postman 或 SoapUI)进行 POST 时:

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

  2. 收到以下内容:

    HTTP 状态 415 - 无法使用内容类型类型状态报告消息无法使用内容类型

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

我可能做错了什么?我去了 Deploy -> Rule Deployments 并注册了我的 kie-server 并创建了一个名为 helloworld 的容器,正如从第 5 步中可以看到的那样,它起作用了。也许我没有正确部署它?

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

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下的以下目录:

元信息

网络信息

感谢您抽时间阅读...

4

3 回答 3

0

你还好吗?

Esteban 的回答是对的,但是,你应该添加另一个 header,你需要添加的 header 是“Authorization”,而 Authorization 的值是你注册到你的应用领域到你的 kie-server 转换的用户基数 64。例如:

kieserver:系统*01

转换为base64:

a2llc2VydmVyOnN5c3RlbSowMQ==

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

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

我希望它是有帮助的。

对不起我的英语不好!:)

于 2015-10-06T20:28:05.020 回答
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>
于 2015-10-06T20:36:12.710 回答
0

您在 POST 请求标头中使用什么内容类型?据我记得,如果您没有content-type: application/xml在请求的标头中提供 a ,则会发生该错误消息。

希望能帮助到你,

于 2015-10-06T11:11:11.873 回答