将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):
创建了一个名为testRepo
创建了一个名为HelloWorld
使用名为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;
}
}
创建了包含以下内容的新DRL:
package demo;
import demo.HelloWorld;
rule "hello"
when
HelloWorld(message == "Joe");
then
System.out.println("Hello Joe!");
end
当我在此网址下将其部署到我的Kie服务器时:
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>
当我尝试使用以下有效负载进行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状态415 - 无法使用内容类型 类型状态报告 消息无法使用内容类型
描述服务器拒绝了此请求,因为请求实体的格式不受所请求方法所请求资源的支持。
我可能做错了什么?我去了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
感谢您花时间阅读此内容......
答案 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>