イントロダクション
このチュートリアルでは、データ・グリッドおよびデータ・グリッド・イテレータを操作するためのGroovyスクリプトの実装方法を示します。条件付きロジックを使用して、データ・グリッドの背景色の設定、パフォーマンス・ベンチマークの実装、およびグリッドでのデフォルト・データ値の設定を行います。
バックグラウンド
データ・グリッド・インタフェースで、POV/行/列のヘッダー・セルにアクセスでき、データ・セルを反復する様々なイテレータが提供されます。
前提条件
Cloud EPMのハンズオン・チュートリアルでは、Cloud EPM Enterprise Serviceインスタンスにスナップショットをインポートする必要がある場合があります。チュートリアル・スナップショットをインポートする前に、別のCloud EPM Enterprise Serviceインスタンスをリクエストするか、現在のアプリケーションおよびビジネス・プロセスを削除する必要があります。チュートリアル・スナップショットは、既存のアプリケーションまたはビジネス・プロセスにはインポートされません。また、現在作業中のアプリケーションまたはビジネス・プロセスを自動的に置換または復元することもありません。
このチュートリアルを始める前に次の用意をする必要があります。
- サービス管理者にCloud EPM Enterprise Serviceインスタンスへのアクセス権を付与します。
- このスナップショットをPlanningインスタンスにアップロードおよびインポートします。
ノート:
スナップショットのインポート中に移行エラーが発生した場合は、HSS-Shared Servicesコンポーネントを除く移行、およびコア・コンポーネントのセキュリティ・アーティファクトとユーザー・プリファレンス・アーティファクトを再実行します。スナップショットのアップロードおよびインポートの詳細は、Oracle Enterprise Performance Management Cloud移行の管理のドキュメントを参照してください。ヒント :
このチュートリアルに必要なスクリプトは、各セクション内にテキスト・ファイルとしてリンクされています。条件付きロジックを使用した背景色の設定
この項では、Groovyスクリプトを実装して、データ値が#MISSINGのセルの背景色を色█ (0x00BFFF)、データ値が50000未満のセルを色█ (0xFF8C00)に設定し、データ値が50000を超えるセルを色█ (0x00FA9A)に設定します。
ノート:
Groovyスクリプトを定義した後、各フォームのコンテキストで定義する必要があるデータ検証ルールとは異なり、任意のフォームに関連付けることができます。- Calculation Managerを開き、Plan1キューブにGroovy Set Background Colorという名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
- ナビゲータからフォーム・マネージャを開き、EmployeeDriverFormフォームを選択します。
- フォームを編集し、ロード後に実行するルールGroovyセットの背景色を関連付けます。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
- ナビゲータまたはホーム・ページから、「データ」をクリックします。EmployeeDriverFormフォームを開き、スクリプトが設計どおりにセルを強調表示していることを確認します。


operation.grid.dataCellIterator.each {if(it.missing) {
it.bgColor = 0x00BFFF
} else if(it.data <= 50000)
it.bgColor = 0xFF8C00
else if(it.data > 50000) it.bgColor = 0x00FA9A
}
このスクリプトは、
dataCellIterator
によって返された現在のデータ・グリッドoperation.grid
の各データ・セルを反復します。
暗黙的な"it"変数は、反復中の現在の項目を参照します。この場合、「it」変数は、dataCellIterator
によって返される現在のデータ・セルを参照します。
ヒント :
次の例に示すように、"cell"などの明示的に指定された変数を使用することもできます。operation.grid.dataCellIterator.each { cell -> if(cell.missing) { cell.bgColor = 0x00BFFF } }
現在のデータ・セルでは、欠落している値がチェックされます。
ノート:
cell.data
は、#MISSINGまたはゼロのセルに対して0 (ゼロ)を返します。ゼロではなく#MISSINGのセルをチェックするには、cell.missing
プロパティを使用します。#MISSINGではなくゼロ値のセルをチェックするには、cell.data == 0 && !cell.missing
などの条件を使用できます。 TRUEの場合、スクリプトはセルの背景色を
0x00BFFF
( █ )に設定します。
このスクリプトは、データ値が50000以下であるかどうかをチェックします。
TRUEの場合、スクリプトはセルの背景色を
0xFF8C00
( █ )に設定します。
セルのデータ値が50000を超える場合、スクリプトはセルの背景色を
0x00FA9A ( █ )
に設定します




スクリプトのプロファイリングとデバッグ
この項では、DataGridインタフェースで提供されるイテレータの使用方法、コードのプロファイル、およびジョブ・コンソールへのデバッグ文の追加について学習します。
- Calculation Managerを開き、Plan1キューブにGroovy Iterator Performanceという名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
- ナビゲータからフォーム・マネージャを開き、EmployeeDriverFormフォームを選択します。
- フォームを編集し、「保存後」を実行するルールGroovyイテレータ・パフォーマンスを関連付けます。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
- ナビゲータまたはホーム・ページから、「データ」をクリックします。EmployeeDriverFormフォームを開き、等級1の最低給与を35000に変更し、等級2の最低賞与を2000に変更します。
- フォームを保存して閉じます。「ジョブ」コンソールに移動します。
- 「Groovyイテレータ・パフォーマンス」をクリックして、ジョブの詳細を表示します。「完了」ステータスをクリックして、Groovyスクリプトによって出力されるログ・メッセージを表示します。


