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"}
}
}