在 camunda 中发送变量和消息
Send variable together with message in camunda
我有一个接收进程,它有一个等待发送进程发送的消息的中间消息事件。
我已经可以在发送过程中通过以下委托代码触发中间消息事件:
RuntimeService runtimeService = ProcessEngines
.getDefaultProcessEngine()
.getRuntimeService();
MessageCorrelationResult result = runtimeService
.createMessageCorrelation("my-message-name")
.setVariable("customer", customer) //trigger instance where customer matches
.correlateWithResult();
我的问题是:如何将一个变量与消息一起从发送进程发送到接收进程?有什么最佳做法吗?
这是我目前尝试过的方法:
// Set the variable after the correlation
runtimeService.setVariable(result.getProcessInstance().getId(),
"variableToSend", variableToSend);
我尝试像这样在 JavaDelegate
中检索变量:
// Access the sent variable
Double sendByOtherProcess = (Double) delegate.getVariable("variableToSend");
// sendByOtherProcess == null
有趣的是,在接收过程中可以通过 JavaScript 以嵌入形式检索 variableToSend
。
我了解到这可能是由于 synchron/asynchron 行为导致的问题?
感谢任何帮助。
您已经在 MessageCorrelationBuilder 上设置了一个变量,MessageCorrelationBuilder#setVariable
。有关详细信息,请参阅 JavaDoc 或 MessageCorrelationBuilder
如您所述,您希望将消息关联到与给定变量匹配的进程。为此,您必须使用 #processInstanceVariableEquals
方法。
我有一个接收进程,它有一个等待发送进程发送的消息的中间消息事件。
我已经可以在发送过程中通过以下委托代码触发中间消息事件:
RuntimeService runtimeService = ProcessEngines
.getDefaultProcessEngine()
.getRuntimeService();
MessageCorrelationResult result = runtimeService
.createMessageCorrelation("my-message-name")
.setVariable("customer", customer) //trigger instance where customer matches
.correlateWithResult();
我的问题是:如何将一个变量与消息一起从发送进程发送到接收进程?有什么最佳做法吗?
这是我目前尝试过的方法:
// Set the variable after the correlation
runtimeService.setVariable(result.getProcessInstance().getId(),
"variableToSend", variableToSend);
我尝试像这样在 JavaDelegate
中检索变量:
// Access the sent variable
Double sendByOtherProcess = (Double) delegate.getVariable("variableToSend");
// sendByOtherProcess == null
有趣的是,在接收过程中可以通过 JavaScript 以嵌入形式检索 variableToSend
。
我了解到这可能是由于 synchron/asynchron 行为导致的问题?
感谢任何帮助。
您已经在 MessageCorrelationBuilder 上设置了一个变量,MessageCorrelationBuilder#setVariable
。有关详细信息,请参阅 JavaDoc 或 MessageCorrelationBuilder
如您所述,您希望将消息关联到与给定变量匹配的进程。为此,您必须使用 #processInstanceVariableEquals
方法。