2016-07-26 2 views
1

マイクロサービスのオーケストレーションのためのツールとしてCamundaを使用する。後で、messageEventReceived()でそれを使用することによって、特定のプロセスを続行するために必要なprocess_instances_idが生成されていることがわかります。コードは以下の通り:作成されたプロセスインスタンスIDを保存する正しい方法は何ですか?

processidをを保存した後、必要に応じて 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_idのリストを持っていますか?もしそうなら、どのように特定のプロセスインスタンスidを取得するだけで複合キーを与えることができますか?それも可能ですか?

答えて

0

あなたは、クエリがPROCESS_KEY、変数、businessKeyを上例えば、フィルタリングのための流暢な基準をサポートしてい

runtimeService.createProcessInstanceQuery().list(); 

を使用することができます...

1

それは一般的な方法です。パブリックAPIを使用して、プロセス定義キーを使用してプロセスインスタンスとそのIDを取得することもできます。

documentationから、次の例を参照してください:

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

ご与え例えば簡単な方法もあります。ランタイムサービスを介してメッセージを関連付けることは可能です。

documenationからこの例を参照してください:

runtimeService.createMessageCorrelation("messageName") 
    .processInstanceBusinessKey("AB-123") 
    .setVariable("payment_type", "creditCard") 
    .correlate(); 
関連する問題