2017-03-13 15 views
0

camunda-bpm-spring-boot-starter 1.1.0と一緒にCamunda 7.4バージョンをプロジェクトのほとんどで使用しています。CamundaのReceivetaskが期待どおりに動作しない

私たちはカンムダの流れの中で、別のシステムによって内部的に消費されるメッセージブローカーにメッセージを公開し、同じメッセージブローカーに新しいメッセージを再発行しようとするプロジェクトを持っています。次に、receiveTaskをトリガしてそのメッセージを受信し、さらに処理します。受信メッセージを聞くために、org.springframework.amqp.core.MessageListenerを使い、onMessage()メソッド内でreceiveTaskのメッセージの関係を定義します。しかし、我々はそうすることで、エラーの下に取得

org.camunda.bpm.engine.MismatchingMessageCorrelationException:いいえプロセス定義をまたは実行は我々が問題がどこにあるか理解しようとしている

パラメータと一致する:メッセージ「ReceiveAmsharedResponse」を関連付けることはできません?それは私たちが使用しているカミュのバージョンか、問題はreceiveTaskの使用にあります。 https://docs.camunda.org/manual/7.4/reference/bpmn20/tasks/receive-task/で定義されたすべてのアプローチを試しましたが、運はありませんでした。

メソッドcreateMessageCorrelationでは、上記のエラーが発生します。また、他の方法ではEventSubscription/ExecutionオブジェクトがnullのためNPEを取得します。

サンプルCamundaフローreceiveTaskの使い方は以下の通りです:

<bpmn2:receiveTask id="ReceiveTask" name="Receive Task" messageRef="Message_06nl07f"> 
    <bpmn2:incoming>SequenceFlow_xyz</bpmn2:incoming> 
    <bpmn2:outgoing>SequenceFlow_190m9nx</bpmn2:outgoing> 
</bpmn2:receiveTask> 
...... 
...... 
<bpmn2:message id="Message_06nl07f" name="Message" /> 

とサンプルメッセージコリレーションコード:

class XYZ implements MessageListener { 
onMessage() { 
    runtimeService.createMessageCorrelation("Message") 
       .processInstanceBusinessKey(resourceId) 
       .setVariable(ACTIVITY_RESULT, activityResult) 
       .correlate(); 
} 

任意の助けをいただければ幸いですか!

おかげで、ある特定の例外メッセージにについて Viswanath

答えて

1

org.camunda.bpm.engine.MismatchingMessageCorrelationException: Cannot correlate message 'ReceiveAmsharedResponse': No process definition or execution matches the parameters 

私はあなたが名前ReceiveAmsharedResponseとメッセージを関連付けることを前提としていますが、別の名前とメッセージを定義しましたあなたのReceiveTask。

次へのメッセージの定義を変更すると、動作するはずです:応答メッセージは、それが可能、非常に高速に送信された場合

O -- (M) -- (M) -- O 
    send receive 

:あなたのプロセスを仮定

<bpmn2:message id="Message_06nl07f" name="ReceiveAmsharedResponse" /> 
0

は次のようになりますonMessageおよびメッセージ相関は、メッセージ・イベント・サブスクリプションがデータベース内で永続化される前に実行されます。基本的には、送信タスクが実行されている間にメッセージが到着します。これを回避する

一つの方法は、イベントの送信と並行してメッセージのサブスクリプションを作成するには、次のようになります。

O -- + -- (M) -- + -- O 
    | send  | 
    `----(M) --´ 
     receive 
関連する問題