一、動態表單是什麼
區別於傳統表單前後端配合聯調的開發實現方式,動態表單通過一種基於元數據管理的配置化方法來實現表單的動態生成,並能根據配置自由增改刪指定字段。實現特定需求的自助化。
圖1.1 傳統表單前後台協作模式
圖1.2 動態表單前後台協作模式
二、解決什麼問題
租户有個性化業務表單訴求的場景,千人千面系統
三、實現動態表單的一種思路
基於元數據管理的配置化表單技術共需三步來完成:
步驟A(數據劃分)
將服務端底層業務數據存儲結構由傳統主表字段信息拆分成標準信息、個性信息兩部分。其中標準信息指那些用於存儲標準通用、穩定、經常作為業務查詢檢索條件的字段,拿電商網站商品信息舉例如商品創建時間、商品名稱、商品創建人等字段;個性信息用於存儲易變、租户個性化、不經常用於檢索的字段,如商品可售區域信息、商品資質認證狀態等。將主表按以上規則劃分後,其中標準信息按原來傳統方式按列存儲,而個性化信息則打包以jsonSchema的方式整合存儲,其共同在數據庫中佔一列也稱動態列,以mysql為例這列的格式通常為”text”類型。
步驟A的目的:統一抽象並管理易變類型的業務數據
圖2.1 業務數據劃分抽象
步驟B(業務元數據設計)
配置化表單離不開元數據設計,其中元數據指描述數據的數據。在本例中表單元數據即表單各業務項(指商品名稱、商品創建時間、商品創建人等)可動態配置的核心能力。這一步將元數據配置中具有代表性的幾個信息屬性羅列出來,每項信息屬性的用途見下圖介紹。此外基於元數據信息封裝元數據增刪查改管理服務,實現元數據的動態配置基座。
步驟B的目的:規劃業務元數據信息,提供元數據讀寫能力
圖2.2 業務元數據樣例
步驟C(前端動態渲染改造)
此步驟描述配置化表單的串聯實現,在表單渲染環節前端首先自頁面一載入就獲取當前租户生效的業務元數據信息,然後基於元數據信息解析數據並動態生成網頁DOM節點,最後生成各節點校驗邏輯並展示頁面;表單數據回顯場景中,首先自頁面一載入就獲取當前租户生效的業務元數據信息,再獲取業務數據信息,結合兩者交集後(目的是僅展示最新配置生效的數據)將業務數據回顯到表單中。
步驟C的目的:頁面動態展示實現路徑
圖2.3 前端改造流程
四、方案缺陷
1. 使用範圍,並不是所有業務表單都適合動態化 , 表單動態化的改造收益與維護損耗存在一個潛在的收益峯值點。 過於複雜的業務表單系統反而會因為動態化而變得難以維護。 動態表單會將常規業務CRUD邏輯複雜化
2. 對於大表單、複雜嵌套等表單存在一定性能開銷。
3. 動態字段無法作為檢索項發起檢索
作者:京東工業 於洋
來源:京東雲開發者社區 轉載請註明來源