マルチテナンシーの管理

この記事には、以下のトピックが含まれています。
casm173
この記事には、以下のトピックが含まれています。
新しいテナントを初期化する方法
サービス プロバイダとして、カテゴリ、データ パーティション、チケット テンプレートなどの新規テナント用データの標準セットの作成が必要になる場合があります。 これを実行するには、pdm_extract または pdm_tenant_extract を使用して、必要なデータが含まれる pdm_userload 入力ファイルを作成します。
必要に応じて、テキスト エディタでこのファイルを編集できます。 続いて、pdm_userload を引数 -t を指定して使用し、入力ファイルをデータベースにロードして、新しいテナントにテナント列を設定できます。
新しいテナントを初期化するには、以下の手順に従います。
  1. ca_tenant テーブル内にテナントを作成します。 オンラインの[テナントの作成]ページを使用します。
  2. 前述のとおりに標準データをロードします。
    pdm_userload -t を使用して、テナントを設定します。
  3. 新しいテナントの連絡先レコードを作成します。
    外部データをロードするか、pdm_userload -t を使用します。
既存のテナント実装をテナント オブジェクトに変換する方法
すでにデータ パーティションおよび別の CA SDM オブジェクトを使用して、マルチテナンシーで提供されるようになった機能の一部を実現している場合があります。 実装をマルチテナンシーに変換する場合、最初に踏むべき手順は、以前使用していたオブジェクト内のデータを新しいテナント オブジェクトにマップすることです。 以前使用していたオブジェクトを、「
事前テナント
」オブジェクトと呼びます。 このような要件を持つサイトの大部分では、org(組織)オブジェクトがテナント前オブジェクトとなりますが、どのテナント前オブジェクトであっても以下のアプローチを使用できます。
  1. 事前テナント オブジェクトが org でない場合、その Majic オブジェクト定義によって TENANT_REQUIRED が指定されていることを確認します。
  2. 以下の場所にある buildtenant.xml ファイル内の事前テナント オブジェクトから新しいテナント オブジェクトへの属性マッピングを確認します。
    $NX_ROOT/samples/multi_tenancy
    buildtenant.xml を $NX_ROOT/site/cfg ディレクトリにコピーする必要があります。 また、buildtenant.xsd は buildtenant.xml と同じディレクトリにある必要があります。そうでない場合、エラーが表示されます。 製品のインストール時に buildtenant.xsd は $NX_ROOT/site/cfg に格納されるため、このファイルをコピーする必要はありません。
    デフォルト設定は org をベースとしています。 事前テナント オブジェクトが org でない場合は、ファイルを編集する必要があります。
  3. pdm_buildtenant -f を実行します
    事前テナント オブジェクト別に新しいテナントが作成され、事前テナント オブジェクト内のテナント属性が新しいテナントを参照するように設定されます。
  4. CA SDM にログインし、テナント オブジェクトと事前テナント オブジェクトの両方を確認します。
    単一のテナント オブジェクトに複数の事前テナント オブジェクトをマップする必要がある場合もあります。 このような場合は、影響を受ける事前テナント オブジェクトを手動で更新してから、使用しないテナントを削除または非アクティブ化します。
テーブル内のテナント属性に値を入力する方法
テーブル全体またはテーブルのサブセットのテナント属性に値を入力するには、
pdm_settenant
ユーティリティを使用します。 このユーティリティでは、設定ファイルを使用して、テナント化するオブジェクトを選択し、オブジェクトのテナントを取得する場所を指定します。 テナントを明示的に指定するか、テナント化するオブジェクト内の SREL リファレンスからテナントを取得するよう指定します。
pdm_settenant を使用して、テーブル内のテナント属性に値を入力するには、以下の手順に従います。
  1. 設定ファイルを作成または編集します。
    設定ファイルを通して、テナント属性を設定する行を選択し、テナント属性の値のソースを指定します。 本製品では、以下の場所に、サンプルの settenant.xml ファイルを用意しています。
    $NX_ROOT/samples/multi_tenancy
    サンプルの settenant.xml ファイルを編集することも、ファイルを作成して $NX_ROOT/site/cfg ディレクトリにコピーすることも可能です。 また、settenant.xsd は settenant.xml と同じディレクトリにある必要があります。そうでない場合、エラーが表示されます。 製品のインストール時に settenant.xsd は $NX_ROOT/site/cfg に格納されるため、このファイルをコピーする必要はありません。
  2. pdm_settenant -f [configuration file] -r を実行します。
    pdm_settenant ユーティリティが設定ファイルを読み取り、設定ファイルで定義されている各ルールを順次処理します。
    このユーティリティを使用して、まず cnt (連絡先)オブジェクト内のテナント属性に値を入力し、次に cnt オブジェクトをソースとして使用して、ほかのオブジェクトにテナントを入力することをお勧めします。
    cnt オブジェクトが正常にテナント化された後、ほかのテーブルにテナントを設定するためのベースとして使用するには、以下の手順に従います。
    1. 設定ファイル内で type="SREL" を使用して TenantRule を指定し、cnt オブジェクトを参照する属性がほかのテーブル内にテナントを設定するようにします。
    2. (オプション) type="Name" < tenantname > を使用して TenantRule を指定し、テーブルの一部にテナントを明示的に指定します。
  3. 新しい設定ファイルで pdm_settenant を実行します。
  4. 必要に応じて、pdm_settenant を再実行します。
    オブジェクトのテナント列に値を入力した後、そのオブジェクトへの SREL を TenantRule のベースとして使用し、ほかのオブジェクトにテナントを設定できます。