def benchmark(GridIterator itr) {def start = currentTimeMillis()
itr.each { println "$it.memberNames, cell data: $it.data, $it.formattedValue" }
def elapsed = currentTimeMillis() - start println "\nTime taken by iterator: $elapsed"
} println "Iterate over all data cells in this data grid...\n"
benchmark operation.grid.dataCellIterator()
println "Iterate over edited data cells in this data grid...\n" benchmark operation.grid.dataCellIterator({DataCell cell -> cell.edited})
println "Iterate over Min Salary and Min Bonus data cells in this data grid...\n" benchmark operation.grid.dataCellIterator('Min Salary', 'Min Bonus')
![]()
指定された
GridIterator
を使用してセルを反復処理し、セルが表すすべてのディメンションのメンバー名のリストをそのデータとともに出力する、benchmark()
というユーティリティ・メソッドを定義します。また、イテレータに要した時間も出力されます。
タイマーを起動します。
指定された
GridIterator
を使用して各セルを反復し、セルが表すすべてのディメンションのメンバー名のリストを、そのデータ値および書式設定された値とともに出力します。$it.data
はセルの数値を返し、$it.formattedValue
はユーザーが入力したテキスト、スマート・リスト、日付などの数値以外を返します。
イテレータの所要時間をジョブ・コンソールに出力します。
ジョブ・コンソールにデバッグ・メッセージを記録します。
イテレータを使用して
benchmark()
メソッドをコールし、現在のデータ・グリッド内の各セルを反復処理します。
現在のデータ・グリッド内の編集済セルを反復処理するには、イテレータを使用してbenchmark()メソッドを呼び出します。
ヒント :
このイテレータは、ロック済、欠落、有効、readOnly、validIntersectionなどのブール値を返すDataCellオブジェクトの任意のプロパティとともに使用できます。 イテレータを使用して
benchmark()
メソッドをコールし、現在のデータ・グリッドの最小給与および最小賞与のデータ・セルを反復処理します。





最初のイテレータはすべてのセルとデータ値を出力し、2番目のイテレータは編集された2つのセルのみを出力し、3番目のイテレータは「最低給与」列と「最低賞与」列のセルのみを出力します。
デフォルトのデータ値の設定
この項では、DataGridBuilder
インタフェースを使用してグリッドにデフォルトのデータ値を設定する方法を学習します。
- Calculation Managerを開き、Plan1キューブにGroovy Reset Grade Dataという名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
Cube cube = operation.application.getCube("Plan1")
DataGridBuilder builder = cube.getDataGridBuilder("MM/DD/YYYY")
builder.addPov('FY16', 'Current', 'USD', 'BegBalance', 'BU Version_1', 'No Entity')
builder.addColumn('Min Salary', 'Max Salary', 'Min Bonus', 'Max Bonus') builder.addRow(['Grade 1'], [30000, 50000, '#missing', '#missing']) builder.addRow(['Grade 2'], [40000, 60000, '#missing', 5000]) builder.addRow(['Grade 3'], [70000, 90000, '#missing', 10000]) DataGridBuilder.Status status = new DataGridBuilder.Status()
builder.build(status).withCloseable { DataGrid grid ->
println("Total number of cells accepted: $status.numAcceptedCells")
println("Total number of cells rejected: $status.numRejectedCells") println("First 100 rejected cells: $status.cellsRejected") cube.saveGrid(grid)
}
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
- ナビゲータからフォーム・マネージャを開き、ルールGroovyの等級データのリセットをEmployeeDriverFormフォームに関連付けます。フォームを保存して「フォーム・マネージャ」ウィンドウを閉じます。
- Planningホーム・ページで、「データ」をクリックします。EmployeeDriverFormフォームを開き、「アクション」をクリックして、ドロップダウン・メニューから「ビジネス・ルール」を選択します。「Groovy等級データのリセット」をクリックして、ルールを実行します。
- ルールが正常に実行されたら、「情報」ダイアログ・ボックスで「OK」をクリックし、グリッド・データがリセットされたことを確認します。
- フォームを閉じて、「ジョブ」コンソールを開きます。
- 「Groovy等級データのリセット」をクリックして、ジョブの詳細を表示します。「完了」ステータスをクリックして、受け入れられたセルまたは拒否されたセル(あるいはその両方)の数の詳細を表示します。
Plan 1キューブのキューブ・オブジェクトを作成します。
キューブのDataGridBuilderを取得し、スクリプトが日付値を提供する形式を定義します。
ノート:
DataGridBuilderでは、2番目のパラメータとしてExecuteAsUser
を受け入れることで、システム・ユーザーのかわりにデータの保存もサポートされます。システム・ユーザーとしてデータを保存すると、現在のユーザーのセキュリティを適用せずにデータを保存できます。次の例に示すように、ExecuteAsUser
の有効な値は、CURRENT_USER
(デフォルト)およびSYSTEM_USER
です。DataGridBuider builder = cube.dataGridBuilder("MM/DD/YYYY", SYSTEM_USER)
POVメンバー、列メンバーおよびデータ値を含む行を追加して、データ・グリッドを構築します。
次のステップで作成したDataGridオブジェクトのステータス・オブジェクトを作成します。
withCloseableコンストラクトを使用してDataGridオブジェクトをビルドします。このコンストラクトは、コードのブロックの実行が完了すると、DataGridオブジェクトをクローズします。これは、操作の完了後にルールによってDataGridオブジェクトがメモリー内で開かれたままにならないようにするために重要です。
ビルダーによって受け入れまたは拒否されたセルの数をジョブ・コンソールに出力します。読取り専用セルは拒否されます。
データ・グリッドを保存します。
グリッドは自動的に閉じられます。





次のチュートリアル
関連リンク
その他の学習リソース
docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。さらに、Oracle Universityにアクセスして、利用可能なトレーニング・リソースを確認してください。
製品ドキュメントについては、Oracle Help Centerを参照してください。