イントロダクション
このチュートリアルでは、Oracle EPM Cloud Planningでフォーカスされた計算スクリプトの生成方法を複数示し、データ入力フォーム全体ではなく、編集されたデータのみを計算します。
バックグラウンド
Groovy EPMオブジェクト・モデルを使用すると、データ入力グリッド内のどのセルが編集されているかを判断し、フォーカスされたEssbase計算を生成して、データ入力の影響を受けるメンバーのみを計算できます。
このチュートリアルでは、Product Volume Analysisダッシュボードを使用します。上部のフォーム「Product Volume」は、月単位で様々な製品の量を取得します。下部のフォーム「Product Revenue」には、様々な製品の収益が表示されます。上部フォームを編集する場合、編集した製品についてのみ、下部フォームで売上を計算します。

このチュートリアルは3つの部分に分かれており、編集した製品を計算するための3つの異なる方法について説明しています。
- フォーカスした計算スクリプトの生成および実行
- 既存の計算ジョブを実行するGroovyスクリプトの作成
- フォーカスした計算スクリプトを生成して実行し、さらに評価するために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ダッシュボードを操作します。
- ホーム・ページで、「ツール」をクリックし、「ユーザー・プリファレンス」を選択します。
- 「ユーザー変数」タブを選択します。
- 次の変数定義を入力します。
- 「保存」をクリックします。確認メッセージで、「OK」をクリックし、ホーム・ページに戻ります。

| ユーザー変数 | メンバー |
|---|---|
| レポート通貨 | USD |
| 通貨 | USD |
| エンティティ | 米国営業 |
| Scenario | OEP_Plan |
| Version | OEP_Working |
Planningのランタイム・プロンプトの変数のインポート
次に、計算変数をOEP_FSキューブにインポートして、このチュートリアルの後半で使用されるランタイム・プロンプト(RTP)をサポートします。
- HP4_OEP_FS_Variables.xmlのリンクを右クリックして、ファイルをローカル・ドライブに保存します。
- 左上から
「ナビゲータ」をクリックし、「ルール」(「作成および管理」の下)に移動してCalculation Managerを開きます。システム・ビューで、「EPM Cloud」→「HP4」を展開します。OEP_FSを右クリックし、「インポート」を選択します。 - 「ファイル・インポートの詳細」で、ローカル・ドライブからHP4_OEP_FS_Variables.xmlを選択して参照します。
- 「Location Details」で、次の項目を選択します。
- アプリケーション・タイプ: EPM Cloud
- アプリケーション: HP4
- キューブ: OEP_FS
- 「インポート・オプション」で、「既存のオブジェクトの上書き」を選択します。

- 「インポート」をクリックします。インポート結果(更新済または挿入済など)を確認し、「OK」をクリックします。

- 「取消」をクリックして、「インポート」ダイアログ・ボックスを閉じます。
編集済製品のフォーカス計算スクリプトの生成
この項では、PlanningでGroovyスクリプトを実装して、編集済製品の製品収益を計算します。
Groovyスクリプトの作成
- Calculation Managerで、OEP_FSプラン・タイプに「Groovy Calculate Product Revenue」という名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。「計算マネージャ」ウィンドウは開いたままにします。


// 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計算スクリプト・コマンドにプラグインできます。
ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。
計算スクリプトを返します。これが実行されます。
Planningフォームへのルールの追加
この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。
- 「計画」ウィンドウを選択し、左上から
「ナビゲータ」をクリックして、「フォーム」(「作成および管理」の下)に移動します。「製品ボリューム」フォームを選択します。 - フォームを編集します。「Groovy製品収益の計算」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。

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