例: SREL タイプ構文
SREL タイプ構文では、テナント値が指定されていない cnt オブジェクトをチェックし、リンクされた組織オブジェクトからのテナント値を使用します。
<Object name="cnt"> <TenantRule type="SREL">organization</TenantRule> <Where>tenant is null</Where> </Object>
例: 名前タイプ構文
名前タイプ構文では、テナント値が指定されていない org オブジェクトをチェックし、そのテナント フィールドに実際のテナント オブジェクトの名前を設定します。
<Object name="org"> <TenantRule type="Name">Tenant A</TenantRule> <Where>tenant is null</Where> </Object>
テナント階層
テナント階層
は、ユーザがテナントに
親テナント
を割り当てる場合、システムにより作成または変更される構造化されたテナント グループです。 テナントは親の
サブテナント
になり、その階層においてより高いテナント(存在する場合)になります。
サービス プロバイダは複数の独立した階層を作成することも、何も作成しないことも可能です。 テナント階層のあるシステム内にも、スタンドアロン テナントを定義できます。
通常、サブテナントは
スーパーテナント
内の一部分を表します。 サブテナントは、自身のビジネス ルールおよびデータを持つことができます。また、スーパーテナントのデータはサブテナントに読み取り専用方式で自動的に「プッシュ」されます。
CA SDM がサポートするテナント階層の深さは無制限です。 ただし、
サービス プロバイダ
は、テナントの総数およびテナント階層の深さ(デフォルトは 4 レベル)を制限できます。 また、サービス プロバイダは、各テナントがサブテナントを持つことができるかどうかを決定します。
サービス プロバイダはテナント階層に参加できますが、必須ではありません。 サービス プロバイダが親テナントを持つことはできません。
サブテナントの作成
サブテナントを使用すると、組織目的およびデータ共有目的のテナント階層を構築して変更することができます。 テナントをテナント階層に配置するには、親テナントをそれに割り当てます。
以下の手順に従います。
  1. [管理]タブで、[セキュリティと役割の管理]-[テナント]を選択します。
    [セキュリティと役割の管理]-[テナント]オプションは、マルチテナンシーが有効になっている場合にのみ使用できます。
  2. 編集する既存のテナントをクリックするか、または[新規作成]をクリックします。
    必要なデータまたは変更を入力します。
  3. 親テナントを選択します。
    [親テナント]ドロップダウンには、サブテナントを持つことを許可されたテナントのみが表示されます。
  4. [保存]をクリックします。
    テナントは親テナントのサブテナントです。
    テナントがサブテナントである場合は、そのテナントは親テナントのサブテナント グループに属し、そのサブテナントのサブテナントがある場合などでも同様です。 親テナントはサブテナントのスーパーテナント グループに加入し、そのスーパーテナントのスーパーテナントがある場合などでも同様です。 各テナントは、もう 1 つの関連するテナント グループに加入します。
システム保守テナント グループ
CA SDM は、テナント階層の各テナント(
テナント
はテナント名)で 3 つのテナント グループを自動的に生成して保守します。
  • tenant
    _subtenants(テナント、その子テナント、およびそれらの下位のテナント)
  • tenant
    _supertenants(テナント、その親テナント、およびその上位のスーパーテナント)
  • tenant
    _relatedtenants(単一の階層全体)
システム保守テナント グループは、ユーザ定義テナント グループと同じように使用できます。 ただし、変更できるのはそれらの名前および説明のみです。
テナント データの割り当て
既存のオブジェクトのテナントは Web インターフェースから変更できないため、CA SDM では既存のオブジェクトの詳細ページの表示バージョンと編集バージョンのどちらでもテナントが同じ形式で表示されます。
テナントされたオブジェクトを編集するとき、編集ページのドロップダウン リストは、ベース オブジェクトやテナント階層においてその上にあるすべてのオブジェクトと同じテナントにより所有されるパブリックな値、またはサービス プロバイダによって所有されるパブリックな値(ドロップダウン リストが SERVICE_PROVIDER_ELIGIBLE 属性に適用される場合)に自動的に限定されます。
詳細ページでは、テナントされたオブジェクトに関連付けられたルックアップ フィールドに変更はありません。 複数のテナントにアクセスできるユーザがテナント化されたテーブルへのルックアップ リンクをクリックした場合、Web エンジンによってルックアップは属性に適した値に自動的に制限され、バナー メッセージがポップアップ検索またはリスト ページに表示されます。
テナント制限は検索フィルタに表示されず、ユーザはそれらを変更できません。
テナントが必要なオブジェクトの作成を要求すると、テナントはセレクタ(ルックアップまたはドロップダウン リストのいずれか)になります。
テナント フィールドが空の場合、フィールドに入力することで直接、またはテナントを示す属性([影響を受けるエンド ユーザ]など)を指定することで間接的にテナントの値を指定できます。 インターフェースには以下のサフィックスが表示されます。
  • (T)
    テナントを示す属性を指定します。これは、テナントが必要なテーブルへのルックアップです。
  • (TO)
    オプションでテナントを示す属性を指定します。これは、テナントが任意のテーブルへのルックアップです。
