保存创建的流程实例ID的正确方法是什么?

时间:2016-07-26 01:19:02

标签: bpmn camunda

使用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?这甚至可能吗?

2 个答案:

答案 0 :(得分:1)

这是常见的方式。您还可以使用public api通过流程定义键获取流程实例及其ID。

请参阅documentation中的以下示例:

varkw=None

对于您给出的示例,还有一种更简单的方法。可以通过运行时服务关联消息。

请参阅documenation

中的此示例
runtimeService.createProcessInstanceQuery()
    .processDefinitionKey("invoice")
    .list();

答案 1 :(得分:0)

您可以使用

runtimeService.createProcessInstanceQuery().list();

查询支持流畅的过滤条件,例如on process_key,variables,businessKey ...