模板化的封裝,降低業務代碼開發

来源:https://www.cnblogs.com/cicada-smile/archive/2022/05/23/16303688.html
-Advertisement-
Play Games

做這些業務設計時,核心思想是:把常用的邏輯進行封裝,流程設計為可配置,這樣即可在一定時間內應對業務的需求和變化,降低開發成本的支出,從而使研發更側重核心業務的管理和抽象封裝等內容。 ...


複雜的問題,往往需要簡單的邏輯;

一、業務背景

業務開發是一件複雜且耗時的工程,所以最近幾年出了一個很火的概念叫做"低代碼"開發,簡單的說就是開發人員通過簡單的"拖拉拽"配置,快速構建起業務應用,甚至一些業務人員可以自行操作,比如下麵常用的一些功能;

  • 數據報表:通過BI工具快速配置和生成相應的數據報表,降低數據統計的工作量;
  • 業務表單:圍繞基礎的欄位庫能力,快速構建業務屬性的表單結構,避免頻繁的擴展版本;
  • 審批管理:通過流程的靈活配置,動態管理各種審批場景,例如人事,財務,合同;

做這些業務設計時,核心思想是:把常用的邏輯進行封裝,流程設計為可配置,這樣即可在一定時間內應對業務的需求和變化,降低開發成本的支出,從而使研發更側重核心業務的管理和抽象封裝等內容。

二、數據報表

隨著業務的發展,數據報表通常都是系統的必備模塊,以往都是在後端提供數據報表的模塊,不過近幾年少有設計獨立的報表統計,都是基於雲服務的BI平臺快速實現報表的搭建:

  • 業務欄位:通常報表的維度都是展示對應欄位的統計結果,所以業務庫的結構解析是基礎功能;
  • 報表組件:提供基礎的報表組件,例如折線圖、柱狀圖、漏斗圖等,並設計初始化規則;
  • 計算能力:日常數據分析的常用計算方法,基於加減乘除取模等,封裝更加靈活的計算策略;
  • 報表頁面:通過可配置的頁面集成多個報表組件,報表組件可以根據占比或者坐標進行佈局;

關於數據報表的呈現方式其實有很多種,可視化報表是最常見的,還有一些可能直接基於SQL統計進行定期彙總,以郵件的方式或者公司內部文檔的形式輸出,解決問題的方式通常不止一種,要學會選擇相對合理的策略。

三、業務表單

SAAS服務或者常見的管理平臺,通常都提供自定義表單的創建能力,通過基礎欄位庫的組合,快速構建相應的業務表單結構,從而應對需求的多變性:

  • 欄位庫:提供業務需求的欄位管理,並設計相應的規則約束,例如預設值、提示語、唯一性等等;

    • 基礎:文本框、文本域、單選、覆選、數字框;
    • 進階:日期、時間、郵件、地址、三級聯動、貨幣與單位;
    • 高級:自定義封裝,樣式管理與數據載入API;
  • 表單庫:通過欄位庫組合構建相應的表單模板,從而對應業務的數據主體,進而實現業務的數據化管理;

    • 表單結構:存儲表單中欄位的基礎配置和規則,以便頁面的回顯;
    • 數據主表:表單對應的業務,建立相應的主表結構,即biz-form-id概念;
    • 鍵值數據:表單中欄位和對應的數據錄入,即key-value結構;
    • 數據索引:由於表單欄位的靈活配置,通常構建No-SQL搜索結構;
    • 數據回顯:基於表單配置的欄位,解析響應頁面的數據結構,實現數據回顯;

基於簡單的拖拉拽方式進行表單配置,可以快速生成業務需求的主體結構,只不過整個表單的配置和解析十分複雜,各個節點的管理也更加靈活多變,需要對流程不斷優化和模板設計,從而提高復用能力。

四、審批管理

報表和表單從整體上看側重模板化的封裝,而審批類的業務則傾向流程的配置化,每個審批場景從開始到結束,完成需要經過多個節點,節點之間又存在遞推或者回退的動作:

  • 開始:發起方提交審批動作,消息會按照配置流程進行節點通知;
  • 節點:配置審批條件(自動或手動)和人員或角色,以及規則定義,例如串列或者並行,回退節點、失敗原因等;
  • 結束:流程結束後觸發通知機制,對流程節點中涉及人員或者其他角色進行消息通知;

在審批流程的管理中,除了涉及大量的規則配置,還需要管理複雜的狀態流轉,不同的狀態描述不同的結果,並根據狀態生成相應的事件和動作,從而實現流程開始和結束的完整性。

五、寫在最後

很多業務需求都是有規律可尋的,例如報表中的計算、表單中的欄位和結構、審批中的流程管理,將業務底層不變的規則進行抽象封裝,可以是模板化管理或者流程化配置,從而應用對容易變化的業務場景。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本期,我們通過介紹 OpenHarmony 的硬體資源池化框架,為大家揭曉 OpenHarmony 是如何實現多設備協同的。 ...
  • 原文地址:Android shape與selector標簽使用 Android中提供一種xml的方式,讓我們可以自由地定義背景,比較常用的就是shape標簽和selector標簽 shape shape的翻譯為形狀的意思,一般用來定義背景的形狀,如長方形,線條,圓形 rectangle 矩形 預設 ...
  • **版本:**Android 9 **平臺:**RK-PX30 問題描述:在狀態欄點擊藍牙圖標打開藍牙時,發現打開失敗,進入到設置里打開藍牙卻能打開成功,但是時間會比較長。 分析: 查看日誌發現,執行BluetoothHci::initialize()後,在獲取到藍牙MAC地址,就又把藍牙關閉了。測 ...
  • 【導讀】 AR技術,是一種將真實世界信息和虛擬世界信息“無縫”銜接的技術,現如今AR技術受到日益廣泛的關註,在我們生活中發揮著重要的作用,並顯示出巨大的潛力……它是如何改變我們觀察世界的方式?本次直播,讓我們一起探索HMS Core AR Engine是如何幫助開發者們構築立體世界,打造沉浸式營銷的 ...
  • 前言 ​ SDK 需要把事件數據緩衝到本地,待符合一定策略再去同步數據。 一、數據存儲策略 ​ 在 iOS 應用程式中,從 “數據緩衝在哪裡” 這個緯度看,緩衝一般分兩種類型。 記憶體緩衝 磁碟緩衝 ​ 記憶體緩衝是將數據緩衝在記憶體中,供應用程式直接讀取和使用。優點是讀取速度快。缺點是由於記憶體資源有限, ...
  • gnvm 是一個簡單的 Windows 下 Node.js 多版本管理工具,它可以實現安裝管理多個node版本,同時只需要一條命令就可以完成node版本之間的切換和版本更新等操作;寫Vue框架項目時非常的方便,可以解決新舊項目之間因node版本引起的bug等問題。(類似的還有工具 nvm nvmw ... ...
  • 摘要:先彙總相關股票價格,然後有選擇地對其分類,再計算移動均線、布林線等。 一、彙總數據 彙總整個交易周中從周一到周五的所有數據(包括日期、開盤價、最高價、最低價、收盤價,成交量等),由於我們的數據是從2020年8月24日開始導出,數據多達420條,先截取部分時間段的數據,不妨先讀取開始20個交易日 ...
  • EL和JSTL都是JSP的內容的拓展,都是開發的一些東西,稍微學習記錄一下,避免以後忘記 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...