Rest 将消息关联到正在运行的流程实例的Camunda将启动新的流程实例

Rest 将消息关联到正在运行的流程实例的Camunda将启动新的流程实例,rest,bpmn,camunda,Rest,Bpmn,Camunda,我有以下问题: 有一个消息启动事件,让我们说消息名是MessageX,后面跟着一个任务。 如果我用车身发送POST请求发动机休息/消息 { "messageName" : "MessageX", "processInstanceId" : "null", "resultEnabled" : "true" } 我得到了答案 { "resultTyp

我有以下问题:

有一个消息启动事件,让我们说消息名是
MessageX
,后面跟着一个任务。 如果我用车身发送POST请求
发动机休息/消息

{
  "messageName" : "MessageX",
  "processInstanceId" : "null",
  "resultEnabled" : "true"
}
我得到了答案

{
    "resultType": "ProcessDefinition",
    "execution": null,
    "processInstance": {
        ...
        "id": "1234-567-8910",
        ...
    }
}
因此,现在有一个id为1234-567-8910的进程启动并等待任务。好的 现在,我想将相同的消息关联到id为1234-567-8910的流程实例,如下所示:

{
  "messageName" : "MessageX",
  "processInstanceId" : "1234-567-8910",
  "resultEnabled" : "true"
}
BPMN如下所示:

我希望他会说一些类似于
进程1234-567-8910的话,不是在等待消息
之类的,而是他启动了一个新的进程实例


是否有一种方法仅在进程实际处于某个点时才对消息进行同步处理?只有在执行令牌在消息事件中等待时,才能对消息进行关联。在您的情况下,执行令牌已经移交给任务,因此关联失败并生成新实例

但是,为什么要发送相同的消息两次呢?使用已传递的消息启动实例。您可以通过使用显式启动请求来分离流程启动和消息传递(需要在流程定义中分离启动事件和消息事件):

当然,您也可以使用p-id进行关联,但是您真的想跟踪所有这些id吗


KR,Joachim

您可以在KIE(jbpm)中执行此操作。启动节点和其他节点都是信号,并且有一个用于这些信号的api。它还接受过程变量作为参数。

每次按下前端的“编辑”按钮时,我都想发送相同的消息。在我的流程中,有两个不同的事件(一个是开始事件,另一个是流程中的正确事件)正在侦听该消息。这当然是可能的,但在显示的模型中不可能;)只需在流程中的两个不同步骤中使用相同的消息(以及某种返回消息等待状态的循环)。但是,执行令牌仍然必须等待消息事件,否则您将在“客户机”应用程序中收到错误。
POST localhost:8080/engine-rest/process-definition/key/<your-process-id>/start HTTP/1.1
{
    "variables": {
        "someVar": {
            "value": "hello", "type":"string"
        }
    },
    "businessKey" : "1234"
}
POST localhost:8080/engine-rest/message HTTP/1.1
{
  "messageName" : "MessageX",
  "businessKey" : "1234",
  "processVariables" : {
    "someNewVar" : {"value" : 5,  "type": "Integer"}
  }
}