簡介
本教學課程示範在 Oracle EPM Cloud Planning 中,產生聚焦計算指令碼的多種方法,以僅計算已編輯的資料,而不是整個資料輸入表單。
背景
Groovy EPM 物件模型可讓您決定資料輸入方格中的哪些儲存格已編輯,然後產生焦點 Essbase 計算,僅計算受資料輸入影響的那些成員。
在本自學課程中,您將使用「產品數量分析」儀表板。最上層形式「產品數量」,會擷取每月期間各種產品的數量。底部表單「產品收益」會顯示各種產品的收益。編輯最上層表單時,您只想以底部表單計算已編輯產品的收益。

本教程分為三個部分,涵蓋三個不同的計算已編輯產品的方法:
- 產生和執行集中式計算命令檔
- 建立可執行現有計算工作的 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 中設定使用者變數
首先,您可以設定所需的使用者變數來使用「產品數量分析」儀表板。
- 從「首頁」中按一下工具,然後選取使用者偏好設定。
- 選取使用者變數頁籤。
- 輸入下列變數定義:
- 按一下儲存。在確認訊息中,按一下確定,然後返回首頁。

| 使用者變數 | 成員 |
|---|---|
| 報表幣別 | 美元 |
| 貨幣 | 美元 |
| 實體 | 銷售 - 美國 |
| 案例 | 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 。
- 在「地點明細」下進行下列選取:
- 應用程式類型:EPM Cloud
- 應用:HP4
- 立方體:OEP_FS
- 在「匯入選項」下,選取覆寫現有物件。

- 按一下匯入。複查匯入結果 (可說是「已更新」或「已插入」),然後按一下確定。

- 按一下取消,以關閉「匯入」對話方塊。
產生已編輯產品的集中計算指令碼
在本節中,您在 Planning 中實作 Groovy 指令碼,以計算已編輯產品的產品收益。
建立 Groovy 指令碼
- 在 Calculation Manager 中,在 OEP_FS 計劃類型中建立名為 Groovy 計算產品收益 的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。保持 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 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 指令碼規則新增至「產品數量」表單,以便在儲存後執行。
- 選取「計劃」視窗,然後從左上方按一下
「瀏覽器」,然後瀏覽至表單 (在「建立與管理」底下)。選取產品數量表單。 - 編輯表單。新增 Groovy 計算產品收益規則,並將其設為儲存後執行。儲存表單並開啟「表單管理程式」視窗。

測試重點計算規則
在此區段中,您可以編輯「產品數量分析」儀表板中的資料來測試 Groovy 規則。
- 從首頁中,按一下儀表板。開啟產品數量分析操作面板。
- 如果是 Envoy 標準筆記型電腦,請編輯一月的產品數量。若為 Ultra Notebook 13 in ,請編輯 March 的產品數量。儲存表單 (而非儀表板)。
- 按一下確定,關閉資訊訊息。變更會反映在產品收益表單中。
- 關閉儀表板。導覽至工作 (在「應用程式」下),然後選取 Groovy 計算產品收益工作。
- 已完成工作的日誌訊息會識別執行規則的使用者和產生的計算命令檔。在檢視工作詳細資料後,關閉視窗並返回首頁。



使用 Groovy 指令碼執行計算工作
在此區段中,您可以建立兩個 Groovy 指令碼:一個用於計算表單中已編輯成員的產品收益,第二個用於執行第一個計算的計算工作。第二個指令碼會附加至表單並在儲存資料時執行,而第一個指令碼會使用 RTP 從第二個指令碼擷取傳送至該指令碼的已編輯成員。將計算卸載至由另一個規則呼叫的獨立規則中,允許以有效率的方式維護、測試及重複使用程式碼。
使用執行時期提示建立焦點計算的 Groovy 指令碼
- 選取「計算管理器」視窗,並在 OEP_FS 計劃類型中建立名為 Groovy 計算產品收益 RTP 的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔。 - 按一下
(驗證與部署)。對於「編輯的成員 RTP」,輸入 Accessories值以進行驗證,然後按一下確定。 - 提示時,按一下確定。

