キューブ・マネージャを使用する方法
ここでは、キューブ・マネージャにアクセスして使用する方法について説明します。キューブ・マネージャは、キューブを最新状態に維持する一環として、キューブの更新の管理に役立つように設計されています。キューブの更新方法と更新時期をキューブ・マネージャで指定します。キューブ・マネージャでは、選択したスケジュール日時にキューブの再構築や同期を実行するタスクを追加できます。
キューブ・マネージャの概要
キューブ・マネージャを使用すると、キューブ・レジストリを定義できます。これには、現在のネームスペース内のキューブに関する情報が含まれています。特に、構築方法または同期方法あるいはこれら両方に関する情報が含まれています。
キューブ・レジストリでは、一連のキューブ・グループが定義されます。キューブ・グループは、関連性があるまたは同時に更新することを選択したために、同時に更新する必要があるキューブの集合です。キューブ・マネージャに初めてアクセスすると、キューブ・グループの初期セットが表示されます。それぞれの初期キューブ・グループは、1 つのキューブまたは相互に関連付けられている (したがって、グループとして更新する必要がある) 一連のキューブです。必要に応じて、これらの初期キューブ・グループをマージできます。ただし、どの初期キューブ・グループも分割できません。
各キューブ・グループは初期状態では登録されていません。つまり、キューブ・レジストリに組み込まれていません。キューブ・グループを登録 (レジストリに配置) した後、更新計画を定義します。キューブ・マネージャによって、これらの更新計画を使用した自動タスクが作成されます。詳細は、次のセクションを参照してください。
更新計画の概要
キューブ・グループの更新計画によって、キューブの更新方法と更新時期が指定されます。各グループには、既定の計画があり、これを変更できます。グループ内の特定のキューブに対して異なる更新計画を指定することもできます。どちらの場合も、計画の選択肢は以下のとおりです。
-
[構築と同期] — 定期的に再構築します。既定では 1 週間に 1 回です。また、定期的に同期します。既定では 1 日 1 回です。
このオプションは、(このページで前述したように) 指定されたキューブが同期をサポートしていない場合、そのキューブではサポートされません。
-
[構築のみ] — 定期的に再構築します。既定では 1 週間に 1 回です。
-
[同期のみ] — 定期的にキューブを同期します。既定では 1 日 1 回です。
このオプションは、(このページで前述したように) 指定されたキューブが同期をサポートしていない場合、そのキューブではサポートされません。
Important:キューブをキューブ・マネージャから同期する前に、少なくとも一度、キューブ・マネージャからキューブを構築する必要があります。
-
[手動] — キューブ・マネージャから再構築または同期しません。
代わりに、他のツール (アーキテクトの [構築] オプションおよび %BuildCube()、%SynchronizeCube()、%ProcessFact()、%DeleteFact() の各メソッド) の適切な組み合わせを使用します。後者の 3 つのメソッドについては、このページの後半で説明します。
または、%DeepSee.CubeManager.Utils.BuildCube()Opens in a new tab の呼び出しによって、手動でキューブを再構築することもできます。さらに、%DeepSee.CubeManager.Utils.BuildCube()Opens in a new tab の呼び出しによって、手動でキューブを同期することもできます。
各計画 ([手動] 以外) では、スケジュールの詳細をカスタマイズできます。
任意のネームスペースに対して、キューブ・マネージャは、2 つのタスクを定義します。このネームスペースで要求されたキューブ構築アクティビティをすべて実行するタスクと、このネームスペースで要求されたキューブ同期アクティブティをすべて実行するタスクです。これらのタスクは両方とも、キューブ・レジストリで指定された手順に従います。両方のタスクは、リレーションシップによって要求される正しい順序で自動的にキューブを処理します。
キューブ・マネージャには、登録されたグループおよびキューブそれぞれに対して [除外] チェック・ボックスが用意されていて、これを使用して該当するグループまたはキューブをキューブ・マネージャによるアクティビティから除外できます。具体的には、キューブ・マネージャのタスクでは、除外されたグループおよびキューブは無視されます。最初、これらのチェック・ボックスは選択されています。これは、通常、更新の準備ができるまで、これを実行しないことが適切であるためです。
キューブ・マネージャへのアクセス
キューブ・マネージャにアクセスするには、管理ポータルで以下の手順を実行します。
-
以下のように、適切なネームスペースに切り替えます。
-
現在のネームスペースの名前をクリックして、使用可能なネームスペースのリストを開きます。
-
リストから、該当するネームスペースをクリックします。
-
-
[アナリティクス]→[管理]→[キューブマネージャ] をクリックします。
-
このネームスペースでキューブ・マネージャを使用したことがない場合、キューブ・レジストリに関する情報の入力を求めるプロンプトが表示されます。この場合、以下の情報を指定します。
-
[キューブ・レジストリのクラス名] — 完全なクラス名 (パッケージを含む) を指定します。このクラス定義は、このネームスペースのキューブ・レジストリになります。
-
[無効] — 必要に応じて、これをクリックしてレジストリを無効にします。レジストリを無効にすると、キューブ・マネージャのタスクは一時停止されます。(まだキューブ・マネージャのタスクはないため、この時点でレジストリを無効にする必要はありません。)
-
[グループの更新] — 相互にグループを更新する方法を指定します。[連続] を選択すると、タスクでは一度に 1 グループが更新されます。[並行] を選択すると、タスクでは並行して複数のグループが更新されます。
-
[この時点以降に構築の開始を可能にする] — 構築可能な最も早い時間を指定します。
これらのすべての詳細は後で変更できます (クラス名を除く)。
そして、[OK] をクリックします。
-
[キューブ・レジストリ] ページが表示されます。このページは 2 つのモードで表示できます ([表示] ボタンを使用)。左の [表示] ボタンをクリックするとツリー表示になり、右の [表示] ボタンをクリックするとテーブル表示になります。
ツリー表示
ツリー表示では、キューブ・マネージャの左側の領域に登録されていないキューブ・グループのツリーが表示されます。以下はその例です。
中央の領域には、登録されたグループに関する情報が記載されたテーブル (初期状態では空) が表示されます。以下の例は、グループ登録後のテーブルの外観を示します。
この領域は、以下のように色分けされます。
-
背景が白 — このグループまたはキューブは包含されています。つまり、キューブ・マネージャのタスクはこれを更新します。このページで後述する "更新計画の指定" の [除外] オプションを参照してください。
-
背景がグレー — このグループまたはキューブは除外されています。つまり、キューブ・マネージャのタスクはこれを無視します。
また、この領域は、以下のように指定されたキューブに基づいてサブジェクト領域を (イタリックで) リストします。
キューブ内の更新内容は、そのキューブに基づいたすべてのサブジェクト領域で自動的に利用可能になるため、サブジェクト領域に対して更新計画を指定することはできません。(このため、サブジェクト領域のベースとなっているキューブとは独立して、そのサブジェクト領域を更新する必要も方法もありません。)
右側の領域では、[詳細] タブ (非表示) に現在の選択肢の詳細が表示されます。このタブは編集できます。[ツール] タブには、他のツールへのリンクが用意されています。
キューブ・マネージャがツリー表示されている場合は、中央領域に表示されるすべての登録済みグループの表示を展開したり折りたたんだりできます。そのためには、中央領域の上部にある [すべて展開] ボタンや [すべて折りたたみ] ボタンを適宜使用します。これらのボタンを使用しても、未登録グループが表示されるページの左側領域は変化しません。
テーブル表示
テーブル表示では、キューブ・マネージャに、現在のネームスペースのすべてのキューブが更新計画とともにリストされます。以下はその例です。
このテーブルは、以下のように色分けされます。
-
背景が白 — このキューブは包含されています。つまり、キューブ・マネージャのタスクはこれを更新します。このページで後述する "更新計画の指定" の [除外] オプションを参照してください。
-
背景がグレー — このキューブは除外されています。つまり、キューブ・マネージャのタスクはこれを無視します。
-
背景がピンク — このキューブは登録されていないため、更新計画がありません。
[グループ名] フィールドは各キューブの所属先のグループを示し、[グループの構築順序] フィールドはグループ内で各キューブが構築または同期される順序を示します。キューブ・マネージャは、登録されたグループ内のキューブに対してのみこの順序を計算します。
右側の領域では、[詳細] タブ (非表示) に現在の選択肢の詳細が表示されます。このタブは編集できます。[ツール] タブには、他のツールへのリンクが用意されています。
レジストリの詳細の変更
キューブ・マネージャに初めてアクセスすると、初期情報の入力を求めるプロンプトが表示されます。これらの詳細を後で変更するには、以下の手順を実行します (レジストリのクラス名を除く。これは変更できません)。
キューブ・グループの登録
キューブ・グループを登録するには、以下の手順を実行します。
-
ツリー表示でキューブ・マネージャを表示します。
-
左側の登録されていないキューブのリストを展開します。
-
この領域から中央の領域の [登録されたグループ] の見出しにグループをドラッグ・アンド・ドロップします。
または、テーブル表示でキューブ・マネージャを表示し、グループ内のキューブの行をクリックし、右側の領域の [登録されたグループ] をクリックします。
どちらの場合でも、変更内容は自動的に保存されます。
更新計画の指定
キューブ・グループおよびそのキューブの更新計画を指定するには、以下の手順を実行します。
-
ツリー表示でキューブ・マネージャを表示します。
-
中央の領域でグループをクリックします。
-
右側の [詳細] ペインで、以下の情報を指定します。
-
[名前] — このグループの一意の名前です。
-
[除外] — 生成されたタスクがこのグループ内のキューブに対して更新アクティビティを実行するかどうかを制御します。初期状態では、このオプションが選択されていて、グループが除外されています。
キューブ・マネージャでは、除外されているグループまたはキューブはグレーの背景で表示されます。
-
[更新計画] — 更新計画を選択します。
キューブ・マネージャでは、(このページで前述したように) キューブが同期をサポートしていない場合、同期の使用は許可されません。例えば、グループに [構築と同期] 計画を選択できますが、同期をサポートしていないキューブに対しては、キューブ・マネージャは、この更新計画を自動的に [Build] に設定します。
Important:キューブをキューブ・マネージャから同期する前に、少なくとも一度、キューブ・マネージャからキューブを構築する必要があります。
-
[構築間隔] — これらのフィールドを使用して、構築タスクのスケジュールを指定します (該当する場合)。
-
[同期間隔] — これらのフィールドを使用して、同期タスクのスケジュールを指定します (該当する場合)。
-
[同期してキューブを構築する] — これを選択すると、これらのキューブは同期的に構築されます (該当する場合)。このオプションがクリアされている場合は、それらが非同期で構築されます。
初期状態では、これらの詳細は、グループ内のすべてのキューブに適用されます。特定のキューブに対する詳細を編集し、後でグループの既定値を再適用する場合、[グループ内のすべてのキューブに適用する] をクリックします。
-
-
必要に応じて、(中央の領域で) このグループ内のキューブをクリックし、右側の [詳細] ペインでそのキューブの情報を編集します。
オプションはグループ全体のものと似ていますが、キューブが同期をサポートしているかどうかに応じて、以下の追加オプションを含みます。
-
[事後構築コード] — このキューブを構築した直後に実行される ObjectScript の 1 行を指定します。以下はその例です。
do ##class(MyApp.Utils).MyPostBuildMethod("transactionscube")
-
[事前同期コード] — このキューブを同期する直前に実行される ObjectScript の 1 行を指定します。以下はその例です。
do ##class(MyApp.Utils).MyPresynchMethod("transactionscube")
必要に応じて、同期を中止するには、コードで以下を実行します。
set $$$ABORTSYNCH=1
-
[事後同期コード] — このキューブを同期した直後に実行される ObjectScript の 1 行を指定します。以下はその例です。
do ##class(MyApp.Utils).MyPostsynchMethod("transactionscube")
いずれの場合でも、コードによって、必要な任意のプロセスを実行できます。
必要に応じて、各キューブを変更します。
-
-
[保存] をクリックします。
これを行うと、キューブ・マネージャは、このネームスペースでキューブ・レジストリを作成または更新します。タスク・マネージャが必要なタスクをまだ組み込んでいない場合、キューブ・マネージャがこれを作成します。
グループのマージ
あるグループ (グループ A) を別のグループ (グループ B) にマージできます。具体的には、グループ A からグループ B にすべてのキューブを移動し、空になったグループ A を削除します。
あるグループを別のグループにマージするには、以下の手順を実行します。この手順では、グループ A はまだ登録されていない必要があり、グループ B は登録されている必要があります。
-
ツリー表示でキューブ・マネージャを表示します。
-
グループ A (移動するキューブが含まれているグループ) を左の領域から、中央の領域にあるグループ B (ターゲット・グループ) のグループ見出しにドラッグ・アンド・ドロップします。
システムからアクションの確認が求められます。
-
[OK] をクリックします。
新しく移動されたキューブの一部で使用できない更新計画がグループ B にある場合、これを示すダイアログ・ボックスが表示されます。[OK] をクリックします。このようなキューブの場合、キューブ・マネージャは、使用できる更新計画を選択します。
-
新しく移動された各キューブに対する更新計画を確認し、必要に応じて変更します。
-
[保存] をクリックします。
または、以下の代替手順を実行してください。この手順では、両方のグループが登録されている必要があります。
-
テーブル表示でキューブ・マネージャを表示します。
-
中央の領域で、グループ A (移動するキューブが含まれているグループ) のキューブの行をクリックします。
-
右側で、[別のグループにマージする] をクリックし、ドロップダウン・リストからグループ B (ターゲット・グループ) を選択します。
-
[マージ] をクリックします。
システムからアクションの確認が求められます。
-
[OK] をクリックします。
新しく移動されたキューブの一部で使用できない更新計画がグループ B にある場合、これを示すダイアログ・ボックスが表示されます。[OK] をクリックします。このようなキューブの場合、キューブ・マネージャは、使用できる更新計画を選択します。
-
新しく移動された各キューブに対する更新計画を確認し、必要に応じて変更します。
-
[保存] をクリックします。
登録されているすべてのキューブの構築
システムには、登録されているキューブをすべて正しい順序で構築するために使用できるユーティリティ・メソッドが用意されています。このメソッドは、クラス %DeepSee.CubeManager.UtilsOpens in a new tab の BuildAllRegisteredGroups() です。このメソッドでは、レジストリで指定されたスケジュールは無視されますが、レジストリで指定された構築順序が使用されます。
キューブをキューブ・マネージャから同期する前に、少なくとも一度、キューブ・マネージャのユーザ・インタフェースからそれらのキューブを構築する必要があります。
オンデマンド構築の実行
キューブ・マネージャでは、オンデマンドで (つまり、スケジュールを無視して) キューブを構築するオプションも提供されます。この種の構築では、キューブ・マネージャは、要求されたキューブおよびこれに依存するすべてのキューブを再構築します。
オンデマンド構築を実行するには、以下の手順を実行します。
-
変更内容をキューブ・レジストリに保存します。
Important:未保存の変更内容があると、構築オプションは無効になります。
-
登録されているキューブを選択します。そのためには、以下のいずれかを実行します。
-
右側で、[除外] オプションをクリアします。
-
[依存関係リストを構築] をクリックします。
キューブ・マネージャで、構築ダイアログ・ボックスが表示されます。
-
[リストの構築] をクリックします。
ダイアログ・ボックスに、構築の進捗状況が表示されます。
-
構築が完了したら、[OK] をクリックします。
オンデマンド構築を実行する方法は他にもあります。
キューブ・グループの登録解除
キューブ・グループを登録解除するには、以下の手順を実行します。
-
ツリー表示でキューブ・マネージャを表示します。
-
中央の領域で、キューブ・グループの行で [X] をクリックします。
-
[OK] をクリックします。
キューブ・マネージャ・イベントの表示
特定のイベントでは、キューブ・マネージャはテーブルにログ・エントリを書き込みます。これは、SQL でクエリできます。テーブル名は、%DeepSee_CubeManager.CubeEvent です。CubeEvent フィールドは、キューブ・イベントのタイプを示します。このフィールドの可能な論理値には、以下が含まれます。
キューブ・イベントの値 | キューブ・マネージャがこのログ・エントリを書き込む時期 |
---|---|
register | キューブ・グループの登録の直後 |
update | キューブ・グループへの変更の保存の直後 |
unregister | キューブ・グループの登録解除の直後 |
build | キューブの構築時キューブ・マネージャは構築の開始直前に初期ログを生成し、構築の完了後にそのエントリを更新します。 |
synch | キューブの同期時キューブ・マネージャは同期の開始直前に初期ログを生成し、同期の完了後にそのエントリを更新します。 |
presynch | [事前同期コード] オプションで指定されたコードの実行直後 |
postsynch | [事後同期コード] オプションで指定されたコードの実行直後 |
postbuild | [事後構築コード] オプションで指定されたコードの実行直後 |
repair | [依存関係リストを構築] オプションの使用時 (このオプションを指定すると、指定されたキューブおよび関連キューブのオンデマンド構築が実行されます)。 キューブ・マネージャは構築の開始直前に初期ログを生成し、構築の完了後にそのエントリを更新します。 |
このテーブルの他のフィールドの詳細は、%DeepSee.CubeManager.CubeEventOpens in a new tab のクラスリファレンスを参照してください。
キューブ・マネージャへのアクセスの制限
ユーザが [キューブ・レジストリ] ページを使用してキューブの更新スケジュールを変更できないようにして、そのスケジュールを管理することも考えられます。[キューブ・レジストリ] ページへのアクセスを制限するには、保存したキューブ・レジストリ内の RegistryMap オブジェクトまたは RegistryMapGroup オブジェクトで UserUpdatesLocked 属性を "true" に設定します。以下に例を示します。
<RegistryMap Disabled="false" IndependentSync="false" SerialUpdates="false" UserUpdatesLocked="true">
RegistryMap について UserUpdatesLocked を "true" に設定した場合、次のようになります。
-
[詳細] タブを使用してレジストリの [無効] 設定を変更することはできません。このタブにアクセスする方法については、"レジストリの詳細の変更" を参照してください。
RegistryMapGroup について UserUpdatesLocked を "true" に設定した場合、次のようになります。
-
登録された各グループの [除外] チェック・ボックスは表示されますが、無効になります。
-
登録された各キューブの [除外] チェック・ボックスは非表示になります。
-
登録された各グループの [更新計画] は非表示になります。
-
登録された各キューブの [更新計画] は非表示になります。
-
登録されたグループを削除するための赤い [X] ボタンは削除されます。
-
[構築の頻度] と [同期の頻度] の列は空白のままです。
-
[依存関係リストを構築] をキューブで使用することはできますが、[このグループを構築] ボタンは無効になります。