业务对象回调函数管理
业务对象的回调函数,类似于数据库的存储过程,是一个在特定时间,完成特定操作的指令脚本功能。通过回调函数,可以实现业务对象的流程执行和跳转。
为了举例说明,我们准备几个业务对象来解释回调函数:
- 物料信息物料的基本信息和库存信息,包括字段物料编号,物料描述,物料库存数,物料库存总价
- 物料价格管理物料的价格信息,包括字段 物料编号,物料描述,单价
- 入库单物料入库单据,包括字段 入库单编号,入库时间,入库数量, 物料编号 引用自物料信息, 物料描述 引用自物料信息
物料信息:
入库单:
物料价格管理:
现在的业务逻辑要求是:
物料信息的库存数和库存总价不能由用户手动更改,而应该是通过业务单据计算出来,比如有入库单添加时,入库单对应的物料自动增加库存数和库存总价。
这个业务逻辑就需要使用回调函数来实现。
添加业务对象回调函数
业务对象回调函数,以下简称回调函数。
在业务对象的编辑页面,把标签选择到回调函数,可以看到回调函数的列表和“新增” “删除"按钮。
点击”新增“按钮,可以添加回调函数,到添加页面。此处举例“入库单新增回调函数”,实现上面说的入库逻辑。
基本信息&选择源表
填写回调函数的名称,回调时间,回调时间是指回调函数执行的时机,可以是如下值:
- 添加前 业务对象添加之前执行回调函数
- 添加后业务对象添加之后执行回调函数
- 更新前业务对象更新之前执行回调函数
- 更新后业务对象更新之后执行回调函数
- 删除前业务对象删除之前执行回调函数
- 删除后业务对象删除之后执行回调函数
几个重要概念
下一个要填写的源表,在此先介绍介个概念:
- 当前数据 回调函数所对应的主体对象 正在进行的操作的数据,比如示例中 回调函数添加给入库单的,而且是入库单添加时候的才执行的回调函数,因此当前数据就是正在添加的入库单单据的数据。
- 目标表 回调函数执行回影响的业务对象,比如本例中,回调函数最终会影响物料信息,所以目标表就是物料信息
- 源表 如果回调函数在执行的过程中,要获取第三方的业务对象的信息才能完成回调函数的执行,这个第三方对象,就是所谓的源表。 比如本示例中,源表就是物料价格管理
回到第一个页面,接着填写如下信息:
- 源表
上面已经解释,此处选择“物料价格管理”。
- 源表过滤
源表过滤就是一个过滤条件,通过该过滤条件,可以从源表中选择一条或者几条符合条件的 数据。 比如 入库单中,物料编号是"A00_01",那么要获取的物料的价格也应该是“A00_01”对应的价格,因此源表过滤可以这样填写:
源表.物料编号 = 当前数据.物料编号
这些字段的填写对于用户来说可能比较困难,所以下面有个字段按钮,已经列出了当前数据和源表的所有字段,用户可以选择。 同时还提供了比较运行符,逻辑运行符。如下图所示:
- 多条源数据用第一条
这是一个check选项,表示当通过过滤条件获得的源数据,如果有多条,是否只使用第一条。
最终的配置效果如下:
选择目标表
第二步,是选择目标表,有关目标表的概念,在前面解释过。 下面是目标表相关信息的填写页面:
要填写的信息如下:
- 目标表
参考前面的解释, 此示例选择“物料信息”
- 目标表过滤
目标表过滤就是一个过滤条件,通过该过滤条件,可以从目标表中选择一条或者几条符合条件的数据。 比如 入库单中,物料编号是"A00_01",那么要获取的物料信息编号也应该是“A00_01”,因此目标表过滤可以这样填写:
目标表.物料编号 = 当前数据.物料编号
和源表过滤一样,此处有“字段”,“比较运行符”,“逻辑运行符”三个帮助按钮。
- 多条目标数据用第一条
这是一个check选项,表示当通过过滤条件获得的目标数据,如果有多条,是否只使用第一条。
- 验证条件
指定验证条件,比如入库单的入库数量填成负数,入库单数量+现有库存因该大于零。因此条件如下:
当前数据.入库数量+ 目标表.物料库存数>=0
- 验证失败提示信息
验证失败之后给用户的提示消息
最终填写的页面如下:
赋值
选择完目标表之后,下一步就是填写 如何给目标表的字段进行赋值。下面是赋值的页面:
页面左侧是目标表的字段列表,点击列表中的字段,可以给选中的字段设置赋值的表达式。
本次示例中,我们需要对目标表的“物理库存数”和“库存总价”进行计算。
首先点击物料库存数, 添加入库单后,物料库存数会增加,因此物料库存数应该等于物料信息自身的库存数值+当前数据.入库数量,如下:
目标表.物料库存数+当前数据.入库数量
然后是库存总价,库存总价应该等于物料信息自身的库存总价+当前数据.入库数量乘以物料的价格,如下所示:
目标表.库存总价+ 当前数据.入库数量* 源表.单价
最后,点击“完成”按钮完成回调函数的添加:
删除业务对象回调函数
删除回调函数比较简单,在回调函数列表,选中要删除的回调函数,点击删除按钮,即可删除回调函数: