イントロダクション

このチュートリアルでは、データ・グリッドおよびデータ・グリッド・イテレータを操作するための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スクリプトを定義した後、各フォームのコンテキストで定義する必要があるデータ検証ルールとは異なり、任意のフォームに関連付けることができます。
  1. Calculation Managerを開き、Plan1キューブにGroovy Set Background Colorという名前のルールを作成します。
  2. 説明
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. 説明
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. 						
    operation.grid.dataCellIterator.each { Description
      if(it.missing) { Description
         it.bgColor = 0x00BFFF Description
      } else if(it.data <= 50000) Description 
         it.bgColor = 0xFF8C00 Description
      else if(it.data > 50000) 
         it.bgColor = 0x00FA9A Description	
    }
    		

    説明 このスクリプトは、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 ( )に設定します

  7. ツールバーで、説明 (保存)をクリックしてスクリプトを保存し、検証およびデプロイ (検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
  8. 正常なデプロイメント
  9. ナビゲータからフォーム・マネージャを開き、EmployeeDriverFormフォームを選択します。
  10. フォーム・マネージャ
  11. フォームを編集し、ロード後に実行するルールGroovyセットの背景色を関連付けます。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
  12. ルールの関連付け
  13. ナビゲータまたはホーム・ページから、「データ」をクリックします。EmployeeDriverFormフォームを開き、スクリプトが設計どおりにセルを強調表示していることを確認します。
  14. 強調表示されたセルを含むEmployeeDriverFormフォーム。

スクリプトのプロファイリングとデバッグ

この項では、DataGridインタフェースで提供されるイテレータの使用方法、コードのプロファイル、およびジョブ・コンソールへのデバッグ文の追加について学習します。

  1. Calculation Managerを開き、Plan1キューブにGroovy Iterator Performanceという名前のルールを作成します。
  2. 説明
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. 説明
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. def benchmark(GridIterator itr) { Description  
        def start = currentTimeMillis() Description   
        itr.each { println "$it.memberNames, cell data: $it.data, $it.formattedValue" } Description  
        def elapsed = currentTimeMillis() - start
        println "\nTime taken by iterator: $elapsed" Description  
    }
    
    println "Iterate over all data cells in this data grid...\n" Description  
    benchmark operation.grid.dataCellIterator() Description  
    
    println "Iterate over edited data cells in this data grid...\n"
    benchmark operation.grid.dataCellIterator({DataCell cell -> cell.edited}) Description  
    
    println "Iterate over Min Salary and Min Bonus data cells in this data grid...\n"
    benchmark operation.grid.dataCellIterator('Min Salary', 'Min Bonus') Description  
    

    説明 指定されたGridIteratorを使用してセルを反復処理し、セルが表すすべてのディメンションのメンバー名のリストをそのデータとともに出力する、benchmark()というユーティリティ・メソッドを定義します。また、イテレータに要した時間も出力されます。

    説明 タイマーを起動します。

    説明 指定されたGridIteratorを使用して各セルを反復し、セルが表すすべてのディメンションのメンバー名のリストを、そのデータ値および書式設定された値とともに出力します。$it.dataはセルの数値を返し、$it.formattedValueはユーザーが入力したテキスト、スマート・リスト、日付などの数値以外を返します。

    説明 イテレータの所要時間をジョブ・コンソールに出力します。

    説明 ジョブ・コンソールにデバッグ・メッセージを記録します。

    説明 イテレータを使用してbenchmark()メソッドをコールし、現在のデータ・グリッド内の各セルを反復処理します。

    説明 現在のデータ・グリッド内の編集済セルを反復処理するには、イテレータを使用してbenchmark()メソッドを呼び出します。

    ヒント :

    このイテレータは、ロック済、欠落、有効、readOnly、validIntersectionなどのブール値を返すDataCellオブジェクトの任意のプロパティとともに使用できます。

    説明 イテレータを使用してbenchmark()メソッドをコールし、現在のデータ・グリッドの最小給与および最小賞与のデータ・セルを反復処理します。

  7. ツールバーで、説明(保存)をクリックしてスクリプトを保存し、説明(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
  8. ナビゲータからフォーム・マネージャを開き、EmployeeDriverFormフォームを選択します。
  9. フォーム・マネージャ
  10. フォームを編集し、「保存後」を実行するルールGroovyイテレータ・パフォーマンスを関連付けます。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
  11. ルールの関連付け
  12. ナビゲータまたはホーム・ページから、「データ」をクリックします。EmployeeDriverFormフォームを開き、等級1の最低給与を35000に変更し、等級2の最低賞与を2000に変更します。
  13. 入力されたデータを含むEmployeeDriverFormフォーム。
  14. フォームを保存して閉じます。「ジョブ」コンソールに移動します。
  15. ジョブ・コンソールの「最近のアクティビティ」ペイン。
  16. 「Groovyイテレータ・パフォーマンス」をクリックして、ジョブの詳細を表示します。「完了」ステータスをクリックして、Groovyスクリプトによって出力されるログ・メッセージを表示します。
  17. ログ・メッセージ。

    最初のイテレータはすべてのセルとデータ値を出力し、2番目のイテレータは編集された2つのセルのみを出力し、3番目のイテレータは「最低給与」列と「最低賞与」列のセルのみを出力します。

デフォルトのデータ値の設定

この項では、DataGridBuilderインタフェースを使用してグリッドにデフォルトのデータ値を設定する方法を学習します。

  1. Calculation Managerを開き、Plan1キューブにGroovy Reset Grade Dataという名前のルールを作成します。
  2. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  3. このスクリプトをコピーして、エディタに貼り付けます:
    Cube cube = operation.application.getCube("Plan1") Description 
    
    DataGridBuilder builder = cube.getDataGridBuilder("MM/DD/YYYY") Description 
    builder.addPov('FY16', 'Current', 'USD', 'BegBalance', 'BU Version_1', 'No Entity') Description  
    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() Description  
    builder.build(status).withCloseable { DataGrid grid -> Description  
        println("Total number of cells accepted: $status.numAcceptedCells") Description  
        println("Total number of cells rejected: $status.numRejectedCells")
        println("First 100 rejected cells: $status.cellsRejected")
        cube.saveGrid(grid) Description  
    } Description  
  4. 説明 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オブジェクトがメモリー内で開かれたままにならないようにするために重要です。

    説明 ビルダーによって受け入れまたは拒否されたセルの数をジョブ・コンソールに出力します。読取り専用セルは拒否されます。

    説明 データ・グリッドを保存します。

    説明 グリッドは自動的に閉じられます。

  5. ツールバーで、説明 (保存)をクリックしてスクリプトを保存し、説明 (検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。
  6. ナビゲータからフォーム・マネージャを開き、ルールGroovyの等級データのリセットをEmployeeDriverFormフォームに関連付けます。フォームを保存して「フォーム・マネージャ」ウィンドウを閉じます。
    ルールのリセット
  7. Planningホーム・ページで、「データ」をクリックします。EmployeeDriverFormフォームを開き、「アクション」をクリックして、ドロップダウン・メニューから「ビジネス・ルール」を選択します。「Groovy等級データのリセット」をクリックして、ルールを実行します。
  8. 「アクション」メニュー

    リセット・ルール
  9. ルールが正常に実行されたら、「情報」ダイアログ・ボックスで「OK」をクリックし、グリッド・データがリセットされたことを確認します。
  10. 説明
  11. フォームを閉じて、「ジョブ」コンソールを開きます。
  12. 説明
  13. 「Groovy等級データのリセット」をクリックして、ジョブの詳細を表示します。「完了」ステータスをクリックして、受け入れられたセルまたは拒否されたセル(あるいはその両方)の数の詳細を表示します。
  14. 説明

次のチュートリアル

Groovyを使用したデータ入力値の検証

その他の学習リソース

docs.oracle.com/learnで他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。さらに、Oracle Universityにアクセスして、利用可能なトレーニング・リソースを確認してください。

製品ドキュメントについては、Oracle Help Centerを参照してください。