ERP 的複雜度不在單一功能有多難,而在同一件事被重述太多次、乘以太多張表、再乘以太多次客製。
這個系列談的不是怎麼用框架做一張表單,而是怎麼設計一套能驅動上百張表單的框架:唯一真相放在定義而非程式碼,資料庫結構、SQL、多前端畫面、驗證與計算、多語系、多租戶與客製化都從同一層定義衍生。
三十篇分八章,從為什麼談起,依序走過定義層、資料存取與快取、業務邏輯與 API、多租戶與客製化、傳輸安全與稽核、資料語意,最後回到案例對帳與全圖。案例用 Northwind 驗證,但案例是佐證,不是主角。
談機制與取捨,不寫使用教學;每個設計的代價會跟它的好處寫得一樣清楚。
昨天結尾停在一個情況:一家公司要的差異大到語系與版面都接不住。那類需求的形狀跟前兩篇不一樣:存檔前多一道信用額度檢查、存檔後把單據同步到另一套系統、刪除時通知...
昨天結尾說換一個層面。從這裡開始,題目不再是定義裡宣告了什麼,而是這些定義與資料離開記憶體之後怎麼走。 序列化是兩件事。一件是持久化:物件要存下來,下次還得原...
昨天結尾說今天看 value 上的另一半。Encoded 與 Encrypted 在 API payload 上只差一個數字,底下卻是三段有先後的處理,而回程...
昨天結尾說今天換一條軸。保護等級管的是一次呼叫的形式,它從頭到尾沒有問過這個人可以看到哪些資料。 權限是 ERP 躲不掉的題目,而它從來不是一個問題,是三個:...
有人來問「這一筆的金額上個月是誰改的」,多半已經是幾個月以後的事。問的人手上沒有當時的畫面、沒有當時的程式版本,只有當時留下來的那幾列記錄。誰登入、誰把哪一個...
前面幾章問的是這個值進不進得去、傳不傳得到、要不要被記下來。這一篇換一個問題:進去了的那個值代表什麼。 一張單據上的數量、單價、金額、折扣率、匯率,在 Tab...
一張單據上的訂單日期、一筆稽核紀錄的事件時間、一份班表上的上班時刻,回答的是不一樣的問題。但進了 DataSet,前兩個都是 DateTime 欄,第三個是字...
昨天結尾說今天談那個唯一會被動到的型別。 一個時間值寫進資料庫,欄位裡不會記下它是以哪個時區為準。同一段程式在台北的機器上跑,跟在時區設成 UTC 的主機上跑...
昨天結尾說今天回到案例,把這些機制逐項歸位。 Day 1 說整套 Northwind 的八張表單裡只有一張需要自己寫程式,並答應系列收尾前把整套應用攤開逐項對...
Day 30:三段開發深度與框架全圖 昨天結尾說今天把三十天的東西收成全圖。 本篇說明: 框架沿 NoCode、LowCode 與 AnyCode 這條軸線...