我正在运行 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。
任何建议表示赞赏,谢谢。