基於微服務和SaaS架構的低代碼開發平臺如何動態注入多租戶個性化的業務邏輯

舉一個新增流程的例子:前端

  1. 新增流程的界面以下:

這是動態生成的界面,4個字段,流程分類、流程名稱、流程KEY和描述數據庫

  1. 可是查詢界面是這樣的,

多出了狀態和版本,這兩個字段。這個是通用的界面,通用的保存,在哪裏注入這兩個缺省的字段值呢?也就是說,新增界面是通用生成的,查詢表格也是動態生成的,可是查詢表格多出了「狀態」和」 版本」這兩個字段,並且這兩個缺省值,只有流程管理界面有,其它界面沒有,假如一個個性化的租戶租戶界面的需求,就是這麼樣子的,該如何解決呢?後端

  1. 解決辦法一:數據庫解決辦法,首先想到的,就是MySQl數據庫,字段都有缺省值,雖然界面上沒有,設置上這兩個字段的缺省值就行了;
  2. 解決辦法二:前端+後端解決辦法,配置前端字段的時候,設置這兩個字段不顯示,並設置缺省值,錄入提交的時候,把這兩個缺省值帶上。即界面生成的時候,隱含兩個字段,這是前端解決方案,須要後端配合,前端界面獲取的時候,多預設這兩個字段, 並配置賦缺省值.

 

 

 

 

  1. 解決辦法三:純後端解決:在通用後端保存的時候,動態攔截這個保存動態,當遇到新增的ID是t_bpmn_define_5_insert(這個值由前端保存時, t_bpmn_define是前端動態傳入,即保存到那個表,_5表示租戶id,登陸時token決定,_insert表示是新增)的時候,用自定義的Service動態替換缺省保存的Service

mongoDBService 這是缺省的Service架構

 

當遇到租戶id是5,而且是保存流程的時候,用bpmnService替換缺省的mongoDBServiceblog

 

在BpmnService裏面寫入狀態和版本這兩個缺省值token

 

其實,原來通用的OA和BPM,我估計思路也是差很少的,可是傳統OA和BPM不是用Spring boot和Spring cloud架構的,如何動態激活BpmnService?並放置在Spring Context上下文,由Spring 管理Service的生命週期,從而避免內存泄漏,數據庫鏈接池泄漏,不是基於Spring boot架構的BPM和OA是很難解決的,因此你就看到,大量基於BPM的單體應用,使用了一段時間後,系統就運行緩慢,要麼CPU 100%,要麼內存 100%,要麼數據庫鏈接池不夠,就是這個緣由。生命週期

相關文章
相關標籤/搜索