KIE 服务器(非托管) - 进程未实例化



使用 kie 服务器的 REST API,我创建了一个具有以下进程定义的容器:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<process-definition>
<process-id>someProcessId</process-id>
<process-name>someProcessName</process-name>
<process-version></process-version>
<package>somepackage</package>
<container-id>someContainerId</container-id>
<dynamic>false</dynamic>
</process-definition>

如果我尝试启动该过程的实例,它似乎可以使用:

curl -i -u 'user:pwd!' -x post -h 'Content-type: application/json' http://localhost:8080/kie-server/services/rest/server/containers/someContainerId/processes/someProcessId/instances

我收到 HTTP 201 已创建响应。

但是,如果我随后获得流程实例列表,则该列表为空。用:

curl -i -u 'user:pwd!' -X GET http://localhost:8080/kie-server/services/rest/server/queries/containers/someContainerId/process/instances

我收到:

我的.drl文件为每个规则定义了相同的规则流组,.bpmn定义了开始事件和业务规则任务,并定义了该规则流组:

BPMN:

<process processType="Private" isExecutable="true" id="someProcessId" name="someProcessName" tns:packageName="somepackage" >
<!-- nodes -->
<startEvent id="_1"  isInterrupting="true"/>
<endEvent id="_jbpm-unique-0" name="End" >
<terminateEventDefinition />
</endEvent>
<businessRuleTask id="_jbpm-unique-2" name="someBusinessRuleTask" g:ruleFlowGroup="someRuleflowGroup" >
<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>

如果我从 DRL 中删除规则流组,我可以简单地触发所有规则(甚至不需要 BPMN(,但想了解进程在 kie 服务器中的工作方式以及如何启动它们。

我应该补充一点,我正在单独插入规则使用的java.util.Map对象。

抱歉,如果这似乎是一个相对基本的问题,但从我所看到的情况来看,它应该启动流程实例,所以不确定我错过了什么。

谢谢。

来自 jBPM 的文档:

当在流程中到达规则任务时,jBPM引擎将开始执行属于相应规则流组(如果有的话(的规则。如果此规则流组中没有更多活动规则,则执行将自动继续到下一个节点。

如果流程只是单个业务规则任务,则一旦启动,它将一直运行到<endEvent>节点并终止。当您请求流程实例时,您将不会得到任何实例,因为您刚刚创建的实例已经终止。

希望对您有所帮助,

最新更新