Как правильно сохранить созданные идентификаторы экземпляров процесса?

Использование Camunda в качестве инструмента для оркестровки микросервисов. Позже я обнаружил, что сгенерированный process_instances_id необходим для продолжения определенного процесса, используя его в messageEventReceived (). Кодируйте следующим образом:

 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 уже есть список идентификаторов процессов в собственной базе данных? Если да, то как мне получить конкретный идентификатор экземпляра процесса, просто указав составной ключ (и)? Это вообще возможно?


person Carlos Galo Campos    schedule 26.07.2016    source источник


Ответы (2)


Это обычный способ. Вы также можете использовать общедоступный API, чтобы получить экземпляр процесса и его идентификатор через ключ определения процесса.

См. Следующий пример из документация:

runtimeService.createProcessInstanceQuery()
    .processDefinitionKey("invoice")
    .list();

Для вашего примера есть и более простой способ. Можно связать сообщение через службу времени выполнения.

См. Этот пример из документация:

runtimeService.createMessageCorrelation("messageName")
  .processInstanceBusinessKey("AB-123")
  .setVariable("payment_type", "creditCard")
  .correlate();
person Zelldon    schedule 26.07.2016

Вы можете использовать

runtimeService.createProcessInstanceQuery().list();

запрос поддерживает плавные критерии фильтрации, например, по process_key, переменным, businessKey ...

person Jan Galinski    schedule 26.07.2016