如何知道消息被传递到哪个流程实例?
How to know which process instance a message was delivered to?
我如何才能获得已发送消息已传递到的流程实例的 ProcessInstanceId?
我正在通过 REST 发送消息 API。
据我所知,执行此操作的唯一方法是在消息中包含源执行或进程 ID。如果您通过运行时服务 API 发送消息,那么您的代码应该如下所示:
String myPid = delegateExecution.getProcessInstanceId();
Map vars = new HashMap();
vars.put('senderProcessInstanceId',myPid);
delegateExecution
.getEngineServices()
.getRuntimeService()
.messageEventReceived("someMessage",targetExecution,vars);
执行此代码后,接收进程可以检索进程 var "senderProcessInstanceId" 的内容,以便知道谁是发件人。
如果您正在使用 REST API,那么您将使用
PUT runtime/executions/{executionId}
像这样使用 JSON body:
{
"action":"messageEventReceived",
"messageName":"myMessage"
"variables": [ {"name": "senderProcessInstanceId", "value":"xxxxx"} ]
}
您可以在您的消息中包含一些唯一标识符,作为流程变量(参见例如Camunda BPM REST API 'message' endpoint).在 really 收到消息后,您的目标流程实例就会保存这样的流程变量。
因此,在发送消息后,您可以作为第二步查询接收流程实例(参见 Camunda BPM REST API 'get-instances' endpoint),该实例包含具有预期标识符的变量。
我如何才能获得已发送消息已传递到的流程实例的 ProcessInstanceId?
我正在通过 REST 发送消息 API。
据我所知,执行此操作的唯一方法是在消息中包含源执行或进程 ID。如果您通过运行时服务 API 发送消息,那么您的代码应该如下所示:
String myPid = delegateExecution.getProcessInstanceId();
Map vars = new HashMap();
vars.put('senderProcessInstanceId',myPid);
delegateExecution
.getEngineServices()
.getRuntimeService()
.messageEventReceived("someMessage",targetExecution,vars);
执行此代码后,接收进程可以检索进程 var "senderProcessInstanceId" 的内容,以便知道谁是发件人。
如果您正在使用 REST API,那么您将使用
PUT runtime/executions/{executionId}
像这样使用 JSON body:
{
"action":"messageEventReceived",
"messageName":"myMessage"
"variables": [ {"name": "senderProcessInstanceId", "value":"xxxxx"} ]
}
您可以在您的消息中包含一些唯一标识符,作为流程变量(参见例如Camunda BPM REST API 'message' endpoint).在 really 收到消息后,您的目标流程实例就会保存这样的流程变量。
因此,在发送消息后,您可以作为第二步查询接收流程实例(参见 Camunda BPM REST API 'get-instances' endpoint),该实例包含具有预期标识符的变量。