使用Camunda作为微服务编排的工具。稍后,我发现通过在messageEventReceived()中使用它来生成继续特定进程所必需的process_instances_id。代码如下:
val processid = getProcessID(key1, key2)
val runtimeService = processengine.getRuntimeService
val subscription = runtimeService.createEventSubscriptionQuery
.eventType("message")
.eventName(eventname)
.processInstanceId(executionid)
.singleResult
runtimeService.messageEventReceived(subscription.getEventName, subscription.getExecutionId)
此时保存 processid ,然后在必要时使用 getProcessID(...)函数从数据库中检索。这是对的吗?
camunda是否已在其自己的数据库中拥有process_ids列表?如果是这样,我如何只提供复合键来检索特定的流程实例ID?这甚至可能吗?
答案 0 :(得分:1)
这是常见的方式。您还可以使用public api通过流程定义键获取流程实例及其ID。
请参阅documentation中的以下示例:
varkw=None
对于您给出的示例,还有一种更简单的方法。可以通过运行时服务关联消息。
请参阅documenation:
中的此示例runtimeService.createProcessInstanceQuery()
.processDefinitionKey("invoice")
.list();
答案 1 :(得分:0)
您可以使用
runtimeService.createProcessInstanceQuery().list();
查询支持流畅的过滤条件,例如on process_key,variables,businessKey ...