ドメインのサポートとスケジュール
スケジュールではドメインセパレーションがサポートされています。ドメインセパレーションでは、データ、プロセス、および管理タスクをドメインと呼ばれる論理的なグループに分けることができます。どのユーザーがデータを表示できるか、データにアクセスできるかなど、このアプリケーションのいくつかの側面を制御できます。 ドメインサポート [com.glide.domain] プラグインを有効にして、スケジュールのドメインセパレーション機能を有効にします。
サポートレベル:ベーシック
- アプリケーションサービスプロバイダーのユースケースに合わせてデータが適切なドメインに送られるようにするビジネスロジックが存在します。
- このアプリケーションは、ドメインセパレーションを完全にサポートしています。ドメインセパレーションには、ユーザーインターフェイス、キャッシュキー、レポート、ロールアップ、および集計からのドメインの分離が含まれます。
- インスタンスのオーナーは、複数のテナント間で正常に機能するようにアプリケーションをセットアップする必要があります。
サンプルユースケース:サービスプロバイダーがチャットを使用してテナント顧客のメッセージに応答する場合、お客様がサービスプロバイダーの応答を確認できるようにする必要があります。
サポートレベルの詳細については、「アプリケーションでのドメインセパレーションのサポート)」を参照してください。
概要
スケジュール [cmn_schedule]、スケジュールページ [cmn_schedule_page]、タイムラインページ [cmn_timeline_page] テーブルのレコードには、定義済みのドメインがあります。
- 子テーブルは domain_master 属性を使用して、親テーブルからドメインを派生させます。
- domain_master 属性は、それぞれのテーブルの辞書レコードにあります。
次の図は、さまざまなスケジュールテーブルにおけるドメインセパレーションのスコープを示しています。
図 : 1. スケジュールのドメインサポート
カスタムドメインサポートの実装
スケジュールエントリ [cmn_schedule_span] などのテーブルに対するドメインサポートのカスタム実装を含む新しいリリースに移行する場合、ドメインセパレーションサポートは自動的には行われません。このアクションにより、使用中の特定の構成が変更されることを回避できます。
スケジュールのベースシステムドメインサポートを実装するために、sys.script ユーティリティが提供されています。このユーティリティを実行するには、次の場所に移動します . このスクリプトは、com.glide.schedules プラグインの下に fix_schedule_domain_support.js としてリストされています。
- このユーティリティは、[ドメイン [sys_domain]] 列を [スケジュール [cmn_schedule]]、[スケジュールページ [cmn_schedule_page]]、[タイムラインページ [cmn_timeline_page]] のテーブルに追加しようとします。
- 次に、domain_master 属性を、[スケジュールエントリ [cmn_schedule_span]]、[その他のスケジュール [cmn_other_schedule]]、[タイムラインサブアイテム [cmn_timeline_sub_item]]、[タイムラインページのスパンスタイル [cmn_timeline_page_style]] テーブルに追加しようとします。
- 異なるドメインを持つ子レコードと親レコードの間に既存のレコードが見つかった場合、スクリプトは domain_master 属性を子テーブルに導入しません。
たとえば、[スケジュール [cmn_schedule]] (親) テーブルと [スケジュールエントリ [cmn_schedule_span]] (子) テーブルの関係を考えてみます。[ドメイン [sys_domain]] 列がアップグレードインスタンスの両方のテーブルで利用可能な場合、ユーティリティはスケジュールのドメインサポートのベースシステム実装に移行する必要があります。
- 子の [スケジュールエントリ [cmn_schedule_span]] ドメインが親の [スケジュール [cmn_schedule]] ドメインと異なるレコードをスクリプトが検出した場合、スクリプトは実行を停止し、警告メッセージをログに記録します。
- スクリプトで異なるレコードが見つからない場合は、[スケジュールエントリ [cmn_schedule_span]] テーブルの [ドメイン [sys_domain]] 列と [ドメインパス [sys_domain_path]] 列に対する読み取りアクセス権は無効になり、制限されます。
- 最後に、スクリプトは domain_master = schedule 属性を [スケジュールエントリ [cmn_schedule_span]] テーブルの辞書ファイルに追加します。
注:
domain_master 属性は、子と親レコードのドメインが、指定された参照フィールドから派生した子のドメインと同じであることを保証します。