使用 Groovy 规则计算修改的数据

本主题将介绍如何通过使用 Groovy 规则仅计算已修改的数据来提高业务流程计算性能。

在更新某个表单中的数据后,需对其进行计算。当使用业务规则计算标准计算脚本时,将计算该表单的所有数据。对于大型表单或者影响数据库较大区域的计算,您可能会看到计算性能出现下降。

通过右键单击行,可以一次手动计算一行。这可加快计算速度,但要更改多行数据时,这不是一个好的选择。

Groovy 规则可以动态重点关注更新的单元格。

可以采用以下两种方式在表单上使用 Groovy 规则:

  • 若在保存后计算数据,Groovy 规则会基于更新的单元格使用 FIX 语句生成计算脚本。然后,在服务器上针对修改的数据(而不是表单上的所有记录)运行计算。最佳做法是,对于要更新大量数据的大型表单,可以使用此选项。

  • 若在保存前计算数据,Groovy 规则将计算内存中修改的数据并在表单上显示结果,然后再保存到数据库中。最佳做法是,当要执行少量计算时,或者希望执行难以构建到大纲中的复杂过程计算时,可以使用此选项。

在此示例中,按薪金的百分比计算奖金。

Groovy 规则按薪金的百分比计算奖金

让我们来看一下保存后计算。请注意,为此表单定义了 Groovy 规则以在保存后运行计算。

显示保存后运行计算脚本的 ManageEmployees 表单

在更新表单上的一些薪金数据和一些电话号码之后,电话号码会保存但不影响计算。

Groovy 规则更改数据并保存

当保存表单以运行关联的 Groovy 规则时,计算的奖金数据将显示在表单上。

表单上 Groovy 规则计算的奖金数据

查看作业详细信息,这里是 Groovy 规则创建的计算脚本。请注意,FIX 语句仅包括修改的员工。

显示仅包括修改的员工的 FIX 语句的 Groovy 规则脚本

让我们打开 Calculation Manager 以查看 Groovy 规则。此第一部分迭代表单中的网格,以查找已编辑的“薪金”单元格并收集相关的员工姓名。

显示 dataCellIterator 方法的 Groovy 规则脚本

本部分生成计算脚本;它在表单中查找 POV 成员,然后创建针对 POV 成员和编辑过的员工的 FIX 语句。

突出显示 FIX 语句的 Groovy 规则脚本

现在,我们来看一下在保存前计算。

还是同一个表单,但现在为它定义了一个不同的 Groovy 规则以在保存前运行计算。

显示保存前运行的 Groovy 规则表单

再次更新薪金数据和一些电话号码后,保存表单以运行关联的 Groovy 规则。计算的奖金数据显示在表单上,查看作业详细信息时,您可以看到一些奖金数据已更新,但这次未生成计算脚本。

保存前运行的 Groovy 规则作业详细信息

Calculation Manager 中打开 Groovy 规则。

与第一个规则类似,此脚本迭代表单中的网格,以查找编辑过的“薪金”单元格并收集相关的员工姓名。然后,它仅计算编辑过的员工的奖金数据。请注意,这次没有生成 Oracle Essbase 计算脚本。

不生成 Essbase 计算脚本的 Groovy 规则脚本

Groovy 规则还可以处理 Oracle Smart View for Office 中的 Planning 表单。通过 Smart View,您可以使用 Microsoft Excel 的所有功能对数据进行批量调整,提交数据时,将执行为表单设置的在保存前或保存后运行的任何 Groovy 规则。

Smart View 中的 Groovy 规则