# 关于协同升级到V5 8.0版本之后,自定义控件适配的说明
***特别说明,本说明适用于场景:自定义控件基于V5 8.0以前版本开发的,并且需要在V5 8.0既以上版本使用的需要适配,如果是继续在V5 8.0版本以前使用,不需要进行这个适配。另外,如果是基于V5 8.0既以上版本开发的,则不需要适配。***
应公司最新的战略需求,CAP4应用需要支持同一个应用重复安装多次,并能用原始包对这些已安装的包都能进行升级。所以在这期间CAP4对应用包的安装和导出(包括单表单导出和导入)进行了改造,重新设计了各元数据ID的编码映射机制,保证应用重复安装之后,可以平滑进行数据升级。
- **为什么要适配**:如果不进行处理,可能自定义控件上的数据定义就不是有效的内容,这样会影响运行时的数据。首先说下为什么需要自定义控件开发进行适配,原因是:新的编码映射机制设计了三张表,分别存放应用上的数据,表单上的数据,公共数据(包括枚举和常量等),如果不进行适配,原来的接口不知道该将数据映射落位到什么地方,也不知道该从那个地方获取其他模块已经重置的元数据ID。
- **怎么判断是否需要适配**:检查自己实现`FormFieldCustomCtrl`接口的所有自定义控件,是否重写了`getJson4Export`、`importExtInfo`、`importInfoAfterBizImport`这几个方法,并且检查这几个方法内,是否用到了`BusinessDataBean`中被标注为过时(`@Deprecated`)的方法,比如:`genNewIdByOldId`,`getEnumMapOld2New`,`getRealId4Export`,`getRealId4Upgrade`等方法。
- **怎么改**:将上述被标记过时的方法,替换为`BusinessDataBean`中新的接口,接口说明,见方法上的备注:
```java
导出应用相关的接口
/**
* <p>通过当前资源id,获取业务编码。</p>
* <p>注:该方法仅用于获取应用id,表单id,枚举id对应的编码
* 其他id编码请调用{@link #lookupBizKey(MappingField,Long,Long)}</p>
* @param table 映射表分类
* @param sourceId 资源id,应用id,表单id,枚举id
* @return
*/
public Long lookupBizKey(MappingTable table, Long sourceId){}
/**
* <p>通过当前资源id,获取业务编码。需要传递</p>
* <p>注:该方法仅用于公共数据,比如枚举和常量函数使用
* 其他id编码请调用{@link #lookupBizKey(MappingField,Long,Long)}</p>
* @param table 映射表分类
* @param sourceId 资源id,应用id,表单id,枚举id
* @param orgAccountId 枚举和常量的单位id,如果为集团公用的,没有单位id的,直接传null
* @return
*/
public Long lookupBizKey4CommonData(MappingTable table,Long sourceId,Long orgAccountId){}
/**
* <p>通过当前二级数据id和资源id,获取对应业务编码。</p>
* 其他id编码请调用{@link #lookupBizKey(MappingTable,Long)}</p>
* @param field 字段分类枚举
* @param sourceId 资源id,应用id,表单id,枚举id
* @param dataId 二级数据id
* @return
*/
public Long lookupBizKey(MappingField field,Long sourceId,Long dataId){}
```
```java
安装相关的接口
/**
* 只是获取编码id对应的资源Id,如果没有返回null
* @param table 表分类
* @param bizKey JSON中解析出来的资源Id
* @return
*/
public Long onlyGetRootId(MappingTable table,Long bizKey){}
/**
* 只获取编码id对应的当前数据id,没有返回null,不会生成新id返回
* @param field 映射表字段分类
* @param sourceId 资源id
* @param bizKey 原二级数据id
* @return
*/
public Long onlyGetSubId(MappingField field,Long sourceId,Long bizKey){}
```
此处仅写了几个比较通用的接口,其他的接口请移步`BusinessDataBean`中查看。
- 概要
- 技术介绍
- 框架与环境
- vue开发
- 开发规范
- 前端开发规范
- 总体原则
- HTML规范
- HTML&css规范
- vue编码规范
- Javascript规范
- 后端开发规范
- cap4
- 自定义控件
- 前端2.0(PC+移动)
- PC前端
- 后端
- 移动端
- 移动端接口
- 低版本协同升级到V5 8.0适配说明
- 自定义按钮
- 自定义按钮(无流程)
- 自定义控件(列表插槽)
- 自定义按钮(筛选条件)
- 低版本协同升级到V5 8.0适配说明
- 门户空间
- 门户与栏目挂载
- 栏目开发及流程说明
- 页面模板
- 客开通路及插件体系
- 表单设计器扩展配置
- 使用步骤
- 配置说明
- 事件API
- Demo示例
- 运行态客开通路
- 插件使用步骤
- 插件接口
- 事件接口
- 钩子相关接口
- 表单操作接口
- Demo示例
- 插件机制
- 表单运行态接口(旧)
- 白名单插件
- 版本记录
- vue组件库
- 开发指南
- 开发文档规范
- 业务组件介绍
- 业务组件
- table组件
- 分页组件
- title组件
- 统计排队组件
- code组件
- 条件筛选
- 批量导入
- 上传Excel
- 批量更新
- 批量刷新
- UI组件
- 按钮组件
- 复选组件
- 取色器组件
- 示例组件
- 水平选择组件
- 选图标组件
- 提示组件
- 单选组件
- 搜索组件
- 选择组件
- 穿梭框组件
- 标签组件
- 文本组件
- 树组件
- 验证组件
- 菜单组件
- iframe组件
- toolbar
- 统计组件
- 饼图
- 柱状图
- 图标
- 业务关系开发指南
- 自定义触发
- 自定义关联
- 后端API
- 更新表单数据缓存
- 发起表单流程
- 取得指定表单PDF或截图
- 无流程批量添加
- 无流程批量删除
- 无流程批量更新
- 无流程批量导出
- 客开培训文档
- Vue基础培训
- Vue实战培训
- Vue进阶培训
- VueCLI3培训
- cap3
- 自定义控件
- 后端
- 移动端
- 前端编译
- 表单运行态接口
- 协同云