我创建了一个带有一些参数的自定义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中的那些参数/变量(我认为这是全局变量)。
非常感谢!
答案 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”引用为数据输出分配。