使用 Groovy 規則來計算修改過的資料

在本主題中,我們將說明如何使用 Groovy 規則只計算修改過的資料,以改善商業程序計算效能。

在表單中更新資料後,資料需要計算。當您使用商業規則來計算標準計算指令碼時,表單的所有資料都會經過計算。如果有大型表單或計算會影響資料庫的廣大範圍,計算效能可能變慢。

您可以用滑鼠右鍵按一下列,手動每次計算一列。這樣可以加快計算效能,但在變更很多列的資料時,就不是很好的作法。

Groovy 規則可以動態聚焦於您更新的儲存格。

在表單上使用 Groovy 規則有兩種方式:

  • 當您在儲存時計算資料,Groovy 規則會根據您更新的儲存格,產生含有 FIX 陳述式的計算指令碼。然後會在伺服器上對修改過的資料執行計算,而不是表單上的所有記錄。最佳作法是對您要更新大量資料的大型表單使用此選項。

  • 當您在儲存之前計算資料時,Groovy 規則會在記憶體中計算修改過的資料,而且在將結果儲存至資料庫之前,先在表單上顯示結果。當您只要執行很少的計算時,或當您想要執行很複雜的程序式計算,而難以內建到大綱時,最佳作法是使用此選項。

在此範例中,以薪資百分比來計算獎金。

Groovy 規則,以薪資百分比計算獎金

讓我們看一下儲存時計算。請注意,此表單已定義 Groovy 規則在儲存時計算。

顯示執行之後執行計算指令碼的 ManageEmployees 表單

在表單上更新部分薪資資料和部分電話號碼之後,電話號碼會儲存,但不影響計算。

Groovy 規則,變更資料和儲存

當您儲存表單來執行相關聯的 Groovy 規則時,計算的獎金資料會顯示在表單上。

Groovy 規則,表單上計算的獎金資料

檢視工作詳細資料,此處為 Groovy 規則建立的計算指令碼。請注意,FIX 陳述式只包含修改過的員工。

Groovy 規則指令碼,顯示 Fix 陳述式只包含修改過的員工

讓我們開啟 Calculation Manager 來查看 Groovy 規則。此第一段反覆檢查表單中的方格,尋找已編輯的薪資儲存格,並收集相關的員工名稱。

Groovy 規則指令碼,顯示 dataCellIterator 方法

這一段產生計算指令碼;它從表單中尋找 POV 成員,然後針對 POV 成員和已編輯的員工建立 FIX 陳述式。

Groovy 規則指令碼,醒目提示 FIX 陳述式

現在讓我們看一下儲存之前計算。

這是相同的表單,但現在定義另一個 Groovy 規則在儲存之前計算。

Groovy 規則表單,顯示儲存前執行

再次更新部分薪資資料和部分電話號碼之後,儲存表單來執行相關聯的 Groovy 規則。已計算的獎金資料會顯示在表單上,但當您查看工作詳細資料時,您可以看到部分獎金資料已更新,但這次沒有產生計算指令碼。

Groovy 規則,工作詳細資料,儲存前執行

Calculation Manager 中開啟 Groovy 規則。

類似於第一個規則,指令碼會反覆檢查表單中的方格,尋找已編輯的薪資儲存格,並收集相關的員工名稱。然後只針對已編輯的員工計算獎金資料。請注意,並未產生任何 Oracle Essbase 計算指令碼。

Groovy 規則指令碼,沒有產生 Essbase 計算指令碼

Groovy 規則也適用於 Oracle Smart View for Office 中的規劃表單。智慧型檢視提供 Microsoft Excel 的完整功能讓您大規模調整資料,而表單上設為儲存之前或之後執行的任何 Groovy 規則會在您提交資料時執行。

智慧型檢視中的 Groovy 規則