ネームスペースへのマッピングの追加
ネームスペースの構成の一部として、同じシステムまたは異なるシステムに存在する、他のデータベースのグローバル、ルーチン、およびクラス・パッケージをマップすることもできます。
これによって、さまざまな場所に存在するデータを、簡単に参照できるようになります。グローバル全体でも一部でもマップできます。これによって、データはディスクを簡単に行き来できます。
マップされたコンテンツの識別子がローカル・コンテンツ (パッケージ、クラス、グローバル、またはルーチン名) と同じ場合、ローカル・コンテンツではなくマップされたコンテンツが表示されます。そのため、マッピングが既存のコンテンツから切り離されないよう、マッピングはできる限り具体的にする必要があります。
コンテンツを命名したり、マッピングを作成する際は、不要な競合を避けるため、必ず "識別子のルールとガイドライン" に従ってください。
グローバル・マッピング
グローバルおよびグローバル・サブスクリプト・レベルで、ネームスペースに新規グローバルのマッピングを追加し、そのマッピングをそのネームスペースのグローバルに対する既定のデータベース・マッピングよりも優先させるようにできます。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、グローバルをマッピングするネームスペースの行で [グローバルマッピング] をクリックします。
-
[グローバルマッピング] ページで、[新規] をクリックします。
-
グローバルが配置されるデータベースの [グローバル・データベースの位置] を選択します。
-
[グローバル名] を入力します。ABC* のようにグローバル名の一部として * 文字を使用すると、複数のグローバルを指定できます。
-
[マップするグローバルサブスクリプト] を入力します。添え字参照は開き括弧で始まる必要があります。以下はその例です。
(1) ("A") (1):(5) ("A"):("Z") ("B",23,"m"):("E",5) (BEGIN):("X") ("Y"):(END)
Note:範囲 (例 : ("A"):("Z")) を指定する場合、指定された添え字の範囲は “~から、~以内” ではなく “~から、~未満” になります。つまり、定義された添え字範囲の下限は含まれますが、上限は含まれないことになります。例えば、Name (1):(10) の場合、Name (1) は含まれますが、Name (10) は含まれません。範囲の上限を除外することによって、添え字の範囲を Name ("a"):("b") のように指定して処理すると、Name ("aa") および Name ("aaaaa") を含め Name ("b") の直前までを有効範囲とする上限境界を指定できます。
予約語 BEGIN および END を使用して、使用可能な先頭および最後の添え字を示すことができますが、グローバルの添え字は個別にマッピングする必要があるため、添え字のあるグローバルで アスタリスク (*) を使用することはできません。
添え字レベルのマッピング (SLM) の範囲に関する詳細は、"Setting Up Global Mappings" を参照してください。
-
[詳細] をクリックすると、以下のオプションが表示されます。
-
[照合] を選択します。照合は新規添え字レベルのマッピング・グローバルのみに適用されます。
-
[ロックデータベース位置] を選択します。詳細は、"構成パラメータ・ファイル・リファレンス" の "[Map]" セクションの "Global" を参照してください。
-
-
[OK] をクリックします。
Note:新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
既存のグローバルのデータベースの場所を変更するマッピングを追加することもできますが、これは実際にはグローバルを移動させません。グローバルは元のデータベース内にあるものの、ネームスペースはそのグローバルを新しくマップされたデータベース内で見つけようとするため、結果としてグローバルはアクセスできなくなります。既存のグローバルの新規マッピングを成功させるには、グローバルを手動で再配置する必要があります。これは例えばターミナルや管理ポータルを使用して、グローバルを新規データベース上で作成し、元のデータベースから削除することで実行します。
ルーチン・マッピング
ルーチン・レベルでネームスペースにマッピングを追加すると、そのマッピングでそのネームスペースのルーチンに対する既定のデータベース・マッピングをオーバーライドできます。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、グローバルをマッピングするネームスペースの行で [ルーチンマッピング] をクリックします。
-
[ルーチンマッピング] ページで、[新規] をクリックします。
-
ルーチンが配置される [ルーチン・データベースの場所] のデータベースを選択します。
-
[ルーチン名] を入力します。このルーチンは、マッピングの時点で存在していなくてもかまいません (つまり、これから作成するルーチンの名前を使用できます)。
-
[OK] をクリックします。
Note:新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
例えば、前出のテスト・ネームスペース・マッピングを例にして考えてみましょう。airports データベース (FlightSchedule ネームスペース内) でスケジュール・ルーチン (例えば BOSZZairline) を作成し、TravelAgent ネームスペースのユーザに利用を許可する計画がある場合、[ルーチンマッピング] ページ (TravelAgent ネームスペース行) に移動して、[新規ルーチンマッピング] をクリックします。下図の [ルーチン・マッピング] ダイアログ・ボックスに情報を入力します。
1 つ以上のルーチンをマップするときには、それらのルーチンが必要とするすべてのコードとデータを必ず特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを確認します。マップされるルーチンは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
その他のルーチン
-
クラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
パッケージ・マッピング
クラス・パッケージ・マッピングを追加すると、特定のデータベースのパッケージにあるすべてのクラス (および、それらのクラスの生成されたすべてのルーチン) を、別のネームスペースから認識できるようになります。
-
[ネームスペース] ページに移動して ([システム管理]→[構成]→[システム構成]→[ネームスペース])、パッケージをマッピングするネームスペースの行で [パッケージマッピング] をクリックします。
-
[パッケージマッピング] ページで、[新規] をクリックします。
-
パッケージが配置される [パッケージデータベース位置] のデータベースを選択します。
-
[パッケージ名] を選択します。このパッケージは、マッピングの際に存在していなくてもかまいません (つまり、作成を計画しているパッケージの名前を使用できます)。新規パッケージ名を指定する手順は以下のとおりです。
-
[新規パッケージ] をクリックします。
-
[新規パッケージ名] テキスト・ボックスに名前を入力します。
-
-
[OK] をクリックします。
Note:新規のマッピング行の最初の列に表示される [>>] は、マッピングを編集可能で開いていることを示します。
-
マッピングを cpf ファイルに保存するには、[変更を保存] をクリックします。
パッケージの説明とそのマッピング手順については、"パッケージ・マッピング" を参照してください。
パッケージをマップするときには、そのパッケージ内のクラスが必要とするすべてのコードとデータを特定して、そのすべてのコードとデータがすべてのターゲット・ネームスペースで使用できることを必ず確認します。マップされるクラスは、以下の項目に依存している可能性があります。
-
インクルード・ファイル
-
ルーチン
-
その他のクラス
-
テーブル
-
グローバル
追加のルーチン、パッケージ、およびグローバル・マッピングを必要に応じて使用して、これらの項目がターゲット・ネームスペースで使用できるようにします。
InterSystems IRIS は、1 つの動作ですべてのネームスペースにわたって同じパッケージを使用できるようにする機能を備えています。
すべてのネームスペースへのマッピング
グローバル、ルーチン、およびパッケージは、特定のネームスペースにマッピングされるだけではなく、すべてのネームスペースにマッピングすることもできます。この形式のマッピングを有効にするには、以下を行います。
-
まず、%ALL という名前のネームスペースを作成します ("ネームスペースの作成/変更" を参照)。
Note:%ALL は、データのマッピング時以外は表示されません。つまり、これは現実のネームスペースではなく、すべてのネームスペースにデータをマッピングするための機能です。
-
次に、%ALL ネームスペースで目的のマッピングを行います ("ネームスペースへのグローバル、ルーチン、およびパッケージ・マッピングの追加" を参照)。
これらの %ALL マッピングは、すべてのネームスペースに適用されます。%ALL ネームスペースでマップされているリソースに対する、ネームスペース固有のマッピングを作成することはできません。%ALL のマッピングが、同じリソースへのすべてのネームスペース固有のマッピングをオーバーライドするためです。
%ALL のマッピングは、%SYS を含むすべてのネームスペースに適用されます。インスタンスが使用するルーチンまたはグローバルを上書きするマッピングを作成すると、特定の機能が壊れる可能性があります。
%ALL を使用する場合、マッピングはできる限り限定的にする必要があります。また、"識別子のルールとガイドライン" に厳格に従ってください。特に、"回避する必要があるグローバル変数名" にリストされたグローバルに対して %ALL のマッピングを作成しないでください。
%ALL ネームスペースに添え字レベルのマッピングを作成する場合、ルート・グローバルのマッピングが %DEFAULTDB に自動的に作成されます。%DEFAULTDB 変数は、任意のネームスペースの既定のデータベースを表します。