业务流程性能问题1--更新快照缓慢原创
70人赞赏了该文章
281次浏览
编辑于2023年12月08日 17:22:17
一、情况说明
单据有关联数据,在保存的时候会把所有的关联数据转换为xml存储在反写快照中,如果分录非常多,则xml会非常大,增加和更新都比较缓慢,而且每次保存都会去更新,白白耗费性能,有时候是只需要能联查(即能上下查,全流程跟踪),并不需要反写,比如采购价目表到采购调价表,那么这种情况只需要第一次保存时把关联数据记录到反写快照即可,其他次保存就不需要再运行。
特别注意: 如果不走反写引擎,通过保存来增删关联分录就无法实现了。
二、解决方案
使用反写插件干预,第一次保存时运行反写引擎,其他次保存则不运行,实现如下,以控制采购价目表为例,采购调价表和采购价目表都只需要联查,都不需要反写,但采购调价表在生效的时候会调用采购价目表的保存,导致耗时。
1、在采购价目表的反写插件中注册控制脚本,如下图:
2、反写插件脚本
保存操作除第一保存运行反写引擎其他次保存不运行
import clr clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") from Kingdee.BOS.Core.BusinessFlow.PlugIn.Args import * from Kingdee.BOS.Core.BusinessFlow.PlugIn import * from Kingdee.BOS.Orm.DataEntity import * def BeforeTrackBusinessFlow(e): if(this.OperationNumber=="Save" and this.DynamicObjects.Length == 1): if(this.DynamicObjects[0].DataEntityState.FromDatabase): e.Cancel = True