jBPM如何获得WorkItemHandler结果

时间:2012-02-24 15:54:42

标签: jbpm

我有一个服务节点,将由WorkItemHandler运行。

executeWorkItem()结束时我做了:

manager.completeWorkItem(workItem.getId(), resultMap);

如何从其他地方访问resultMap?在哪里举行?

3 个答案:

答案 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>