2017-07-04 4 views
0

私は、送信プロセスによって送信されるメッセージを待っている中間のメッセージイベントを持つ受信プロセスを持っています。カンダのメッセージと共に変数を送信

私はすでに送信プロセスで、次のデリゲートコードによって、中間メッセージイベントをトリガすることができる午前:

RuntimeService runtimeService = ProcessEngines 
     .getDefaultProcessEngine() 
     .getRuntimeService(); 
MessageCorrelationResult result = runtimeService 
     .createMessageCorrelation("my-message-name") 
     .setVariable("customer", customer) //trigger instance where customer matches 
     .correlateWithResult(); 

私の質問は次のとおりです。どのように私は受信プロセスに送信プロセスから変数を送信することができますメッセージと組み合わせて?ベストプラクティスはありますか?

これは私がこれまで試したhaved何をされています

// Set the variable after the correlation 
runtimeService.setVariable(result.getProcessInstance().getId(), 
    "variableToSend", variableToSend); 

私はこのようなJavaDelegateで変数を取得しよう:興味深いことに

// Access the sent variable 
Double sendByOtherProcess = (Double) delegate.getVariable("variableToSend"); 
// sendByOtherProcess == null 

、でvariableToSendを検索することが可能です受信プロセスでJavaScriptを介して埋め込まれたフォーム。

同期/非同期動作のためisseかもしれないと読んでいますか?

助けてください。

+0

すでにMessageCorrelationBuilderで.setVariableを使用しています。 https://docs.camunda.org/javadoc/camunda-bpm-platform/7.7/org/camunda/bpm/engine/runtime/MessageCorrelationBuilder.html – Zelldon

+0

はい、ありがとうございます!私は '.setVariable'と' .processInstanceVariableEquals'を入れ替えました。あなたが答えを提出すれば私はそれを受け入れるでしょう。次回は慎重に文書を読むことを約束します;) – moa

答えて

0

すでにMessageCorrelationBuilderに変数を設定しています(MessageCorrelationBuilder#setVariable)。詳細については、JavaDocまたはMessageCorrelationBuilderを参照してください。

上記のように、メッセージを指定された変数と一致するプロセスに関連付ける必要があります。そのためには#processInstanceVariableEqualsメソッドを使用する必要があります。

関連する問題