如何在Jbpm-WorkBench中的BPMN流程中设置WorkItem中的参数

时间:2016-09-02 12:46:58

标签: jbpm bpmn kie kie-workbench kie-wb

我创建了一个带有一些参数的自定义WorkItem,我在WorkDefinitions.wid文件中注册了这些参数。然后在业务流程中,我还为整个流程创建变量定义,并将我的自定义WorkItem的WD.wid引用到BP中创建的那些。

WorkItem执行代码,该代码在启动进程后从表单中获取这些参数。为此我使用getParameter() - 方法; 它看起来如下:

public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

String payload = workItem.getParameter("id") + ... ;
...
manager.completeWorkItem(workItem.getId(), null);
}

一切看起来和工作正常,因为WorkItem将成功执行并获得结果(在BP中执行workItem后在服务器端); 但现在我需要在输入参数的POST方法后获得响应。在代码中我创建了一个新变量,它从响应体中获取参数,当我执行纯代码(没有BPMN - 进程)时,我可以在IDE的控制台中看到结果,但我还需要在WorkItem中注册这个变量来使用它进一步用于我的BProcess中的下一个任务。

所以我的问题是:是否有类似于getParameter()的方法,但有些东西是setParameter()?我如何在WorkItem中注册它,如何在jbpm中获取/到达BProcess中的那些参数/变量(我认为这是全局变量)。

非常感谢!

2 个答案:

答案 0 :(得分:1)

查看WorkItemManager的Javadoc并查看packageid total accept remain 6030 4 3 1 方法的参数。您可以在地图中传递结果。然后,您将获取这些值作为正在执行的任务的输出参数,并将它们映射到某些流程变量,以便下一个任务可以使用它们。

答案 1 :(得分:0)

我不知道你使用的是哪个版本,但是对于jBPM 6.3,我曾经通过定义具有不同执行方法定义的自定义java工作项来做同样的事情。对我来说,它看起来像这样:

public Map<String, Object> execute(WorkItem workItem) throws Exception {
    Map<String, Object> result = new HashMap<String, Object>();
    result.put("outputparam", "hello world");
    return result;
}

使用此功能,我可以在我的自定义服务节点的工作流程过程中将“outputparam”引用为数据输出分配。