# 业务组件接入自动缓存功能说明
自动保存机制: 自动保存目前针对的是大表单数据,所以会有以下几个特殊机制
自动保存特殊机制如下
首先自动保存只支持【详情】页面 页面打开之后计时,0-7.5s是准备阶段,即这个时间中发生的数据变更认为是初始数据,所以不会记录变更,也不会存入缓存 7.5s之后,前端缓存每5s检查一次数据(表单数据和业务组件数据)是否变更,若变更,则存入前端缓存,并且标识数据已变更 数据变更之后,5分钟发送一次后端,存为后端缓存 注意:
当后端缓存和前端缓存同时存在的情况下,优先取前端缓存,目的是为了用户操作过程中恢复的时候能恢复最新数据
主要流程图如下:
业务组件接入详细步骤以及示例(示例由BPM意见组件提供) 消息注入: UDC通过udcSdk暴露方法registerUDCAutoSaveCachePool(runtimeContext, key, value)用于将业务组件消息注入到消息池中
参数解释:
runtimeContext: 执行上下文信息,业务组件可在props获取
key: 消息的唯一key,注意保存自身业务组件唯一,不和其他业务组件注册消息冲突即可
value: {
eventBusKey: 注册的消息key
runtimeContext: 注册时使用的runtimeContext,这个在个性化应用或者布局中及其重要,必须传,否则会导致发送消息接收不到的问题
delay: lazy异步加载的组件的延时时间,不传默认200ms
}
示例:
注入之后可以在控制台输入window.__UDC_AUTO_SAVE_CACHE_POOL中查看
消息注册 使用eventManager中的eventOn注册消息(不要使用global中的eventOn,eventManager可以从组件的props中获取) 这个很重要!!!!!
示例:
消息注入和注册之后,接下来是恢复、变更、保存的操作了
检查数据变更 udc侧除了第一次是7.5s发送一次消息检查变更以外,其余都是5s发送一次消息
udc发送检查变更消息
发送消息如下:
参数:
type: CHECK_CHANGE,
callback: 回调函数,用于业务组件回传数据或者变更数据
变更时callback的参数,
data: {
isChanged: boolean // 标识业务组件数据是否变更
data: 数据 // 业务组件的数据
}
注意:检查变更时,业务组件需要对比组件数据,判断是否发生变更,这个尤为关键,如果判断不正确,会导致出现未变更反而存了缓存或者变更了没存缓存的情况
示例:
消息保存 执行消息保存时,即5分钟或者5s发生变更之后,udc会保存数据到前端缓存或者后端缓存,这时候会发送保存消息,用于获取组件数据
消息如下:
参数描述:
{
type: SAVE,
callback: (data) => void // data格式为{ 数据key: 数据 } 数据key由业务组件自定义,恢复的时候也是使用该数据key获取恢复的数据
}
示例:
消息恢复 执行消息恢复时,即当页面弹出恢复弹窗,并且用户点击【恢复】时,udc会发送恢复消息
消息如下:
参数解释:
{
type: RECOVER,
getAutoSaveCache: (key: string) => 组件数据 // key是组件保存时的数据key
}
示例如下:
恢复之后,建议将数据存储,下一次对比变更时,就将当前数据和上次数据对比
快速跳转
