从Drools Rule执行bpmn文件

时间:2014-07-23 13:45:11

标签: java drools rules jbpm kie

我想执行另一个项目中的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

2 个答案:

答案 0 :(得分:1)

这个过程在另一个项目中是什么意思?您需要将项目加载到相同的ksession中才能从那里启动它。 而不是这样做:

kHelper
    .addResource(
        ResourceFactory.newFileResource("D:\\jbpm-installer\\workspace\\JbpmTest\\src\\main\\resources\\sample.bpmn")
    )
    .build();

在构建规则会话时执行相同的操作,然后您就可以执行类似

的操作
kcontext.startProcess(<ID HERE>);

HTH

答案 1 :(得分:0)

我认为您在kieSession.startProcess("com.sample.bpmn.hello");中有错误 kieSession无法识别id:"com.sample.bpmn.hello",因此会抛出错误:未知进程ID。

在文本或xml编辑器中打开bpmn文件并查找以下代码行:

    ...
    <process processType="Private" isExecutable="true" id="Sample" name="Sample Process">
    ...

id="Sample" 是进程ID。所以你的代码应该是这样的:kieSession.startProcess("Sample");