应用场景
我们做财务流水记录时,如果采用的方案是在表单中进行余额计算就会产生一个bug,如果需要对某一条流水记录进行修改,修改后,该条记录后面的流水计算的结果都是错的,轻流表单的存储性质造成原始基准数据有修改的情况下不会直接同步更新后续的表,该方案用于解决这个问题。当我们修改某一条流水记录时,该记录往后的所有流水记录重新计算一遍,来达到流水记录每一条计算的余额都是准确的目的!
主流水应用表单
1、添加流水应用
分别添加「流水记录」和「流水变更」两个应用,若已存在自己构建的流水记录,可按照这个方案进行改造
上面截图中,收入金额、支出金额、变动金额为基础数据,可依照你们自身原始逻辑配置。
2、配置变动前余额字段
「变动前余额」采用「数据关联字段」
1、设定目标应用为流水记录(本应用自身)
2、设定目标字段为变动金额(用于对历史余额求和)
3、筛选条件 编号<本单编号(用于计算时只计算本单数据以前的余额)
4、勾选字段右侧的聚合方式,选择求和(用于求和计算)
3、配置变动后余额字段
公式为:NUM(变动前余额)+变动金额
之所以加NUM()函数是因为数据关联字段获取的内容类型为文本,需要通过NUM函数转换为数字类型的内容才可以参与计算。
4、配置历史最新编号字段
「历史最新编号」采用「数据关联」字段
1、设定目标应用为流水记录(本应用自身)
2、设定目标字段为编号(用于获取最新的编号)
3、勾选字段右侧的聚合方式,选择最新数据(用于读取最新的数据编号)
注:本设定需编号为纯数字规则才能生效,因为是利用数字大小来进行的判定
5、本单编号字段
公式为:NUM(历史最新编号)+1
之所以加NUM()函数是因为数据关联字段获取的内容类型为文本,需要通过NUM函数转换为数字类型的内容才可以参与计算。
原理:上一个历史最新编号字段已经获取了不包含本条数据的最新编号,+1的情况下就等于是本条数据的编号了。由于应用发起数据过程当中是不允许直接在公式中读取到本条数据的编号的,所以采用变相方式实现获取本条数据编号的目的
6、下一单编号
公式为:NUM(历史最新编号)+2
原理:于上一个字段的设定相同,只是这里+2用来计算未来可能产生的编号!预设该字段的目的是未来在未来本条数据要进行修改时候能通过流程外QR准确更新到本数据的后一条数据,才生联动变化。
流水变更辅助应用表
内容于主流水表基本一致,但是需要稍做调整,所以将主流水记录表复制一份拿来修改即可
1、变动编号
不需要特别设定,主要用途用于承载更新数据时需要筛选的编号
2、收入金额、支出金额
修改默认内容设置,将自定义默认内容修改为关联已有数据
1、设定目标应用为流水记录(主应用数据)
2、设定目标字段为收入金额(从主原始数据获取该字段内容)
3、筛选数据设置为编号==变动编号
支出金额设置方式相同,但是目标字段要改为支出金额
3、变动余额
变动前余额:需要将筛选条件改为编号==变动编号
变动后余额:不需要做任何调整
4、下一单编号
公式为:NUM(变动编号)+1
注意这个字段与原流水记录的同一个字段公式再相同,因为这里要重新计算
5、开启重提交计算
由于辅助应用是全自动化运行,涉及到自动计算处理的字段需要开启重提交计算。
开始方式:添加流程——申请人节点——高级设置——提交/通过时重新触发数据关联或公式
将涉及到自动处理和计算的字段按照先后顺序添加进来
记得保存和重新发布
配置流程外Q-Robot
返回流水记录应用,编辑应用,顶部进入拓展设置,然后侧边点击Q-Robot
Q-Robot分为流程内Q-Robot和流程外Q-Robot
流程内Q-Robot:通过添加流程创建的Q-Robot动作,只有在发起新的数据时候才会根据流程节点运行情况触发。
流程外Q-Robot:可以通过数据更新、定时等多种方式触发
名称自由定义
首次触发时间设定为「更新数据时」
设置为「指定字段更新时」触发,避免错误数据更新和占用数据资源
指定字段为:「变动后余额」
逻辑:当我们修改某条流水数据的具体金额时,由于前面的配置会修改变动后余额,余额产生变更就会触发流水变动更新,流水变动更新后会自动修改下一条数据,进一步再次触发。
点击下一步后进一步配置
触发动作选择「添加数据」
目标应用选择「流水变更」(之前做的辅助流水变更应用)
创建规则选择目标应用的「变动编号」等于「匹配字段」的「下一单编号」
原理:因为流水变更相关的数据都做了重提交和计算处理,所以逻辑上我们在修改本条数据后需要触发下一条数据的自动更新,就将「下一单编号」传入到「流水变更」应用当中,由「流水变更」应用自动执行好计算后更新回「流水记录」当中。
总结说明
上述配置完成后点保存,发布,即可测试查看效果!整体逻辑为:
「流水记录」应用——修改数据——触发流程外Q-Robot——Q-Robot添加「流水变更」数据——「流水变更」数据根据编号获取和计算好修改数据的下一条数据——流程内Q-Robot更新回「流水记录」数据,数据的前后相连形成循环,直至后面的所有余额重新纠正完成
注:该方案有一个比较大的缺陷是,前期数据量少的时候很好用,后期未来数据量大的情况下,例如已经有上万条数据了,结果发现最早的一条数据有问题要修改,那么理论上系统需要更新上万条数据,负担较大,公有云对这类型大数据量处理会有一定的限制措施,但是只是短期修改影响不大,例如有1万条数据,修改第8000条,那么理论上Q-Robot只会更新后面的2000条数据
没有回复内容