我有一个服务节点,将由WorkItemHandler
运行。
在executeWorkItem()
结束时我做了:
manager.completeWorkItem(workItem.getId(), resultMap);
如何从其他地方访问resultMap
?在哪里举行?
答案 0 :(得分:1)
你想用它做什么?您想在哪里访问它?
这些结果将传递给流程实例,因此在用于启动此服务的任务中,您可以将这些结果映射回流程变量,以便可以在流程实例的其余部分中使用它们。例如,如果处理程序返回名为“outcome”的结果并将结果参数映射到变量(使用结果映射),则可以在脚本或决策中使用此变量,或将其映射为下一个服务的输入等等。
克里斯
答案 1 :(得分:0)
只是详细说明克里斯所说的话(Kris& co,顺便说一下6.1的好工作)......
variable = ((WorkflowProcessInstance) processInstance).getVariable("variableName");
和
((WorkflowProcessInstance) processInstance).setVariable("variableName", variable);
您需要将从KieSession返回的流程实例强制转换为WorkflowProcessInstance,以便使用变量API。
请参阅http://docs.jboss.org/jbpm/v6.1/userguide/jBPMBPMN2.html#d0e3371
答案 2 :(得分:-1)
从WorkItemHandler返回结果的最简单方法是将包含结果键的HashMap映射到先前定义的过程变量中。 您可以在“结果映射”视图中执行此操作。 “参数”应该是HashMap的键,“变量”是所需的过程变量。
这是一个例子。
WorkItemHandler:
Map<String, Object> results = new HashMap<String, Object>();
results.put("price", price);
wim.completeWorkItem(wi.getId(), results);
现在在流程视图中映射变量,您的流程定义(在TextEditor视图中)应如下所示:
<dataOutputAssociation>
<sourceRef>_11_priceOutput</sourceRef>
<targetRef>myFlowPriceVariable</targetRef>
</dataOutputAssociation>