ITK Switchboard の設定
ITK Switchboard は、ITK 準拠のシステムを最小限の統合作業で相互運用することができるデータ駆動型の統合ソリューションです。
概要
ITK Switchboard は、メッセージをルーティングする特殊な相互運用プロダクションです。次の図は、その基本的なアーキテクチャを示しています。
このプロダクションには、次の 2 種類のビジネス・ホストが含まれます。
-
ITK リスナ。各リスナは、送信元のアプリケーションから SOAP メッセージを受信するビジネス・サービスです。通常、ITK Switchboard には 2 つのリスナが含まれています。1 つは、プロダクションの外部にあるアプリケーションを処理するもので、もう 1 つは、プロダクション内で生成されたメッセージを処理するものです。
リスナごとに 1 つのポートが使用され、1 つのセキュリティ・ポリシーがあります。
-
ITK コンシューマ。各コンシューマは、1 つの外部アプリケーションに SOAP メッセージを送信するビジネス・オペレーションです。
ITK Switchboard では、外部システムを表す総称としてシステムまたはアプリケーションという用語を使用します。ITK Switchboard を構成する際、Switchboard が使用するすべてのシステムを宣言します。システムの中には、Switchboard との間でメッセージの送信と受信の両方を行うことができるものもあります。つまり、一部のシステムについては、対応するリスナと対応するコンシューマの両方がプロダクションに含まれます。
ITK Switchboard プロダクションは、メッセージをルーティングするためのデータ駆動型の内部ロジックを提供します。このためにビジネス・ホストを使用しません。ルーティング・ロジックでは、Switchboard を構成する際に定義するサブスクリプション・ルールと配信ルールが使用されます。
リスナとコンシューマは、SOAP を介して次のように外部システムと通信します。
-
SOAP メッセージは、Web Services-Addressing (WS-Addressing) 標準と Web Service-Security (WS-Security) 標準に従います。
WS-Addressing ヘッダ要素は、メッセージの UUID、対応する SOAP アクション、メッセージの送信者、およびメッセージの指定受信者の確認を示します。
WS-Security ヘッダ要素には、署名されたタイムスタンプ (有効期限付き) が含まれます。Switchboard は、送信元のアプリケーションの公開鍵を使用して、メッセージが本物であることを確認することができます。SOAP 本文全体に署名して暗号化することもできます。
SSL/TLS も使用可能です。
-
SOAP 本文には任意のコンテンツを含めることができます。コンテンツは、SOAP アクションと照合されます。
特定のコンテキストで特定の SOAP アクションを必要とするように Switchboard を構成します。Switchboard は、次のシステムを使用して、ルーティングするさまざまなメッセージを処理します。
-
Switchboard は、UK NHS CfH ITK サービスと一致する一連のサービスを提供します。このドキュメントでは、これらを Web サービスやビジネス・サービスと区別するために、ITK サービスという語句を使用します。
各 ITK サービスは SOAP アクションに対応します。
各 ITK サービスには、Switchboard 内で使用される短いサービス名があります。また、受信要求に対する応答として必要とされる動作を示す動作タイプもあります。さらに、ITK サービスでは特定の要求メッセージ・クラスと応答メッセージ・クラスが使用されます。
-
リスナを構成する際、各リスナが使用する ITK サービスを指定します。
-
コンシューマを構成する際、各コンシューマが使用する ITK サービスを指定します。
-
サブスクリプション・ルールと配信ルールを定義する際、各ルールで使用される ITK サービスを指定します。
その他の詳細は、クラス・リファレンスの EnsLib.ITK パッケージ内のクラスを参照してください。
はじめに
ITK Switchboard プロダクションの作成を開始する手順は次のとおりです。
-
管理ポータルを使用して、新しい相互運用プロダクション対応ネームスペースを作成します。
-
次の Web ページにアクセスします。
http://localhost:port-number/csp/itk-namespace/EnsLib.ITK.Setup.UI.RegistryViewer.cls
localhost は、ITK が実行されているサーバです。port-number は Web サーバ・ポートです。itk-namespace は、作成したネームスペースです。
このページは、標準のプロダクション構成ページの特殊なバージョンです。上部にある 2 つのボタンを使用すると、送信者とコンシューマのどちらを表示するかを制御できます。
ボタン 説明 システム、送信者、およびリスナを表示するには、このボタンをクリックします。 コンシューマ、サブスクリプション・ルール、および配信ルールを表示するには、このボタンをクリックします。 -
[新規作成] をクリックします。
-
次の情報を指定します。
-
[パッケージ名] — プロダクション・クラスを格納するパッケージ。
-
[プロダクション名] — プロダクション・クラスの名前。
-
[プロダクションの説明] — プロダクションの説明 (オプション)。
-
-
[OK] をクリックします。
ITK サービスの定義
前述のように、Switchboard は、UK NHS CfH ITK サービスと一致する一連の ITK サービスを提供します。これらのサービスの構成データをインターシステムズのサポート窓口Opens in a new tabから入手し、指示に従ってロードします。
通常はこのデータを編集しませんが、編集した場合、ソリューションは ITK に準拠しなくなることがあります。このデータを編集する場合は、各 ITK サービスについて次の詳細を指定します。
必須項目。ITK サービスの一意の内部名。通常は短い名前です。SOAP アクションの短い形式を使用すると便利な場合があります。例 : ConfirmMessageReceipt-v1-0
必須項目。一意の SOAP アクション。例 : urn:nhs-itk:201005:ConfirmMessageReceipt-v1-0
必須項目。以下のいずれかを選択します。
-
[要求-応答] — 送信者が要求を送信し、要求した情報を含む応答を受信します。
応答は同期でも非同期でもかまいません。
-
[ポスト] — 送信者が要求を送信し、単純な OK 応答を受信します。送信者は基本的に、これを Fire and Forget 操作として扱います。送信者は、Switchboard に対する送信元のアプリケーションである場合もあれば、コンシューミング・アプリケーションにメッセージを送信する Switchboard 自体である場合もあります。
-
[確認応答] — [ポスト] と同様ですが、技術およびビジネス上の非同期の確認応答が含まれます。
-
[キュー・コレクション] — 送信者がメッセージをキューに送信し、コンシューマがリアルタイムではなく後でメッセージを取得します。この動作タイプは、ネットワーク接続が断続的なアプリケーションに関連付けられたコンシューマに便利です。例えば、ハンドヘルド・デバイスで実行されるアプリケーションなどです。
-
[フォルト・ハンドラ] — 非同期フォルトを受信するために使用されるサービス。
-
[非同期応答ハンドラ] — 非同期応答を受信するために使用されるサービス。
Switchboard は、同期および非同期通信の処理を自動的に仲介します。
この値は変更しないでください。
この値は変更しないでください。
この値は変更しないでください。
この値は変更しないでください。
システムの定義
各システムを定義するには、基本の Switchboard プロダクションを表示し、次の手順を実行します。
-
[送信者を表示] ボタン をクリックします。
-
[システム] の横にあるプラス記号 (+) をクリックします。
-
以下の詳細を指定します。
アプリケーション名必須項目。システムの一意の名前。
システムごとに、関連するコンシューマ、リスナ、またはその両方を指定できます。これらの場合に適切な名前を選択する方法については、後述の説明を参照してください。
アプリケーション・ルータコンテンツベースのルーティングについてメッセージのコンテンツをコンシューマにマップするルールを含むビジネス・ルールの名前を指定します。
-
[OK] をクリックします。
コンシューマのシステム名
システムがコンシューマを表す場合、調整プロセスでルーティング・ルールが検証され、そのシステムに必要なビジネス・オペレーションが作成されます。システムの名前はビジネス・オペレーションの名前になります。
純粋なコンシューマの場合、システムの名前はそれほど重要ではなく、内部のみで使用されます。ただし、同じシステムがキュー・コレクション機能を使用する (つまり、要求を送信してメッセージを取得する) 場合や、非同期的に応答する (つまり、応答を送信する) 場合、システムはリスナでもあります。次の見出しを参照してください。
リスナのシステム名
ITK Switchboard ではビジネス・サービスの数に制限があり、ポート番号とセキュリティ構成によって異なります。内部システム用にビジネス・サービスが 1 つあり、外部システム用にもう 1 つあるというのが一般的です。
リスナの場合、システムの名前が SOAP ヘッダの「From」値と一致している必要があります。これにより、複数のシステムが同じビジネス・サービスにメッセージを送信できると共に、Switchboard は送信元のシステムに基づいてメッセージを簡単にルーティングできます。
リスナの定義
各リスナを定義するには、基本の Switchboard プロダクションを表示し、次の手順を実行します。
-
[送信者を表示] ボタン をクリックします。
-
[リスナ] の横にあるプラス記号 (+) をクリックします。
-
リスナの名前を指定します。これはビジネス・サービスです。
-
[OK] をクリックします。
-
このリスナに送信する送信者に対応する円をクリックします。
左マウス・ボタンを押したまま、そこからリスナまで線をドラッグします。この操作によりダイアログ・ボックスが表示され、構成の詳細を指定できます。
-
この送信者からの必要な各サービスについて、次の手順を実行します。
-
[ウェブサービス] ドロップダウン・リストからサービスを選択します。
-
[呼び出しパターン] について次のいずれかの値を選択します。
-
非同期
-
同期
-
導出
このオプションは、サービスが要求/応答タイプである場合にのみ関係します。
-
-
[ペイロードを検証] を無視します。
-
[保存] をクリックします。
-
-
サービスの指定が完了したら、[OK] をクリックします。
コンシューマの定義
コンシューマを定義するには、基本の Switchboard プロダクションを表示し、次の手順を実行します。
-
[コンシューマを表示] ボタン をクリックします。
-
[コンシューマ] の横にあるプラス記号 (+) をクリックします。
-
[アプリケーション名] について、コンシューマ名を指定します。
-
[OK] をクリックします。
新しいコンシューマが選択されていることを確認します。
-
[設定] タブで、[コンシューマ設定] セクションを展開します。
-
[サービス] の横にある検索ボタンをクリックします。
-
この送信者からの必要な各サービスについて、次の手順を実行します。
-
[ウェブサービス] ドロップダウン・リストからサービスを選択します。
-
[呼び出しパターン] について次のいずれかの値を選択します。
-
非同期
-
同期
このオプションは、サービスが要求/応答タイプである場合にのみ関係します。
-
-
[部分論理エンドポイント] について、このコンシューマで使用される Web サービスのベース・エンドポイントに追加する論理パスを指定します。ベース・エンドポイントは、ビジネス・オペレーションで (後ほど) 構成します。
-
[部分物理エンドポイント] について、ビジネス・オペレーションで (後ほど) 構成するベース・エンドポイントに追加するオプションの物理パスを指定します。
-
[保存] をクリックします。
-
-
サービスの指定が完了したら、[OK] をクリックします。
サブスクリプション・ルールの定義
サブスクリプション・ルールによって、指定されたサービスのすべてのメッセージが、指定された送信者から特定のコンシューマに送信されます。
サブスクリプション・ルールを定義するには、基本の Switchboard プロダクションを表示し、次の手順を実行します。
-
[コンシューマを表示] ボタン をクリックします。
-
このコンシューマに送信する送信者に対応する円をクリックします。
左マウス・ボタンを押したまま、そこからコンシューマまで線をドラッグします。この操作によりダイアログ・ボックスが表示され、サブスクリプション・ルールの構成の詳細を指定できます。
-
サービスを選択し、[OK] をクリックします。
同じアプリケーションからの要求/応答サービスについて複数のサブスクライバを設定すると、エラーが発生します。
配信ルールの定義
配信ルールは、論理アドレスを指定できる配信エンベロープでラップされた要求に適用されます。 配信ルールには、アドレスによって指定されたシステムにペイロードをディスパッチする方法が記述されます。
配信ルールを定義するには、基本の Switchboard プロダクションを表示し、次の手順を実行します。
-
[コンシューマを表示] ボタン をクリックします。
-
コンシューマを選択します。
-
[設定] タブで、[コンシューマ設定] セクションを展開します。
-
[配信ルール] の横にある検索ボタンをクリックします。
-
このコンシューマの各配信ルールについて、次の手順を実行します。
-
[ウェブサービス] ドロップダウン・リストからサービスを選択します。
-
[配信モード] について次のいずれかの値を選択します。
-
特権あり
-
特権なし
このオプションは、配信ルールを有効にするために必要なモードを表します。配信モードは、ビジネス・サービスによって設定されます。
特権ありは、特権を保持して操作している場合にのみ、Switchboard がこのサービスをこのコンポーネントに提供するようにすることを意味します。これを検討する最適な方法は、データ・センタのエッジにある ITK Switchboard を考えることです。例えば、データ・センタの外にある外部システムと通信できるとします。ただし、内部システムのいずれかからのメッセージを処理する場合にのみ (これが特権を保持している状態です)、これらの外部システムと通信するようにします。
一方、外部システムのいずれかからメッセージを受信する場合、その外部システムは他の外部システムと既に通信していると考えられます。このような場合は、メッセージを中継しないようにする必要があります (つまり、特権を保持しないで操作している場合は、これらのシステムにメッセージを送信しません)。
-
-
[論理アドレス] について、SOAP メッセージの配信エンベロープ内のアドレスを指定します。
-
[保存] をクリックします。
-
-
ルールの指定が完了したら、[OK] をクリックします。
ITK Switchboard プロダクションの調整
調整プロセスではルーティング・ルールが検証され、必要なビジネス・サービスとビジネス・オペレーションが作成されます。
プロダクションを調整するには、管理ポータルでプロダクション構成を表示し、[調整] ボタンをクリックします。
ITK Switchboard プロダクションの構成の完了
調整を実行したら、ビジネス・サービスとビジネス・オペレーションの設定を指定して構成を完了します。
ビジネス・サービス (リスナ) の構成
各リスナは EnsLib.ITK.Framework.Service.SOAPRequestHandlerOpens in a new tab のインスタンスであり、アダプタ・クラス EnsLib.SOAP.InboundAdapterOpens in a new tab を使用します。
各リスナについて、次の設定を指定します。
このビジネス・サービスで受信する SOAP メッセージについて、SOAP ヘッダの To 要素にあるものと同じ値を指定します。
この設定は、配信ルールを使用して受信配信エンベロープ内のアドレスを処理する場合にのみ適用されます。サービスが内部アプリケーションから受信する場合、値 authoritatively を使用します。サービスが外部アプリケーションから受信する場合、値 non-authoritatively を使用します。
フォルトに使用する語彙。ITK では、値 2.16.840.1.113883.2.1.3.2.4.17.268 を使用します。
ユーザのパスワード。呼び出し側がこのシステムの登録ユーザであることを確認してください。
指定されたデジタル署名によって署名する必要があるヘッダの部分を示します。
本文が暗号化されていることをこのサービスが確認する必要がある場合はオンにします。安全でない接続を介して外部システムから受信する場合に有用です。通常は、メッセージを暗号化しないでください。
ITKMEssageRouter を指定します。
ITK がリッスンするポート番号を指定します。
"プロダクションの構成" に記載されているその他の設定を指定します。
ビジネス・オペレーション (コンシューマ) の構成
各コンシューマは EnsLib.ITK.Framework.Operation.SOAPOperationOpens in a new tab のインスタンスであり、アダプタ・クラス EnsLib.SOAP.OutboundAdapterOpens in a new tab を使用します。
各コンシューマについて、次の設定を指定します。
Web サービスのベースとなる論理エンドポイントを指定します。実際のエンドポイントは、このエンドポイントに、コンシューマ・レジストリで指定した部分論理エンドポイントを追加したものです。
送信元のアプリケーションの名前。通常はコンシューマの名前です。
メッセージに署名しない場合 ([ヘッダに署名] の設定を参照)、送信メッセージの username フィールドに格納するユーザ名を指定します。
フォルトに使用する語彙。ITK では、値 2.16.840.1.113883.2.1.3.2.4.17.268 を使用します。
true に設定します。
ビジネス・オペレーションのオプションのスロットルを指定します。この値は要求間の秒数です。
標準の ITK 署名レベルは 2 で、タイムスタンプに署名します。信頼された環境では、0 を使用できます。これは、メッセージに署名する必要がないことを意味します。必要に応じて、より大きい値を使用してください。詳細は、この設定のツール・ヒントを参照してください。
要求の署名に使用する、事前にインストールされている X509 証明書内のユーザ名。"Web サービスの保護" の “設定およびその他の一般的なアクティビティ” の章の説明に従って、この証明書を InterSystems IRIS にロードします。
要求の本文を暗号化する場合、128 ビットと 256 ビットのどちらの暗号化を使用するかを決定します。暗号化しない場合は、[なし] のままにします。
X509CertificationSign と同じですが、暗号化に関する設定です。使用する場合は通常、署名証明書と同じです。正当な理由がない限り、暗号化しないでください。
このコンシューマが自身が選択した時間にメッセージを収集する場合、true に設定します。この場合、ビジネス・オペレーションによってメッセージが他に保存されます。
サブスクリプション・プルを使用する場合にコンシューマがその後要求できるメッセージの最大数を指定します。上限を設定しない場合は –1 を指定します。
"プロダクションの構成" に記載されているその他の設定を指定します。