web.cfg プロパティは、これらのインジケータのテキストを制御します。
テナント属性自体を除いて、テナントを示す属性は、dtlDropdown マクロを使用して作成された場合でも常にルックアップとして表示されます。
テナント化された値をルックアップするか、テナントを示すフィールドに自動入力すると、CA SDM によりテナントが自動的に設定されます(SERVICE_PROVIDER_ELIGIBLE フィールドにサービス プロバイダ オブジェクトへの参照を入力した場合のみテナントが設定されません)。 テナントが設定されると、テナントを示すフィールドのルックアップは、既存のテナント化されたオブジェクトと同様に制限されます。
オブジェクトを保存するまで、テナント フィールドは編集可能なままです。テナントを直接更新することで変更できます。 テナントを変更すると、以前のテナントに属するオブジェクトへの参照を含む、テナントを示すフィールドはすべて CA SDM により自動的にクリアされます。
CA SDM では、通常、テナント セレクタは空に初期化されています。 この動作は、いくつかの方法で変更できます。
  • [クイック プロファイル]などのページから[新規作成]ページを開きます。このページでは、テナントを示すフィールドに値が事前に入力されます。
  • [テナントを維持]ユーザ環境設定を設定します。
    これは、新しいオブジェクトのテナントを、最後に表示または更新した詳細ページと同じテナント、または最後のリスト ページの検索フィルタ制限と同じテナントに初期化する、新しいユーザ環境設定です。
  • テナントを明示的に指定する URL を使用してページを開きます。
    これは、事前定義済み URL には用意されていませんが、テナントを指定するメニュー項目またはボタンをサイトで作成可能にするために使用できます。
別の CA Technologies 製品(CA APM など)またはコマンド ライン インターフェースから構成アイテムを作成する場合、オブジェクトはパブリックです。
テナント化されたオブジェクトの作成
サービス プロバイダは、案件、リクエスト、変更要求などのオブジェクトにテナント固有のデータを追加できます。 [スコアボード]タブから作成されたチケット(インシデントなど)にテナントを追加できます。
以下の手順に従います。
  1. [ファイル]-[新規インシデント]をクリックします。
  2. 以下のいずれかの手順に従います。
    1. [テナント]ドロップダウンからテナントを選択します。
    2. [影響を受けるエンド ユーザ](またはテナントを示す他のフィールド)をクリックします。
      [連絡先の検索]ページが表示されます。 ユーザを検索します。テナントによって検索をフィルタできます。
    3. [影響を受けるエンド ユーザ]フィールドに名前を入力します。
      テナント データは自動的に入力されます。
  3. インシデントの作成を続けます。
アクティビティ通知
アクティビティ通知は、通知の内容と、チケットの履歴の各種イベントの通知を受信する連絡先の両方を制御します。
マルチテナンシー環境では、通知ルールはテナントが任意のオブジェクトです。 パブリック通知ルールはすべてのチケットに適用されます。テナント化されたルールは、ルールと同じテナントを持つチケット、またはそのサブテナント階層内のテナントにのみ適用されます。 テナント制限は、ルール自体で指定された条件に加えて適用されます。
デフォルトの通知ルールは、パブリック オブジェクトとして保存されます。 マルチテナンシーがインストールされている場合、各テナントの通知ルールのコピーを作成する必要があります。作成しないと、[連絡先の更新]オプションが制限されます。
リポジトリ
リポジトリ(doc_rep)オブジェクトは、テナントが任意です。 テナントは、自身のリポジトリを定義でき、添付ファイルなどのオブジェクトのパブリック リポジトリを定義して、ナレッジ ドキュメントを発行できます。 各テナントに自身のデフォルト リポジトリを設定でき、デフォルトのパブリック リポジトリを指定できます。
すべての添付ファイルは、パブリックであるか、または 1 つのテナントと関連付けられます。 テナントに自身のデフォルト リポジトリがない場合、テナント化されたそのオブジェクトのデフォルトとしてパブリック リポジトリが表示されます。