1

私たちは複数のアプリケーションを通信するためのアーキテクチャを設計しており、Mirth を (疑似) ESB として使用することにしました。私たちのプロセスでは、できるだけ早くユーザーにコントロールを返したいので、ユーザーがアクションを実行すると (たとえば、フォームに入力した後に [保存] ボタンを押す)、データベースに (必要な) 変更が加えられます。メッセージを別のシステムに送信する必要があります。ユーザーはメッセージが送信されるまで待つ必要がないため、アプリケーションはデータベースの変更が完了すると制御を返します。メッセージの作成はバックグラウンドで非同期的に行われます。しかし、どのアプローチに従うべきかはよくわかりません。

a) アプリで新しいスレッドを開始し、必要なすべてのデータを収集します (「プライマリ データ」から開始します。これは、すべての情報を検索できるいくつかのプライマリ キーです) HL7 メッセージを入力し、Mirth があるキューに送信します。聞いている。

b) 「プライマリ データ」を Mirth に送信し、それに HL7 メッセージ構成を委譲します。Mirth はデータベースに直接アクセスして必要なデータを収集するか、別のオプションで独自の REST/SOAP サービスを呼び出すことができます。

オプション B の場合、Mirth を呼び出す方法について疑問があります。 b.1) アプリがデータベースを変更し、プライマリ データをキューに書き込みます (分散トランザクション)。b.2) アプリはデータベースを変更し、Mirth が発行する SOAP または REST サービスを呼び出します。これは、Mirth が読み取るキューにメッセージを書き込むことだけです (アプリには分散トランザクションはありません)。

アプリでメッセージを作成し、Mirth をブローカーとしてのみ使用することは、Mirth を「誤用」していると主張する人もいます。反対に、Mirth からアプリ データベースにアクセスするのは非常に煩わしく、スキーマを認識してはならないという意見もあります。最後の選択肢として、HL7 に必要なすべての情報を返すアプリ サービスを Mirth から呼び出すことは、Mirth がサービスを呼び出した (そのデータをパラメーターとして渡す) ときにのみ、アプリから Mirth に「プライマリ データ」を送信するようなものです。

アドバイスありがとうございます。

4

2 に答える 2

0

(1)「専門家のアドバイス」に十分な情報がなく、技術的に正当化される単一の明確な回答がない

(2)オプション (a) は、特にHAPIのような安定したテスト済みライブラリを再利用する場合、最初のバージョンで実装するのが最も安価で最も簡単なように見えます

(3)設計では、エンタープライズ サービス バスブラック ボックス コンポーネントとして扱い、インターフェイスの設計と非同期メッセージ シーケンスの明確化に集中します。このように、サービス バスの内部、メッセージ ルーティング、およびキューイングの決定は、コーディング作業とアダプターの設計パターンに従うことで、デプロイ時まで延期できます。

(4)「誤用」、「押し付けがましい」、「好き」、「いい」などの言葉は、おそらく有効な観点を示していますが、測定可能で検証可能な決定基準やパフォーマンス指標を作成するものではなく、単独で使用するべきではありません。

(5)これは、意思決定プロセスを適用し、さまざまなオプションを重み付けして評価する適切な時期です。最小限の正式な入力として、プラス/マイナス/興味深いをお勧めします

(6)あなたの決定において、次の点を省略してはなりません。

  • データのプライバシーを確​​保する (一部の国では、健康状態は法律で保護されている私有財産です)
  • 耐障害性 (堅牢性、信頼性、例外処理)
  • メンテナンス コスト (それを維持する資格のある人員がいるかどうか、ソリューション自体を監視して自動修正できるかどうか、または誰かが何百万行ものログを手動で確認する必要があるかどうか)
  • 開発コスト (有資格者が既にいるか、再利用できるコード行数と、作成/デバッグする必要があるコード行数)

(7)私の答えが直接的に役に立たないことを申し訳ありません。選択、信頼できる安全なアプリケーション サーバーでメッセージを作成することです。


最後になりましたが、最初の意思決定者が時間の砂の中で迷子になったときに、いつでも仮定をテストして検証できるように、選択した理由を永久に記録します。

于 2014-11-12T10:40:47.800 に答える