イントロダクション

このチュートリアルでは、Oracle EPM Cloud Planningでフォーカスされた計算スクリプトの生成方法を複数示し、データ入力フォーム全体ではなく、編集されたデータのみを計算します。

バックグラウンド

Groovy EPMオブジェクト・モデルを使用すると、データ入力グリッド内のどのセルが編集されているかを判断し、フォーカスされたEssbase計算を生成して、データ入力の影響を受けるメンバーのみを計算できます。

このチュートリアルでは、Product Volume Analysisダッシュボードを使用します。上部のフォーム「Product Volume」は、月単位で様々な製品の量を取得します。下部のフォーム「Product Revenue」には、様々な製品の収益が表示されます。上部フォームを編集する場合、編集した製品についてのみ、下部フォームで売上を計算します。

製品量分析ダッシュボード

このチュートリアルは3つの部分に分かれており、編集した製品を計算するための3つの異なる方法について説明しています。

  1. フォーカスした計算スクリプトの生成および実行
  2. 既存の計算ジョブを実行するGroovyスクリプトの作成
  3. フォーカスした計算スクリプトを生成して実行し、さらに評価するためにGroovyスクリプトに戻ります

前提条件

Cloud EPMのハンズオン・チュートリアルでは、Cloud EPM Enterprise Serviceインスタンスにスナップショットをインポートする必要がある場合があります。チュートリアル・スナップショットをインポートする前に、別のCloud EPM Enterprise Serviceインスタンスをリクエストするか、現在のアプリケーションおよびビジネス・プロセスを削除する必要があります。チュートリアル・スナップショットは、既存のアプリケーションまたはビジネス・プロセスにはインポートされません。また、現在作業中のアプリケーションまたはビジネス・プロセスを自動的に置換または復元することもありません。

このチュートリアルを始める前に次の用意をする必要があります。

  • サービス管理者にCloud EPM Enterprise Serviceインスタンスへのアクセス権を付与します。
  • このスナップショットをPlanningインスタンスにアップロードおよびインポートします。別のGroovyチュートリアルのスナップショットを以前にアップロードした場合は、同じスナップショットを引き続き使用できます。

ノート:

スナップショットのインポート中に移行エラーが発生した場合は、HSS-Shared Servicesコンポーネントを除く移行、およびコア・コンポーネントのセキュリティ・アーティファクトとユーザー・プリファレンス・アーティファクトを再実行します。スナップショットのアップロードおよびインポートの詳細は、Oracle Enterprise Performance Management Cloud移行の管理のドキュメントを参照してください。

ヒント :

このチュートリアルに必要なスクリプトは、各セクション内にテキスト・ファイルとしてリンクされています。

Planning環境の設定

Planningでのユーザー変数の設定

まず、必要なユーザー変数を設定して、Product Volume Analysisダッシュボードを操作します。

  1. ホーム・ページで、「ツール」をクリックし、「ユーザー・プリファレンス」を選択します。
  2. ユーザー・プリファレンス
  3. 「ユーザー変数」タブを選択します。
  4. 次の変数定義を入力します。
  5. ユーザー変数 メンバー
    レポート通貨 USD
    通貨 USD
    エンティティ 米国営業
    Scenario OEP_Plan
    Version OEP_Working

    選択したユーザー変数

  6. 「保存」をクリックします。確認メッセージで、「OK」をクリックし、ホーム・ページに戻ります。

Planningのランタイム・プロンプトの変数のインポート

次に、計算変数をOEP_FSキューブにインポートして、このチュートリアルの後半で使用されるランタイム・プロンプト(RTP)をサポートします。

  1. HP4_OEP_FS_Variables.xmlのリンクを右クリックして、ファイルをローカル・ドライブに保存します。
  2. 左上からナビゲータ・アイコン「ナビゲータ」をクリックし、「ルール」(「作成および管理」の下)に移動してCalculation Managerを開きます。システム・ビューで、「EPM Cloud」→「HP4」を展開します。OEP_FSを右クリックし、「インポート」を選択します。
  3. 「ファイル・インポートの詳細」で、ローカル・ドライブからHP4_OEP_FS_Variables.xmlを選択して参照します。
  4. 「Location Details」で、次の項目を選択します。
    • アプリケーション・タイプ: EPM Cloud
    • アプリケーション: HP4
    • キューブ: OEP_FS
  5. 「インポート・オプション」で、「既存のオブジェクトの上書き」を選択します。
    インポート変数
  6. 「インポート」をクリックします。インポート結果(更新済または挿入済など)を確認し、「OK」をクリックします。
    インポートの結果
  7. 「取消」をクリックして、「インポート」ダイアログ・ボックスを閉じます。

編集済製品のフォーカス計算スクリプトの生成

この項では、PlanningでGroovyスクリプトを実装して、編集済製品の製品収益を計算します。

