企業級自定義表單引擎解決方案(七)--視圖模型管理


  實體模型,視圖模型,表單模型,表單規則引擎,這幾部分內容是自定義表單核心內容,之前的文章已經介紹了實體模型,這篇文章介紹一下視圖模型管理。

  我們平時見到的一些管理系統或者多數程序員做的一些CRUP操作,比如我們接觸最多的列表管理、表單Form管理、樹管理等,這些功能在一個后台管理系統中最為常見也最為繁瑣,對於一個后台管理類的系統來說,可能60%左右都在做這樣一些繁瑣且無聊的工作,其實這些功能我們可以進行歸納總結,進行抽象,列表管理無非就是各種基本查詢字段定義、高級查詢定義、基礎的一些功能按鈕、比如新增或者導入導出Excel等、列管理、排序分頁等,對於表單Form管理,無非就是字段排序顯示、字段用什么控件顯示、保存時驗證、新增還是修改等,這些功能我們可以按照大的方面抽象,實際使用的時候,要什么功能就打開什么功能,更者我們可以做成模版,常用的功能根據模版自動生成,配置的大多數過程都可以省略。

  實體模型管理就是對這些具體典型功能的抽象,真實業務根據實體模型動態生成具體業務功能模塊。

  先上一張整體設計圖

 

視圖關鍵字段說明:

  ViewType(視圖分類):視圖分為列表視圖、表單視圖、樹視圖,后面還可以靈活的添加其他類型的視圖。

  Version(版本):每一次修改視圖的任何信息,都會重新生成一個版本號,瀏覽器存儲視圖信息,每打天一個頁面,會將本地表單版本和視圖版本傳遞到服務端比較版本號,如果版本號發生變化,重新請求視圖數據(一般系統交互后,視圖及表單定義信息很少會發生變化)。

  PropertySettings(視圖屬性):存儲前端的一些樣式,比如列表視圖,存儲前端List控件的一些屬性,前端渲染時,讀取屬性並應用到控件中,一般需要結合具體使用的前端框架設置。

        RelationInfos(關聯信息):視圖可能會關聯其他視圖,比如表單視圖中,某個字段的數據從其他視圖獲取,這里會把關聯視圖的Id關聯到此視圖中。

        Rules(規則):定義視圖的規則,如點擊編輯按鈕,打開對話框、獲取表單數據、將表單數據綁定到表單視圖中。

        WrapInfos(視圖包裝器):視圖用顯示在對框框中,視圖顯示在特定樣式Div中或者Box中,前端在渲染視圖時,如果有包裝器,會用包裝器包裝視圖之后再渲染。

        Controls(視圖控件):不同的視圖控件顯示的區域不一樣,需結合具體的視圖定義控件,前端渲染不同視圖時,讀取不同類型的視圖控件,在特定的區域顯示視圖控件。

        Extension1、2、3、4(擴展字段):對於不同的視圖,存儲不同的內容,比如列表視圖,存儲查詢信息、視圖特定列定義信息、表單視圖則存儲表單行定義信息。根據不同的視圖類型使用不同的擴展字段。

表單視圖:

              表單類的視圖由行和列組成,每一行一條行數據,每一行可以設置行屬性,前端根據行屬性動態渲染一行數據。

              列可以顯示具體的字段以及字段所使用的控件和驗證表達式。列除了展示字段之外,還可以顯示子視圖或者子表單。視圖、表單、控件所有行為均通過規則引擎控制。

列表視圖:

              列表一般分為查詢區域、高級查詢區域、表格區域、分頁區域、列表控件區域,這些區域一般是可以固定下來的,每一個區域都可以做配置,比如查詢區域,可以定義查詢哪些字段,查詢的字段Where條件怎么拼接,高級查詢可以使用哪里比較條件,用什么控件渲染等。

              列一般情況直接顯示內容即可,但特殊一些列,需要單獨定義,比如某列是數據字典,某列不同條件用不同顏色顯示內容等。

 

              先介紹到這里吧,具體細節參考架構設計圖,有什么疑問可以咨詢本人,自定義表單本來就比較復雜,概念比較多,需要抽象出來的東西也比較多,這里主要還是提供一些設計思路吧。

 

開源地址:https://gitee.com/kuangqifu/sprite

體驗地址:http://47.108.141.193:8031(首次加載可能有點慢,用的阿里雲最差的服務器)

自定義表單文章地址:https://www.cnblogs.com/spritekuang/

流程引擎文章地址:https://www.cnblogs.com/spritekuang/category/834975.html(采用WWF開發,已過時,已改用Elsa實現)

Github地址:https://github.com/kuangqifu/CK.Sprite.Job

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM