2

データベースから xml ドキュメントを生成して BizTalk に渡す外部プログラムがあります。BizTalk でメッセージを追跡し、指定されたトランザクション ID を持つデータベースへの BizTalk カスタム パイプラインに情報を保存できるように、トランザクション ID または何か (DB 内のメッセージの ID) を作成することは可能ですか?

失敗したかどうかを保存したいのですが、この情報をキャッチして保存するカスタムパイプラインがあります。エラー処理を HAT に依存したくありません。

BizTalk 処理に関する情報を保存する必要がある外部プログラムから送信されたメッセージを BizTalk で追跡する最良の方法は何ですか? リンク/本のヒントも役に立ちます。ありがとう!

4

3 に答える 3

3

よくあることですが、アーキテクチャの観点からは、目的を達成する方法がいくつかあり、ソリューションがどのように見えるかは、実際のシナリオによって大きく異なります。

BizTalk 内で、特定のメッセージによって開始されたフローを追跡する最良の方法は、インターチェンジ ID です。

インターチェンジ ID は、着信メッセージの処理が進行するにつれて流れ、プロセス全体で 1 つのメッセージから別のメッセージにコピーされるコンテキスト プロパティです。技術的には、交換を開始した受信メッセージのメッセージ ID です。

「すべて」をグループ化するために単一の ID が必要な場合は、これがそれです。

シナリオで、これを呼び出し元に返すオプションがある場合、必要なもの (データベース内外) にリンクすることができます。

できないが、発信者がこの要求に割り当てた ID を渡すことができる場合は、交換 ID でデータベース レコードを更新して、2 つをリンクすることができます。

プロセスが進行するにつれて (成功したかどうかに関係なく)、BizTalk 内のインターチェンジ ID に常にアクセスできるため、いつでも戻ってそのレコードを更新できます。

于 2008-12-05T11:06:17.663 に答える
1

自分が何を望んでいるのかを真剣に考えるのは良いことかもしれません。おそらく、送信側の顧客/内部システムが何らかの方法でメッセージを追跡することを望んでいますが、ステータスはアプリケーションによって読み取られる必要がありますか?それとも、メッセージのステータスを必要とするのは一部のユーザーですか?

1 つの方法は、前述のように、相互交換 ID を (応答メッセージで) 関連付けることです。アプリケーションがステータスを照会できるサービスを設定するのは非常に困難ですが、メンテナンスも簡単です (プロセスの変更に関して)。私が作成したもので、メッセージが通過するすべてのインスタンスに関する情報を取得できますが、オーケストレーションやパイプラインの名前を理解できるものに変換できない可能性があるため、顧客を「賢く」することはできません。

もう 1 つのアプローチは、BAM を使用して、顧客がメッセージのステータスを見つけるために使用できる Web サイトを作成することです。たとえば、DHL などのほとんどの配送会社が持っているようにです。もう少し手間がかかるかもしれませんが、ニーズに合わせてソリューションをカスタマイズしたほうがよいと思います。

BAM を使用すると、BizTalk プロジェクトをまったく変更せずにデータを抽出できます。BAM-Excel でどのデータを抽出または集計する必要があるかを「ただ」分析し、それを BizTalk データベースにエクスポートし、有効にして追跡プロファイル エディターに接続します。

次に、重要なマイルストーンを Web サイトで顧客に示すことができます。上で説明したように簡単ではないことはわかっていますが、うまくいくでしょう:)

于 2008-12-25T20:16:31.360 に答える
0

メッセージを BizTalk に投稿すると、既定で SubmissionHandle が返されます。これは、受信ポートから利用できる Context プロパティです。次に、オーケストレーションでキャプチャし、エラーを元の送信に関連付けるために使用できます。

必要に応じて、双方向の受信 HTTP ポートを使用して、必要なものを呼び出し元のアプリケーションに送り返すことができます。メッセージですぐに戻るか、処理中に発生したことに基づいて成功または失敗を返すのを待つことができます。

幸運を

于 2008-12-03T19:14:11.157 に答える