本主题将介绍如何通过使用 Groovy 规则仅计算已修改的数据来提高业务流程计算性能。
在更新某个表单中的数据后,需对其进行计算。当使用业务规则计算标准计算脚本时,将计算该表单的所有数据。对于大型表单或者影响数据库较大区域的计算,您可能会看到计算性能出现下降。
通过右键单击行,可以一次手动计算一行。这可加快计算速度,但要更改多行数据时,这不是一个好的选择。
Groovy 规则可以动态重点关注更新的单元格。
可以采用以下两种方式在表单上使用 Groovy 规则:
若在保存后计算数据,Groovy 规则会基于更新的单元格使用 FIX 语句生成计算脚本。然后,在服务器上针对修改的数据(而不是表单上的所有记录)运行计算。最佳做法是,对于要更新大量数据的大型表单,可以使用此选项。
若在保存前计算数据,Groovy 规则将计算内存中修改的数据并在表单上显示结果,然后再保存到数据库中。最佳做法是,当要执行少量计算时,或者希望执行难以构建到大纲中的复杂过程计算时,可以使用此选项。
在此示例中,按薪金的百分比计算奖金。
让我们来看一下保存后计算。请注意,为此表单定义了 Groovy 规则以在保存后运行计算。
在更新表单上的一些薪金数据和一些电话号码之后,电话号码会保存但不影响计算。
当保存表单以运行关联的 Groovy 规则时,计算的奖金数据将显示在表单上。
查看作业详细信息,这里是 Groovy 规则创建的计算脚本。请注意,FIX 语句仅包括修改的员工。
让我们打开 Calculation Manager 以查看 Groovy 规则。此第一部分迭代表单中的网格,以查找已编辑的“薪金”单元格并收集相关的员工姓名。
本部分生成计算脚本;它在表单中查找 POV 成员,然后创建针对 POV 成员和编辑过的员工的 FIX 语句。
现在,我们来看一下在保存前计算。
还是同一个表单,但现在为它定义了一个不同的 Groovy 规则以在保存前运行计算。
再次更新薪金数据和一些电话号码后,保存表单以运行关联的 Groovy 规则。计算的奖金数据显示在表单上,查看作业详细信息时,您可以看到一些奖金数据已更新,但这次未生成计算脚本。
在 Calculation Manager 中打开 Groovy 规则。
与第一个规则类似,此脚本迭代表单中的网格,以查找编辑过的“薪金”单元格并收集相关的员工姓名。然后,它仅计算编辑过的员工的奖金数据。请注意,这次没有生成 Oracle Essbase 计算脚本。
Groovy 规则还可以处理 Oracle Smart View for Office 中的 Planning 表单。通过 Smart View,您可以使用 Microsoft Excel 的所有功能对数据进行批量调整,提交数据时,将执行为表单设置的在保存前或保存后运行的任何 Groovy 规则。