0

我创建了一个带有一些参数的自定义 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 中获取/到达那些参数/变量(我相信这是全局变量)。

非常感谢!

4

2 回答 2

1

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

于 2016-09-02T15:50:00.753 回答
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;
}

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

于 2016-09-02T13:31:34.233 回答