当前位置: 首页 > 知识库问答 >
问题:

FUSE camel+KIE执行服务器集成POC

宫瀚
2023-03-14

公共无效populateRestHeader(交换交换){

// hard code the message for time being because   BatchExecutionHelperd doesn't work. please see below. 

String myMessage=“ ”+“ john”+“51 ”+“;

// setup the login token
 exchange.getIn().setHeader("Authorization", basicToken);
// POST so I can send XML.  GET works fine !
 exchange.getIn().setHeader(Exchange.HTTP_METHOD, "POST");
// the content
 exchange.getIn().setHeader(Exchange.ACCEPT_CONTENT_TYPE, "application/xml");
 exchange.getIn().setBody(myMessage);

}

在KIE服务器日志中,我得到:

15:19:33,140 WARN[org.jboss.resteasy.core.exceptionHandler](默认任务-114)执行失败:javax.ws.rs.notsupportedException:无法在org.jboss.resteasy.core.registry.segmentnode.match(segmentnode.java(380)[resteasy-jaxrs-3.0.10.final.jar:]上使用内容类型。jboss.resteasy.core.registry.segmentnode.match(segmentnode.java:114)

“内容类型”没有正确设置,或者正文没有发送?

收到:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><response type="SUCCESS" msg="Info for container myCheese"><kie-container container-id="myCheese" status="STARTED"><release-id><artifact-id>mycheese</artifact-id><group-id>com.markit</group-id><version>1.0</version></release-id><resolved-release-id><artifact-id>mycheese</artifact-id><group-id>com.markit</group-id><version>1.0</version></resolved-release-id><scanner status="DISPOSED"/></kie-container></response>
<response type="SUCCESS" msg="Container myCheese successfully called.">
<results><![CDATA[<execution-results>
  <result identifier="person">
    <org.drools.camel.example.Person>
      <name>john</name>
      <age>51</age>
      <canDrink>true</canDrink>
      <alive>false</alive>
      <sex></sex>
      <happy>false</happy>
    </org.drools.camel.example.Person>
  </result>
  <fact-handle identifier="person" external-form="0:1:866416565:866416565:1:DEFAULT:NON_TRAIT"/>
</execution-results>]]></results>
</response>

问题:

a)知道为什么会出现错误吗?将exchange.body设置为POST的数据是否正确?b)不使用come-jetty将命令发送到Kie-Server,因为Kie-Server将其声明为REST,我可以使用CXFRS来完成此操作吗?此外,我相信Kie-Server也支持SOAP,但它的WSDL是什么?另一个替代方案是什么?

public String createCommand() {
    BatchExecutionCommandImpl command = new BatchExecutionCommandImpl();
    final List<GenericCommand<?>> commands = command.getCommands();
   
    Person person = createTestPerson();

    commands.add(new InsertObjectCommand(person, "myPerson"));
    commands.add(new FireAllRulesCommand());
    command.setLookup("ksession1");

    String myXMLMessage =     BatchExecutionHelper.newXStreamMarshaller().toXML(command);
    return myXMLMessage;
}

但我在保险丝日志中发现了异常:

Caused by: java.lang.ClassNotFoundException: org.drools.core.runtime.help.impl.BatchExecutionHelperProviderImpl not found by org.kie.internalapi [281]
  at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
  at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77)
  at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1993)

似乎KIE内部包无法访问Drools核心包?

共有1个答案

季俭
2023-03-14

啊。得到了一半的答案。我需要设置

exchange.contenttype=“application/xml”!

现在可以在Fuse服务器和远程KIE服务器之间很好地工作。但是,BatchExecutionHelper异常仍然存在问题。

 类似资料:
  • “Drools骆驼服务器”和“KIE-WB执行服务器”有什么区别?它们是否服务于在远程服务器中执行规则/进程的相同目的?

  • 我们目前正在将jBPM(7.37.final)规则部署到一个Kie执行服务器,并使用执行服务器自动公开的REST API调用规则。 但是由于一些体系结构的限制,我们不能使用REST API调用规则。该选项是执行一个基于jar(kie服务器客户机或其他)的集成,并从客户机(java应用程序)远程调用执行服务器上的规则。 Virges Vinay

  • 我已经在Wildfly14上安装了Business Central和Kie Execution Server 7.1。 Business Central位于:http://localhost:8080/kie-wb Kie执行服务器位于:http://localhost:8080/kie-server 我正在尝试如何将在Business Central中设计的一个项目部署到Kie执行服务器。我已经

  • 当规则应用程序在KIE服务器上运行时,如何启用规则引擎跟踪/日志记录? 规则应用程序是在工作台中创建的,不包含自定义代码。我能够使用KIE REST API执行规则,但是规则应用程序没有产生预期的结果。 环境: 我尝试了以下步骤: 使用Git在本地克隆工作台项目 将logback.xml添加到项目的根目录 将更改推回到工作台git repo 在工作台项目编辑器视图中添加了日志作为依赖项 更新项目版

  • 我的要求是在工作台之外(比方说在记事本中)修改规则文件(.drl),并用这个新的drl文件更新容器。是否有一种简单的方法以编程方式创建jar文件,并将其部署到中央maven存储库中?然后,我可以运行KIE扫描程序来查找jar文件的最新版本,并自动更新容器。或者有没有其他推荐的方法可以用更新的.drl文件更新正在运行的容器? 我的客户机应用程序不是Java的,所以我不是在寻找一个集成的解决方案,在那

  • 我正在开发一个Spring集成应用程序。 我有一个入站通道适配器,用于读取目录,然后是一个拆分器,用于将文件拆分为行,最后是一个udp出站通道适配器,用于发送行 我想每秒钟发一封信 我可以通过定义自己的拆分器并在每次读取一行时等待1s来做到这一点,但我想知道是否可以在xml文件中尽可能简单地完成它。 提前谢谢