Groovyスクリプトを使用した計算ジョブの実行
この項では、2つのGroovyスクリプトを作成します。1つはフォーム内の編集済メンバーの製品収益を計算し、もう1つは最初の計算を実行する計算ジョブを実行します。2番目のスクリプトはフォームに添付され、データの保存時に実行され、1番目のスクリプトはRTPを使用して、2番目のスクリプトから渡された編集済メンバーを取得します。別のルールによってコールされるスタンドアロン・ルールに計算をオフロードすると、効率的な方法でコードの保守、テストおよび再利用が可能になります。
実行時プロンプトを使用した集中計算用のGroovyスクリプトの作成
- 「計算マネージャ」ウィンドウを選択し、OEP_FSプラン・タイプで「Groovy Calculate Product Revenue RTPs」という名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存します。
(検証およびデプロイ)をクリックします。編集済メンバーRTPで、検証目的でAccessoriesの値を入力し、「OK」をクリックします。- プロンプトが表示されたら、「OK」をクリックします。

/*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
ランタイム・プロンプトを定義して、最初の行で編集したメンバーを受け入れます。
編集済メンバーを修正して、編集済セルの製品収益を計算する計算スクリプトを生成します。
ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。
計算スクリプトを返します。これが実行されます。
ノート:
このステップでは、ルールは実行されません。ただし、検証プロセスを成功させるには、有効なメンバーを入力する必要があります。計算ジョブを実行するGroovyルールの作成
次に、2番目のGroovyルールを作成します。このルールは、変数を渡してGroovy製品収益の計算RTPルールを実行する計算ジョブを実行します。
- Calculation Managerで、OEP_FSプラン・タイプに「Groovy Calculate Product Revenue by Calling Execute Job」という名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。「計算マネージャ」ウィンドウは開いたままにします。


// 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の計算」ルールを実行します。
Planningフォームへのルールの追加
この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。
- 「計画」ウィンドウを選択し、左上から
「ナビゲータ」をクリックして、「フォーム」(「作成および管理」の下)に移動します。「製品ボリューム」フォームを選択します。 - フォームを編集します。選択したルールから「Groovy製品収益の計算」ルールを削除します。「実行ジョブのコールによる製品収益の計算」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。


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





詳細なGroovy処理による編集済データのインライン計算スクリプトの生成
EPMオブジェクト・モデルは、計算スクリプトをインラインで実行し、さらに評価するためにGroovyスクリプトに戻る方法を提供します。この項では、Groovyスクリプトを実装して編集済製品の製品収益を計算し、計算されたセルの数をカウントすることで、この計算スクリプトおよびGroovy統合を確認します。
Groovyスクリプトの作成
- 「計算マネージャ」ウィンドウを選択し、OEP_FSプラン・タイプに「Groovy計算スクリプトの実行」という名前のルールを作成します。
- ルール・エディタで、デザイナ・オプションを「スクリプトの編集」に変更し、スクリプト・タイプを「Groovyスクリプト」に設定します。
- このスクリプトをコピーして、エディタに貼り付けます:
- ツールバーで、
(保存)をクリックしてスクリプトを保存し、
(検証およびデプロイ)をクリックしてスクリプトを検証およびデプロイします。プロンプトが表示されたら、「OK」をクリックします。Calculation Managerを閉じます。


// 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キューブを取得します。
キューブに対して計算スクリプトを実行します。
ルールを実行したユーザー、および生成された計算スクリプトを示すメッセージを出力します。
計算スクリプトによって返される計算済セルの合計数を出力します。
Planningフォームへのルールの追加
この項では、保存後に実行するGroovyスクリプト・ルールを「Product Volume」フォームに追加します。
- 左上から
「ナビゲータ」をクリックし、「フォーム」(「作成および管理」の下)にナビゲートします。「製品ボリューム」フォームを選択します。 - フォームを編集します。選択したビジネス・ルールから「実行ジョブのコールによる製品収益の計算」ルールを削除します。「Groovy計算スクリプトの実行」ルールを追加し、「保存後に実行」に設定します。フォームを保存し、「フォーム・マネージャ」ウィンドウをクローズします。


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





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