我正在运行kie-server-showcase泊坞窗映像,并尝试在其上运行一个非常简单的规则。
我这样启动容器:
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存储库(目前),这是我看到的获取容器以获取其副本的唯一方法。
我通过“ maven clean”和“ maven install”在Eclipse中构建了一个kjar。 在kjar(.jar)内部,我有:
要在kie服务器上创建容器,请使用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。
我认为这可能归结于我的不正确之处。 docker容器似乎在本地Maven存储库挂载中看到了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>
我正在用流口水7.23.0.Final构建kjar。我以前也尝试过7.22。
任何建议,谢谢。
答案 0 :(得分:0)
我主要通过遵循给出的建议并尝试在没有Docker的情况下运行kie-server来找出问题所在。
我收到了很多关于依赖项和错误的错误消息(在Docker中我看不到),这些错误消息类似于“类X和类Y在Z属性上存在分歧”。
这是因为我的kjar pom具有在kie服务器中已经提供的依赖项,并且似乎存在冲突。都是流口水的依赖。通过在kjar pom中将这些依赖关系的作用域设置为“已提供”,问题得以解决,我可以创建容器(在Docker和非Docker kie-servers中)。