/*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 規則以執行計算工作
現在您建立了第二個 Groovy 規則,該規則會執行將變數傳遞給 Groovy 計算產品收入 RTPs 規則並執行的計算工作。
- 在 Calculation Manager 中,在 OEP_FS 計劃類型中建立名為 Groovy Calculate Product Revenue by Calling Execute Job 的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。保持 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; } // 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 指令碼規則新增至「產品數量」表單,以便在儲存後執行。
- 選取「計劃」視窗,然後從左上方按一下
「瀏覽器」,然後瀏覽至表單 (在「建立與管理」底下)。選取產品數量表單。 - 編輯表單。移除所選規則的 Groovy 計算產品收益規則。新增 Groovy 透過呼叫執行工作計算產品收益規則,並將其設為儲存後執行。儲存表單並開啟「表單管理程式」視窗。


測試 Groovy 規則以呼叫計算工作
在此區段中,您可以編輯「產品數量分析」儀表板中的資料來測試 Groovy 規則。
- 從首頁中,按一下儀表板。開啟產品數量分析操作面板。
- 如果是 Envoy 標準筆記型電腦,請編輯一月的產品數量。若為 Ultra Notebook 13 in ,請編輯 March 的產品數量。儲存表單 (而非儀表板)。
- 按一下確定,關閉資訊訊息。變更會反映在產品收益表單中。
- 關閉儀表板。導覽至工作 (在「應用程式」底下),然後選取透過呼叫執行工作計算產品收益工作。
- 在工作詳細資料中, Groovy 計算產品收益 RTP 規則會列為下階工作。按一下子項工作。
- 在子項工作詳細資訊中,您可以看到傳送給「編輯的成員」提示之命令檔的成員清單。已完成工作的日誌訊息會識別執行規則的使用者和產生的計算命令檔。檢視工作詳細資料後,關閉視窗並返回首頁。





使用進一步的 Groovy 處理來產生已編輯資料的內嵌計算指令碼
EPM 物件模型提供以內嵌方式執行計算指令碼,然後返回 Groovy 指令碼以供進一步評估。在本節中,您可以透過實作 Groovy 指令碼來探索此計算指令碼與 Groovy 整合,以計算已編輯產品的產品收入,並計算已計算的儲存格數目。
建立 Groovy 指令碼
- 選取 Calculation Manager 視窗,並在 OEP_FS 計畫類型中建立名為 Groovy 執行計算指令碼的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。關閉 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 指令碼規則新增至「產品數量」表單,以便在儲存後執行。
- 從左上方按一下
導覽器,然後瀏覽至表單 (在「建立與管理」底下)。選取產品數量表單。 - 編輯表單。從選取的商業規則中移除透過呼叫執行工作計算產品收益規則。新增 Groovy 執行計算指令碼規則,並將其設為儲存後執行。儲存表單並開啟「表單管理程式」視窗。


測試 Groovy 規則以執行計算指令檔
在此區段中,您可以編輯「產品數量分析」儀表板中的資料來測試 Groovy 規則。
- 從首頁中,按一下儀表板。開啟產品數量分析操作面板。
- 如果是 Envoy 標準筆記型電腦,請編輯一月的產品數量。若為 Ultra Notebook 13 in ,請編輯 March 的產品數量。儲存表單 (而非儀表板)。
- 按一下確定,以關閉資訊訊息。變更會反映在產品收益表單中。
- 關閉儀表板。瀏覽至工作,然後選取 Groovy 執行計算指令碼工作。
- 已完成工作的日誌訊息會識別執行規則的使用者、產生的計算命令檔,以及計算的儲存格數目。





相關連結
其他學習資源
在 docs.oracle.com/learn 上探索其他實驗室,或在 Oracle Learning YouTube 頻道上存取更多免費學習內容。此外,請造訪 Oracle University 以檢視可用的訓練資源。
如需產品文件,請造訪 Oracle Help Center 。