Groovyスクリプトの作成

  1. Calculation Managerで、OEP_FSプラン・タイプに「Groovy Calculate Product Revenue」という名前のルールを作成します。
  2. 新規オブジェクト
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. ルール・エディタのオプション
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. // Capture the edited periods and products
    Set<String> editedMembers = [] 
    operation.grid.dataCellIterator({DataCell cell -> cell.edited}, MemberNameType.ESSBASE_NAME).each {
    DataCell cell ->
            editedMembers << cell.periodName << cell.getMemberName("Product") 
        }
    
    if(editedMembers.size() == 0){ 
        println("No edited cells found!")
        return;
    }
    
    // Generate the calc script to calculate revenue for the products whose volume was edited
    String calcScript = """ 
    Fix(${cscParams(operation.grid.pov, editedMembers)})  
    "OFS_Calculated"
    (
       "OFS_Product Revenue" = "OFS_Volume" * "OFS_Avg Selling Price";
    )
    EndFix;""" 
    
    println("The following calc script was executed by $operation.user.fullName: \n $calcScript") 
    return calcScript.toString() 
    

    一意の編集済メンバーを取得するセットを定義します。

    編集済メンバーを取得します。

    メンバーが編集されたかどうかを確認します。何も編集されていない場合は、それ以上の処理は必要ないため、スクリプトから戻ります。

    POVメンバーおよび編集済メンバーを修正して、編集済セルの製品収益を計算する計算スクリプトを生成します。

    ノート:

    cscParams() APIは、指定した各アイテムがカンマで区切られ、引用符で囲まれて区切られた文字列値を返すユーティリティです。このメソッドによって返される文字列は、パラメータとしてEssbase計算スクリプト・コマンドにプラグインできます。

    ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。

    計算スクリプトを返します。これが実行されます。

  7. ツールバーで、保存 (保存)をクリックしてスクリプトを保存し、ValidateAndDeploy (検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。「計算マネージャ」ウィンドウは開いたままにします。

Planningフォームへのルールの追加

この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。

  1. 「計画」ウィンドウを選択し、左上からナビゲータ・アイコン「ナビゲータ」をクリックして、「フォーム」(「作成および管理」の下)に移動します。「製品ボリューム」フォームを選択します。
  2. フォーム・マネージャ
  3. フォームを編集します。「Groovy製品収益の計算」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
  4. 保存後に実行

フォーカスした計算ルールのテスト

この項では、製品ボリューム分析ダッシュボードでデータを編集して、Groovyルールをテストします。

  1. ホーム・ページで、「ダッシュボード」をクリックします。「製品量分析」ダッシュボードを開きます。
  2. 製品量分析ダッシュボード
  3. 「Envoy標準ノートブック」で、「1月」の製品ボリュームを編集します。「Ultra Notebook 13 in」で、「March」の製品ボリュームを編集します。(ダッシュボードではなく)フォームを保存します。
  4. 「製品ボリューム」フォームを保存します。
  5. 「OK」をクリックして、情報メッセージを閉じます。変更が「製品売上」フォームに反映されます。
  6. 変更は「Product Revenue」フォームに反映されます。
  7. ダッシュボードを閉じます。(「アプリケーション」の下の)「ジョブ」にナビゲートし、「Groovy製品収益の計算」ジョブを選択します。
  8. ジョブ・コンソールに表示されるジョブ。
  9. 完了したジョブのログ・メッセージは、ルールを実行したユーザーおよび生成された計算スクリプトを識別します。ジョブの詳細を表示した後、ウィンドウを閉じてホームページに戻ります。
  10. ジョブのログ・メッセージ。

Groovyスクリプトを使用した計算ジョブの実行

この項では、2つのGroovyスクリプトを作成します。1つはフォーム内の編集済メンバーの製品収益を計算し、もう1つは最初の計算を実行する計算ジョブを実行します。2番目のスクリプトはフォームに添付され、データの保存時に実行され、1番目のスクリプトはRTPを使用して、2番目のスクリプトから渡された編集済メンバーを取得します。別のルールによってコールされるスタンドアロン・ルールに計算をオフロードすると、効率的な方法でコードの保守、テストおよび再利用が可能になります。

実行時プロンプトを使用した集中計算用のGroovyスクリプトの作成

  1. 「計算マネージャ」ウィンドウを選択し、OEP_FSプラン・タイプで「Groovy Calculate Product Revenue RTPs」という名前のルールを作成します。
  2. 新規オブジェクト
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. ルール・エディタのオプション
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. /*RTPS: {editedMembers}*/ 
    String calcScript = """Fix($rtps.editedMembers)
    "OFS_Calculated"
    (
       "OFS_Product Revenue" = "OFS_Volume" * "OFS_Avg Selling Price";
    ) 
    ENDFIX"""
    println("The following calc script was executed by $operation.user.fullName: \n $calcScript") 
    return calcScript 
    

    ランタイム・プロンプトを定義して、最初の行で編集したメンバーを受け入れます。

    編集済メンバーを修正して、編集済セルの製品収益を計算する計算スクリプトを生成します。

    ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。

    計算スクリプトを返します。これが実行されます。

  7. ツールバーで、保存(保存)をクリックしてスクリプトを保存します。
  8. 検証およびデプロイ (検証およびデプロイ)をクリックします。編集済メンバーRTPで、検証目的でAccessoriesの値を入力し、「OK」をクリックします。
  9. ノート:

    このステップでは、ルールは実行されません。ただし、検証プロセスを成功させるには、有効なメンバーを入力する必要があります。
  10. プロンプトが表示されたら、「OK」をクリックします。

計算ジョブを実行するGroovyルールの作成

次に、2番目のGroovyルールを作成します。このルールは、変数を渡してGroovy製品収益の計算RTPルールを実行する計算ジョブを実行します。

  1. Calculation Managerで、OEP_FSプラン・タイプに「Groovy Calculate Product Revenue by Calling Execute Job」という名前のルールを作成します。
  2. 新規オブジェクト
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. ルール・エディタのオプション
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. // Capture the edited periods and products
    Set<String> editedMembers = [] 
    operation.grid.dataCellIterator({DataCell cell -> cell.edited}, MemberNameType.ESSBASE_NAME).each { DataCell cell ->
            editedMembers << cell.periodName << cell.getMemberName("Product") 
        }
    
    if(editedMembers.size() == 0){ 
        println("No edited cells found!")
        return;
    }
    
    // Execute the job that calculates the product revenues
    JobFactory jf = operation.application.jobFactory 
    
    List<DataGrid.HeaderCell> povMemberCells = operation.grid.pov.findAll{ DataGrid.HeaderCell it -> it.dimName != 
    	"Plan Element" } 
    
    Job job = executeJob(jf.job("Groovy Calculate Product Revenue RTPs", "Rules", 
    	["editedMembers" : cscParams(povMemberCells, editedMembers)])) 
    

    一意の編集済メンバーを取得するセットを定義します。

    編集済メンバーを取得します。

    編集されたメンバーがあるかどうかを確認します。何も編集されていない場合は、それ以上の処理は必要ないため、スクリプトから戻ります。

    ジョブ・ファクトリを取得します。

    スクリプトにはプラン要素ディメンション・メンバーのメンバー・ブロックがあるため、プラン要素以外のディメンションのPOVメンバー・ヘッダー・セルのリストを取得します。

    POVおよび編集したメンバーをeditedMembersランタイム・プロンプトの値として渡して、「Groovy製品収益RTPの計算」ルールを実行します。

  7. ツールバーで、保存 (保存)をクリックしてスクリプトを保存し、ValidateAndDeploy (検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。「計算マネージャ」ウィンドウは開いたままにします。

Planningフォームへのルールの追加

この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。

  1. 「計画」ウィンドウを選択し、左上からナビゲータ・アイコン「ナビゲータ」をクリックして、「フォーム」(「作成および管理」の下)に移動します。「製品ボリューム」フォームを選択します。
  2. フォーム・マネージャ
  3. フォームを編集します。選択したルールから「Groovy製品収益の計算」ルールを削除します。「実行ジョブのコールによる製品収益の計算」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
  4. 「製品ボリューム」フォームへの「ジョブの実行」ルールの追加

計算ジョブをコールするためのGroovyルールのテスト

この項では、製品ボリューム分析ダッシュボードでデータを編集して、Groovyルールをテストします。

  1. ホーム・ページで、「ダッシュボード」をクリックします。「製品量分析」ダッシュボードを開きます。
  2. 製品量分析ダッシュボード
  3. 「Envoy標準ノートブック」で、「1月」の製品ボリュームを編集します。「Ultra Notebook 13 in」で、「March」の製品ボリュームを編集します。(ダッシュボードではなく)フォームを保存します。
  4. 「製品ボリューム」フォームを保存します。
  5. 「OK」をクリックして、情報メッセージを閉じます。変更が「製品売上」フォームに反映されます。
  6. 変更は「Product Revenue」フォームに反映されます。
  7. ダッシュボードを閉じます。(「アプリケーション」の下の)「ジョブ」にナビゲートし、「実行ジョブのコールによる製品収益の計算」ジョブを選択します。
  8. ジョブ・コンソールに表示されるジョブ。
  9. ジョブ詳細では、「Groovy製品収益RTPの計算」ルールが子ジョブとしてリストされます。子ジョブをクリックします。
  10. ジョブ詳細に表示される子ジョブ。
  11. 子ジョブの詳細で、「編集済メンバー」プロンプトのスクリプトに渡されたメンバーのリストを確認できます。完了したジョブのログ・メッセージは、ルールを実行したユーザーおよび生成された計算スクリプトを識別します。ジョブの詳細を表示した後、ウィンドウを閉じてホームページに戻ります。
  12. ジョブのログ・メッセージ。

詳細なGroovy処理による編集済データのインライン計算スクリプトの生成

EPMオブジェクト・モデルは、計算スクリプトをインラインで実行し、さらに評価するためにGroovyスクリプトに戻る方法を提供します。この項では、Groovyスクリプトを実装して編集済製品の製品収益を計算し、計算されたセルの数をカウントすることで、この計算スクリプトおよびGroovy統合を確認します。

Groovyスクリプトの作成

  1. 「計算マネージャ」ウィンドウを選択し、OEP_FSプラン・タイプに「Groovy計算スクリプトの実行」という名前のルールを作成します。
  2. 新規オブジェクト
  3. ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
  4. ルール・エディタのオプション
  5. このスクリプトをコピーして、エディタに貼り付けます:
  6. // Capture the edited periods and products
    Set<String> editedMembers = [] 
    operation.grid.dataCellIterator({DataCell cell -> cell.edited}, MemberNameType.ESSBASE_NAME).each {
    DataCell cell ->
            editedMembers << cell.periodName << cell.getMemberName("Product") 
        }
    
    if(editedMembers.size() == 0){ 
        println("No edited cells found!")
        return;
    }
    
    // Generate the calc script to calculate revenue for the products whose volumes were edited and to count and return the number of cells calculated
    String calcScript = """
    VAR numCellsCalculated = 0;
    Fix(${cscParams(operation.grid.pov, editedMembers)}) 
    "OFS_Calculated" (
        "OFS_Product Revenue" = "OFS_Volume" * "OFS_Avg Selling Price";
        numCellsCalculated = numCellsCalculated + 1;
    )
    EndFix;
    Fix(${cscParams(operation.grid.pov, editedMembers)})
    "OFS_Calculated" (
        @RETURN(@HspNumToString(numCellsCalculated), ERROR);
    )
    EndFix;
    """
    Cube cube = operation.application.getCube("OEP_FS") 
    try {
        cube.executeCalcScript(calcScript) 
    } catch(CalcScriptException e) {
        println("The following calc script was executed by $operation.user.fullName: 
        \n $calcScript") 
        println("Total number of cells calculated: $e.atReturnMessage")  
    }          
    

    一意の編集済メンバーを取得するセットを定義します。

    編集済メンバーを取得します。

    メンバーが編集されたかどうかを確認します。何も編集されていない場合は、それ以上の処理は必要ないため、スクリプトから戻ります。

    POVメンバーおよび編集済メンバーを修正して、編集済セルの製品収益を計算する計算スクリプトを生成します。計算スクリプトは、@RETURNコマンドを使用して計算されたセルの数も返します。

    OEP_FSキューブを取得します。

    キューブに対して計算スクリプトを実行します。

    ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。

    計算スクリプトによって返される計算済セルの合計数を出力します。

  7. ツールバーで、保存 (保存)をクリックしてスクリプトを保存し、ValidateAndDeploy (検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。

Planningフォームへのルールの追加

この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。

  1. 左上からナビゲータ・アイコン「ナビゲータ」をクリックし、「フォーム」(「作成および管理」の下)にナビゲートします。「製品ボリューム」フォームを選択します。
  2. フォーム・マネージャ
  3. フォームを編集します。選択したビジネス・ルールから「実行ジョブのコールによる製品収益の計算」ルールを削除します。「Groovy計算スクリプトの実行」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。
  4. 保存後に実行

計算スクリプトを実行するためのGroovyルールのテスト

この項では、製品ボリューム分析ダッシュボードでデータを編集して、Groovyルールをテストします。

  1. ホーム・ページで、「ダッシュボード」をクリックします。「製品量分析」ダッシュボードを開きます。
  2. 製品量分析ダッシュボード
  3. 「Envoy標準ノートブック」で、「1月」の製品ボリュームを編集します。「Ultra Notebook 13 in」で、「March」の製品ボリュームを編集します。(ダッシュボードではなく)フォームを保存します。
  4. 「製品ボリューム」フォームを保存します。
  5. 「OK」をクリックして、情報メッセージを閉じます。変更が「製品売上」フォームに反映されます。
  6. 変更は「Product Revenue」フォームに反映されます。
  7. ダッシュボードを閉じます。「ジョブ」にナビゲートし、「Groovy計算スクリプトの実行」ジョブを選択します。
  8. ジョブ・コンソールに表示されるジョブ。
  9. 完了したジョブのログ・メッセージは、ルールを実行したユーザー、生成された計算スクリプト、および計算済セルの数を識別します。
  10. ジョブのログ・メッセージ。

その他の学習リソース

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

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