jBPM - 接入信号事件数据?

时间:2014-12-10 10:23:34

标签: jboss jbpm bpm bpmn

我是jBPM的新手,我似乎失去了一些基本的东西。我似乎无法从开发人员的角度找到关于如何使实际过程工作的任何下降教程。因此,我遵循官方jBPM 6.1 user guide。我已经设置了屏幕截图中显示的过程 enter image description here

如您所见,这个过程非常简单。引发信号事件,并将给予此信号事件的数据映射到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。你能解释一下我错在哪里吗?

  1. 我非常有信心在我的单元测试中,我使用正确的程序here传递事件数据。我不相信问题就在那里......

  2. 流程建模中存在问题吗?我创建了数据对象IncomingData,我相信它可以保存事件的数据。编辑:我还将信号输入数据映射到相应的数据对象(参见下一个屏幕截图)。这有什么不对吗?

  3. enter image description here

    1. 我在脚本任务中调用IncomingData对象时是否做错了什么?我应该使用kcontext还是其他什么?
    2. 你能不能指点我参加jBPM 6.1的教程?

      提前谢谢

      编辑:PS。您可以在this link

      中找到我的bpmn文件

2 个答案:

答案 0 :(得分:1)

我发现了问题。当我尝试更仔细地调试时,我注意到进程的脚本任务在进程通过ksession.startProcess("testing.OA") 之前的事件开始时执行,这是通过{{1}完成的}}。在执行该过程时,这自然会导致空ksession.signalEvent对象。

答案 1 :(得分:0)

在开始事件中,您还需要创建一个映射,将信号数据映射到您选择的变量。