# 业务组件接入自动缓存功能说明

自动保存机制: 自动保存目前针对的是大表单数据,所以会有以下几个特殊机制

自动保存特殊机制如下

首先自动保存只支持【详情】页面 页面打开之后计时,0-7.5s是准备阶段,即这个时间中发生的数据变更认为是初始数据,所以不会记录变更,也不会存入缓存 7.5s之后,前端缓存每5s检查一次数据(表单数据和业务组件数据)是否变更,若变更,则存入前端缓存,并且标识数据已变更 数据变更之后,5分钟发送一次后端,存为后端缓存 注意:

当后端缓存和前端缓存同时存在的情况下,优先取前端缓存,目的是为了用户操作过程中恢复的时候能恢复最新数据

主要流程图如下: 1750233051747.png

业务组件接入详细步骤以及示例(示例由BPM意见组件提供) 消息注入: UDC通过udcSdk暴露方法registerUDCAutoSaveCachePool(runtimeContext, key, value)用于将业务组件消息注入到消息池中

参数解释:

runtimeContext: 执行上下文信息,业务组件可在props获取

key: 消息的唯一key,注意保存自身业务组件唯一,不和其他业务组件注册消息冲突即可

value: {

eventBusKey: 注册的消息key

runtimeContext: 注册时使用的runtimeContext,这个在个性化应用或者布局中及其重要,必须传,否则会导致发送消息接收不到的问题

delay: lazy异步加载的组件的延时时间,不传默认200ms

}

示例:

1750233070008.png

注入之后可以在控制台输入window.__UDC_AUTO_SAVE_CACHE_POOL中查看

消息注册 使用eventManager中的eventOn注册消息(不要使用global中的eventOn,eventManager可以从组件的props中获取) 这个很重要!!!!!

示例:

1750233083801.png

消息注入和注册之后,接下来是恢复、变更、保存的操作了

检查数据变更 udc侧除了第一次是7.5s发送一次消息检查变更以外,其余都是5s发送一次消息

udc发送检查变更消息

发送消息如下:

1750233093010.png

参数:

type: CHECK_CHANGE,

callback: 回调函数,用于业务组件回传数据或者变更数据

变更时callback的参数,

data: {

isChanged: boolean // 标识业务组件数据是否变更

data: 数据 // 业务组件的数据

}

注意:检查变更时,业务组件需要对比组件数据,判断是否发生变更,这个尤为关键,如果判断不正确,会导致出现未变更反而存了缓存或者变更了没存缓存的情况

示例: 1750233105929.png

消息保存 执行消息保存时,即5分钟或者5s发生变更之后,udc会保存数据到前端缓存或者后端缓存,这时候会发送保存消息,用于获取组件数据

消息如下:

1750233114319.png

参数描述:

{

type: SAVE,

callback: (data) => void // data格式为{ 数据key: 数据 } 数据key由业务组件自定义,恢复的时候也是使用该数据key获取恢复的数据

}

示例: 1750233122432.png

消息恢复 执行消息恢复时,即当页面弹出恢复弹窗,并且用户点击【恢复】时,udc会发送恢复消息

消息如下:

1750233130959.png

参数解释:

{

type: RECOVER,

getAutoSaveCache: (key: string) => 组件数据 // key是组件保存时的数据key

}

示例如下: 1750233138315.png

恢复之后,建议将数据存储,下一次对比变更时,就将当前数据和上次数据对比

编撰人:weihf