【问题标题】:Execute bpmn file from Drools Rule从 Drools 规则执行 bpmn 文件
【发布时间】:2014-07-23 13:45:10
【问题描述】:
我想执行另一个项目中的 bpmn 文件。
谁能告诉我该怎么做?
我的规则中有这样的东西,但它不起作用:
function performScenario()
{
KieHelper kHelper = new KieHelper();
KieBase kBase = kHelper.addResource(ResourceFactory.newFileResource("D:\\jbpm-installer\\workspace\\JbpmTest\\src\\main\\resources\\sample.bpmn")).build();
KieSession kieSession = kBase.newKieSession();
kieSession.startProcess("com.sample.bpmn.hello");
}
我有错误:未知的进程 ID
【问题讨论】:
标签:
java
drools
rules
jbpm
kie
【解决方案1】:
您所说的流程在另一个项目中是什么意思?您需要将项目加载到同一个 ksession 中,以便能够从那里启动它。
而不是这样做:
kHelper
.addResource(
ResourceFactory.newFileResource("D:\\jbpm-installer\\workspace\\JbpmTest\\src\\main\\resources\\sample.bpmn")
)
.build();
在您构建规则会话时执行相同操作,然后您将能够执行类似的操作
kcontext.startProcess(<ID HERE>);
HTH
【解决方案2】:
我认为您在kieSession.startProcess("com.sample.bpmn.hello"); 中有错误
kieSession 不知道 id:"com.sample.bpmn.hello",所以它抛出一个错误:Unknown Process ID。
在文本或 xml 编辑器中打开您的 bpmn 文件并查找这行代码:
...
<process processType="Private" isExecutable="true" id="Sample" name="Sample Process">
...
id="Sample" 是进程 ID。所以你的代码应该是这样的:kieSession.startProcess("Sample");