0

我正在运行 kie-server-showcase docker 映像并尝试在其上运行一个非常简单的规则。

我这样启动容器:

docker run -i -p 8080:8080 --name kie-server --mount type=bind,source=$HOME/.m2,target=/opt/jboss/.m2 jboss/kie-server-showcase:latest

我需要使用绑定挂载,因为我只是使用本地 .m2 maven 存储库(目前),这是我能看到的让容器获取它的副本的唯一方法。

我在 Eclipse 中通过“maven clean”构建了一个 kjar,然后是“maven install”。在 kjar (.jar) 里面我有:

  • META-INF 包含 kmodule.xml 和 MANIFEST.MF,也是一个 maven 子文件夹,其子文件夹中有 group-id 后跟 artifact-id,即 META-INF > maven > group > artifact。工件文件夹包含 pom 和 pom.properties(然后定义 GAV)。
  • 我的 drl 和 bpmn

要在 kie-server 上创建容器,我使用 curl 命令:

curl -u 'admin:admin' -H "accept: application/xml" -H "content-type: application/xml" -d @myContainer.xml -X PUT http://localhost:8080/kie-server/services/rest/server/containers/MyContainer

然后它开始运行命令,但花费的时间继续滴答作响,并且在我离开它 30 分钟后仍在继续。

我检查了 kie-server 容器,我添加的容器在那里,但状态是 CREATING:

<response type="SUCCESS" msg="List of created containers">
    <kie-containers>
        <kie-container container-id="MyContainer" status="CREATING">
            <release-id>
                <artifact-id>hummingbird.rules.syndicated-kjar</artifact-id>
                <group-id>uk.co.cdl.hummingbird</group-id>
                <version>0.0.1-SNAPSHOT</version>
            </release-id>
            <scanner status="DISPOSED"/>
        </kie-container>
    </kie-containers>
</response>

我对 docker 或使用 kie-server 不是很有经验,过去没有使用过 kjars,但有一个自定义规则引擎,它分别加载了 drl 和 bpmn。

我相信这可能是由于我的 kjar 在某种程度上不正确。docker 容器似乎在本地 maven repo mount 中看到了 kjar(因为我之前遇到了找不到它的错误)。

kjar中的drl很简单:

package somerules

import org.json.JSONObject
import java.util.Map

rule "somerules - do something" ruleflow-group "somerules"
dialect "java"
when
        $root : Map()
then
        insert(new JSONObject());
        delete($root);
end

并且 bpmn 应该不是问题(它与我们之前使用的自定义规则引擎相同):

<?xml version="1.0" encoding="UTF-8"?> 
<definitions id="Definition"
             targetNamespace="http://www.jboss.org/drools"
             typeLanguage="http://www.java.com/javaTypes"
             expressionLanguage="http://www.mvel.org/2.0"
             xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"
             xmlns:g="http://www.jboss.org/drools/flow/gpd"
             xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
             xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
             xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
             xmlns:tns="http://www.jboss.org/drools">

  <process processType="Private" isExecutable="true" id="somerules" name="somerules" tns:packageName="somerules" >

    <!-- nodes -->
    <startEvent id="_1"  isInterrupting="true"/>
    <endEvent id="_jbpm-unique-0" name="End" >
        <terminateEventDefinition />
    </endEvent>
    <businessRuleTask id="_jbpm-unique-2" name="somerules" g:ruleFlowGroup="somerules" >
      <ioSpecification>
        <inputSet>
        </inputSet>
        <outputSet>
        </outputSet>
      </ioSpecification>
    </businessRuleTask>

    <!-- connections -->
    <sequenceFlow id="_jbpm-unique-2-_jbpm-unique-0" sourceRef="_jbpm-unique-2" targetRef="_jbpm-unique-0" />
    <sequenceFlow id="_1-_jbpm-unique-2" sourceRef="_1" targetRef="_jbpm-unique-2" />

  </process>

  <bpmndi:BPMNDiagram>
    ...
  </bpmndi:BPMNDiagram>

</definitions>

我正在用 drools 7.23.0.Final 构建 kjar。我之前也尝试过 7.22。

任何建议表示赞赏,谢谢。

4

1 回答 1

0

我发现了问题所在,主要是通过遵循给出的建议并尝试在没有 Docker 的情况下运行 kie-server。

我收到了很多关于“X 类和 Y 类在 Z 属性上不一致”之类的依赖关系和错误的错误消息(在 Docker 中对我来说是不可见的)。

这是因为我的 kjar pom 已经在 kie-server 中提供了依赖项,并且似乎存在冲突。这是所有的口水依赖。通过在这些依赖项的 kjar pom 中将范围设置为“提供”,问题得到解决,我可以创建容器(在 Docker 和非 Docker kie-servers 中)。

于 2019-07-19T12:55:59.783 回答