天天看點

企業級自定義表單引擎解決方案(一)——總體介紹

作者:spritekuang

大家回想一下,有多少軟體公司,多少項目,多少國中級程式員在做着CRUD方面的一些重複而繁雜的工作呢?對于公司項目來說,可能60-70%的成本都花費在CRUD方面的開發管理上,對于程式員職業生涯來說,可能也有60-70%的工作也是在做着一些CRUD方面的工作,無可否認,作者也是。

  如果這些CRUD相關的工作全部省去,對于企業來說,意味着什麼呢?自定義表單引擎,就是幫助企業做這樣的事情!對于項目開發的核心三駕馬車,進度、品質、成本,自定義表單可能都是質的飛躍。

對于進度來說,需求明确的情況下,原來開發一個中等複雜的表單,從資料庫到後端再到前端,完整開發完成,可能需要幾天的時間,如果這些工作全部由自定義表單通過配置自動完成,可能就十多分鐘就能完成,項目進度将會大幅度的提前;對于品質來說,傳統的CRUD方面的工作工作量大且繁瑣,程式員工作年限及能力水準不一,測試能力不一,進度要求不一,管理者能力不一,影響因素非常多,品質往往是不好控制的,但如果這部分工作全部自定義表單完成,隻要保證自定義表單配置生成的功能是經過反複驗證過的,那這些影響的因素就可以多數排除,大部分品質就能夠完全可控;對于成本來說,如果大大減少CRUD的開發管理,對于公司項目來說,可能節約半數的成本;這,自定義表單對于企業來說,将是戰略意義上的武器。

  可能大家接觸比較多的是代碼自動生成工具,前端後端可能都有。根據規則,從檔案或者資料庫讀取配置資訊,生成前端或者後端靜态代碼,拷貝到項目中,開發人員在做适當的修剪,再加入業務邏輯,編譯釋出,但,這就是自定義表單麼?對企業來說,有多大的用處呢?我也用過一些,但作用真沒有想象的那麼大,也不是那麼友善,這些代碼往往是沒有生命的,僅僅是把一些繁瑣的代碼做了簡化,往往隻是簡化了我們碼農複制粘貼再批量替換的作用。

  代碼生成工具,不是自定義表單。自定義表單,是有生命力的,他是由非常多的資料模組化以及規則引擎串聯起來的,資料庫、後端、前端,全是運作時根據規則自行計算、執行或者渲染的。接下來作者将寫一系列文檔,介紹自定義表單的設計、開發供感興趣的同行學習交流,由于現在做的工作與自定義表單沒有任何關系,生活也不允許自己放下一切專門來做這個東西,隻能在空餘時間來完成,大概半年多的時間,一直持續反複循環做着技術預研、資料模組化、定義規則、驗證模型、驗證規則,現在前端和後端基本能夠融合在一起形成一個整體,參考基礎原型為K2自定義表單産品功能。

目前整體架構及核心代碼已經完成,代碼将不斷的整理完善,未實作的功能也會陸續的完成,後續會在頭條和部落格園同步持續更新文章。

使用說明

後端

  1. git切換到dev版本
  2. 後端VS打開項目檔案 > 03_form\CK.Sprite.Form\CK.Sprite.Form.sln
  3. 設定CK.Framework.HttpApi.Host為啟動項目,直接運作項目,資料庫連接配接資訊已經在配置檔案appsettings.json裡面,可用其他資料庫連接配接工具直接打開(外網公共的資料庫資源,請不要亂操作資料庫,定時還原)

前端

  1. 運作前,确定VUE_APP_Form_URL變量是否與後端啟動的端口一緻
  2. yarn install
  3. yarn serve 或者 npm run serve(如果第一次運作報錯,退出之後再次運作即可)
  • 如果不需要運作後端,請将VUE_APP_Form_URL參數改為http://47.108.141.193:8031 站點由之前的SSO改為密碼Token認證,後端項目認證直接接入47.108.141.193:8031認證伺服器 認證服務、基礎資料、流程引擎、消息中心、Job管理等都是調用的47.108.141.193部署的站點,自定義表單部分運作的代碼直接調用本地啟動項目。
  • 自定義表單将所有表單定義資訊都存儲到本地緩存的,部署的開源站點和本地的站點都是連接配接的同一個資料庫,但采用了Redis的釋出訂閱功能,隻要在任何地方改變了表單定義資訊,其他地方都會自動重新整理本地站點的記憶體中的表單定義資訊。

本地使用示例

企業級自定義表單引擎解決方案(一)——總體介紹

wike文檔位址:https://gitee.com/kuangqifu/sprite/wikis/pages

後端開源位址:https://gitee.com/kuangqifu/sprite

前端開源位址:https://gitee.com/kuangqifu/spritefronts

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

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

流程引擎文章位址:https://www.cnblogs.com/spritekuang/p/14970992.html

繼續閱讀