現在のアーキテクチャの代替として、アプリケーションでのエンタープライズ統合パターンの使用を調査していますが、システムでの使用方法が不明な状況があります。(使用する EIP の実装に関係なく。)
私たちが持っているのは、ケースごとにさまざまな種類のメッセージを受信するシステムです (メッセージ タイプ A、B (MT-A、MT-B) とマークします)。メッセージごとに、Web サービスやファイル プロトコルの種類などを通じて、さまざまな外部システム (約 15 のシステム) を呼び出しています。このデータはすべてドメイン モデルに変換され、データベースに保存されます (正規ドメイン モデルとしましょう)。 (CDM))。
最初の問題は、メッセージ (MT-A) を受信したときに、メッセージのデータを使用して Web サービスを呼び出したいことです。次のいくつかの手順で、応答を処理します (変換を行い、DB に保存するなど)。しかし、その後、元のメッセージの処理を続行し、そこからのデータを使用して他のシステムを呼び出したいと考えています。しかし、プロセス フローのメッセージ ペイロードとして、Web サービスからの応答があります。外部システムを呼び出す前に、最初に使用していた元のメッセージを取り戻すための最良の方法は何ですか? (これにはメッセージストアを使用する必要があります。また、元のメッセージをヘッダーに入れるための非常に醜い回避策としてどこかで見ました。)
いくつかのメッセージを受け取ったとしましょう。それらからのデータと外部システムからのデータが現在データベース/CDM にあります。次に、他の種類のシステムを呼び出しているメッセージ MT-B を受け取りますが、呼び出しには、受信したメッセージからのデータと、前のプロセスからのデータベース/CDM からのデータが必要です。では、そのデータをどのように取得すればよいでしょうか。だから私は2つの解決策を考えていました:
2.1. 最初のステップとして、受信したメッセージを CDM に統合すると、プロセス内のメッセージのペイロードが CDM 全体になるため、必要なものはすべて手元にあります。(これはポイント1も解決します。)
2.2. このメッセージが関連するヘッダーにケース ID を入れます。CDM からのデータが必要な場合に備えて、外部システムを呼び出しているサービスまたはエンドポイント内でクエリを実行します。
したがって、これらのソリューションのどれがそのような状況に適しているか、おそらく他のソリューションが適しています。あるいは、私は ESB を明確に見ていないか、理解していないだけかもしれません。私はこのトピックにまったく慣れていません。注: ここでは、Canonical Domain Model を、必要なすべてのデータがあるデータベースに格納されたアプリケーションの一般的なドメイン モデルとして理解しています。(メッセージからも外部システム)
ありがとうございました。