簡介
本教學課程示範如何實作 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 之儲存格的背景顏色設為顏色 O (0x00BFFF)、資料值小於或等於 50000 的儲存格設為顏色 O (0xFF8C00),以及資料值超過 50000 的儲存格設為顏色 O (0x00FA9A)。
附註:
定義 Groovy 指令碼之後,該指令碼可以與任何表單建立關聯,與需要在每個表單內容中定義的「資料驗證」規則不同。- 開啟 Calculation Manager,並在 Plan1 立方體中建立名為 Groovy Set Background Color 的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。關閉 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
}
指令碼會在目前資料方格
operation.grid
中的每個資料儲存格上重複,由 dataCellIterator
傳回。
隱含的 "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
(O)
指令碼會檢查資料值是否小於或等於 50000。
如果為 TRUE,則命令檔會將儲存格的背景顏色設為
0xFF8C00
(O)
如果儲存格的資料值超過 50000,則指令碼會將儲存格的背景顏色設為
0x00FA9A ( █ )




對指令碼進行分析和除錯
在本節中,您將瞭解如何使用 DataGrid 介面提供的迭代器、設定檔程式碼,以及將除錯敘述句新增至工作主控台。
- 開啟 Calculation Manager,並在 Plan1 立方體中建立名為 Groovy Iterator Performance 的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 Groovy 命令檔。
- 複製此命令檔並貼到編輯器中:
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。關閉 Calculation Manager。
- 從「導覽器」中,開啟「表單管理程式」,然後選取 EmployeeDriverForm 表單。
- 編輯表單並建立規則「Groovy 迭代器效能」的關聯,以在儲存後執行。儲存表單並開啟「表單管理程式」視窗。
- 從「導覽器」或首頁,按一下資料。開啟 EmployeeDriverForm 表單,並將等級 1 的最低薪資變更為 35000 ,並將等級 2 的最低獎金變更為 2000 。
- 儲存並關閉表單。瀏覽至「工作」主控台。
- 按一下 Groovy Iterator 效能以顯示工作詳細資訊。按一下已完成狀態,即可查看 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')
![]()
定義名為
benchmark()
的公用程式方法,該方法使用指定的 GridIterator
在其儲存格上重複,並列印儲存格所代表之所有維度的成員名稱清單及其資料。它也會列印重複程式花費的時間。
啟動計時器。
使用指定的
GridIterator
重複每個儲存格,並列印儲存格所代表之所有維度的成員名稱清單,以及其資料值與格式化值。$it.data
會傳回儲存格的數值,而 $it.formattedValue
會傳回使用者輸入的非數值,例如文字、智慧列示或日期。
將重複程式花費的時間列印到工作主控台。
將除錯訊息記錄到工作主控台。
呼叫含有重複程式的
benchmark()
方法,以重複目前資料方格中的每個儲存格。
使用迭代器呼叫 benchmark() 方法,以重複目前資料方格中編輯的儲存格。
秘訣:
此重複程式可與傳回布林值 (例如 locked、missing、valid、readOnly、validIntersection 等) 之 DataCell 物件上的任何特性搭配使用。 使用重複程式呼叫
benchmark()
方法,以重複目前資料方格中的「最低薪資」與「最低獎金」資料儲存格。





第一個重複程式會列印所有儲存格與資料值,第二個重複程式只會列印編輯的兩個儲存格,第三個重複程式則只會列印「最低薪資」與「最低獎金」欄的儲存格。
設定預設資料值
在本節中,您將瞭解如何使用 DataGridBuilder
介面來設定方格中的預設資料值。
- 開啟 Calculation Manager,並在 Plan1 立方體中建立名為 Groovy 重設等級資料的規則。
- 在「規則編輯器」中,將「設計工具」選項變更為編輯命令檔,然後將「命令檔類型」設為 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)
}
- 在工具列上,按一下
(儲存) 以儲存命令檔,然後按一下
(驗證並部署) 以驗證並部署命令檔。提示時,按一下確定。關閉 Calculation Manager。
- 從「導覽器」中,開啟「表單管理程式」,並將「Groovy 重設等級資料」規則與 EmployeeDriverForm 表單建立關聯。儲存表單,然後關閉「表單管理程式」視窗。
- 在「規劃首頁」上,按一下資料。開啟 EmployeeDriverForm 表單,按一下動作,然後從下拉式功能表中選取商業規則。按一下 Groovy 重設成績資料以執行規則。
- 規則執行成功後,按一下「資訊」對話方塊中的確定,並確認方格資料已重設。
- 關閉表單並瀏覽以開啟「工作」主控台。
- 按一下 Groovy 重設成績資料以顯示職務詳細資料。按一下已完成狀態,即可查看接受和 (或) 拒絕的儲存格數目詳細資訊。
為 Plan 1 立方體建立立方體物件。
取得立方體的 DataGridBuilder;定義命令檔提供日期值的格式。
附註:
DataGridBuilder 也支援代表系統使用者儲存資料,方法是接受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 。