使用 Java API 设置/获取 Camunda 用户任务的输入/输出参数

set / get input / output parameters of a Camunda user task using Java API

我的工作流程很简单:

[start_workflow] -> [user_task] -> 
-> [exclusive_gateway] -> (two routes see below) -> [end_workflow]

[exclusive_gateway]有两条出路:

1.) ${if user_task output paramterer == null} -> [NULL_service_task] -> [end_workflow]

2.) ${if user_task output paramterer != null} -> [NOT_null_service_task] -> [end_workflow]

在 Camunda Modeler 中,我向 [user_task] 添加了一个输出参数(命名为 out)。

问: 如何通过 Java API 通过以下方式完成任务之前设置输出参数:

taskService.complete(taskId);

在 [exclusive_gateway] 箭头上,我设置为:

Condition type = expression
Expression = ${out != null}

但是还有更多:

如果我删除 [user_task] 的输出参数并在完成任务之前设置一个 runtimeService 变量:

runtimeService.setVariable(processInstanceId, "out", name);

[exclusive_gateway] 确实处理参数,并按预期路由流。 在不删除 [user_task] 的输出参数的情况下,它看起来像: 1. 它永远不会被设置(所以 == null) 2.这个空值覆盖

设置的值
runtimeService.setVariable(processInstanceId, "out", name);

那么我可以通过 Java API 设置任务的输出参数还是只能使用过程变量?

我猜你正在寻找

taskService.complete(<taskId>, Variables.putValue("out", <name>);

任务和网关之间的通信(值的转发)通过设置 process-variable "out" 完成。

有关详细信息,请查看 javadoc