取引相手と協調しながら動作するアプリケーションについて説明します。取引相手は前項と同様にひとつです。なお、取引相手と協調して動作する場合には、事前に取引の進行についての綿密な取り決めが必要となります。
アプリケーションは以下の前提で動作するものとします。
それぞれの取引データは1通のebXMLメッセージで完結する。
ConversationIdはフェーズ1からフェーズ8まで同一のものを使用する。
以下に取引の流れを示します。また、取引の概念図を示します。
フェーズ | Party A | Party B(表記を省略) |
---|---|---|
1 | 見積り依頼を送信 | - |
2 | - | 見積もりデータを受信 |
3 | - | 見積もり結果を送信 |
4 | 見積もり結果を受信 | - |
5 | 発注データを送信 | - |
6 | - | 発注データを受信 |
7 | - | 発注受付受領書を送信 |
8 | 発注受付受領書を受信。取引完了 | - |
フェーズ3のpushではフェーズ2で受信したイベントデータに設定されていたConversatinIdを使用します。しかし、ConversationIdの値は送信ebMS単位で管理されますので、同じConversationIdを使用するこの場合でも、ConversationFlagは開始を表すSTARTを指定してください。この場面でCONTINUEを指定すると、ebMSの送信処理時にエラーとなります。同じConversationIdの文字列でも、PartyA→PartyBで使用するConversationIdと、PartyB→PartyAで使用するConversationIdとでは別のものとみなされます。
PartyAとPartyBが同一サーバ上にある場合はフェーズ3のPartyB側からのpushの際に同一ConversationIdを使用することはできません。ebMSの送信処理時にエラーとなります。