2016-07-26 8 views
1

마이크로 서비스의 오케스트레이션을 위해 Camunda를 도구로 사용합니다. 나중에 messageEventReceived()에서 process_instances_id를 사용하여 특정 프로세스를 계속 진행하는 데 필요한 process_instances_id를 찾습니다. 코드는 다음과 같이작성된 프로세스 인스턴스 ID를 저장하는 올바른 방법은 무엇입니까?

프로세스 id 저장 한 후 필요할 때 getProcessID (...) 기능을 사용하여 데이터베이스에서 검색이 순간 중 하나로서
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) 

. 이게 맞습니까?

camunda는 이미 자체 데이터베이스에 process_ids 목록을 가지고 있습니까? 그렇다면 복합 키를 제공하는 특정 프로세스 인스턴스 ID를 어떻게 검색합니까? 그게 가능한가?

답변

0

당신은

runtimeService.createProcessInstanceQuery().list(); 

사용할 수있는 쿼리

1

그것은 일반적인 방법입니다 ... process_key, 변수, businessKey에에 예를 들어, 필터링 유창 기준을 지원합니다. 공개 API를 사용하여 프로세스 정의 키를 통해 프로세스 인스턴스와 그의 ID를 가져올 수도 있습니다.

documentation에서 다음의 예를 참조 : 주어진 예를 들어

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

도 간단한 방법이있다. 런타임 서비스를 통해 메시지를 상관시킬 수 있습니다.

runtimeService.createMessageCorrelation("messageName") 
    .processInstanceBusinessKey("AB-123") 
    .setVariable("payment_type", "creditCard") 
    .correlate(); 
:

documenation에서이 예제를 참조하십시오