业务流程性能问题1--更新快照缓慢原创
金蝶云社区-eris
eris
70人赞赏了该文章 281次浏览 未经作者许可,禁止转载编辑于2023年12月08日 17:22:17

一、情况说明

单据有关联数据,在保存的时候会把所有的关联数据转换为xml存储在反写快照中,如果分录非常多,则xml会非常大,增加和更新都比较缓慢,而且每次保存都会去更新,白白耗费性能,有时候是只需要能联查(即能上下查,全流程跟踪),并不需要反写,比如采购价目表到采购调价表,那么这种情况只需要第一次保存时把关联数据记录到反写快照即可,其他次保存就不需要再运行。

特别注意: 如果不走反写引擎,通过保存来增删关联分录就无法实现了。

二、解决方案

使用反写插件干预,第一次保存时运行反写引擎,其他次保存则不运行,实现如下,以控制采购价目表为例,采购调价表和采购价目表都只需要联查,都不需要反写,但采购调价表在生效的时候会调用采购价目表的保存,导致耗时。

1、在采购价目表的反写插件中注册控制脚本,如下图:

ZTZ((S1S()F47`M(IHH5QWK.png

X6748FNB6JR%WGU_}44XV7R.png

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


赞 70