# 關于協同升級到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
- 自定義控件
- 后端
- 移動端
- 前端編譯
- 表單運行態接口
- 協同云