我是jBPM的新手,我似乎失去了一些基本的东西。我似乎无法从开发人员的角度找到关于如何使实际过程工作的任何下降教程。因此,我遵循官方jBPM 6.1 user guide。我已经设置了屏幕截图中显示的过程
如您所见,这个过程非常简单。引发信号事件,并将给予此信号事件的数据映射到IncomingData
对象。在以下脚本任务中,我向控制台写入一条消息,并尝试编写IncomingData
对象的测试属性数据内容,以测试事件数据的处理。
我使用单元测试来测试我的过程:
@Test
public void testProcess() {
RuntimeManager manager = createRuntimeManager("workflow.bpmn");
RuntimeEngine engine = getRuntimeEngine(null);
KieSession ksession = engine.getKieSession();
ProcessInstance processInstance = ksession.startProcess("testing.OA");
IncomingData dataObject = new IncomingData();
dataObject.testProperty = "Testing data 2";
ksession.signalEvent("StartSignalWithData", dataObject, processInstance.getId());
// check whether the process instance has completed successfully
assertProcessInstanceCompleted(processInstance.getId(), ksession);
manager.disposeRuntimeEngine(engine);
manager.close();
}
但是,我在控制台输出中得到的只是消息Script task logging null
。你能解释一下我错在哪里吗?
答案 0 :(得分:1)
我发现了问题。当我尝试更仔细地调试时,我注意到进程的脚本任务在进程通过ksession.startProcess("testing.OA")
之前的事件开始时执行,这是通过{{1}完成的}}。在执行该过程时,这自然会导致空ksession.signalEvent
对象。
答案 1 :(得分:0)
在开始事件中,您还需要创建一个映射,将信号数据映射到您选择的变量。