iT邦幫忙

2023 iThome 鐵人賽

DAY 10
1

ERP 系統的客製化開發與管理

在這幾天的文章中我們認識了 ERP 系統中的基本模組,相信大家都了解這些模組存在的原因。
今天的文章我們會一起粗略地看看這些 ERP 系統大致上是怎麼樣設計的,以及我們該如何在這個架構下進行客製化。
不管是 SAP、Oracle、Dynamics 365 或是我比較熟悉的 Acumatica ERP,都是以這樣的架構為前提來進行設計,但在開發前的環境和開發中的眉角會是不相同的。

ERP 系統的層包層架構

https://ithelp.ithome.com.tw/upload/images/20230925/20162545E6cDdgnsN3.png
大部分的 ERP 系統會由四個不同的框架串在一起,分別是

  1. Database : 就是資料庫
  2. ERP System Core : ERP 的核心,用來連接其餘三個模組並進行溝通和互動。
  3. Table Cache : ERP 會將資料庫的資料存在 Table Cache,通常也會經由 Table Cache 來進行針對資料庫的溝通,有使用過 ORM 的朋友可以把它當成 ORM 來使用。
  4. UI Layout : 就是前端的頁面,不過 ERP 系統的前端比較單純可愛,通常只有分為 FormView、GridView 和 Button(或稱 Action)。

看到這裡大家應該很清楚了,其實大部分的 ERP 都沒有前後端分離,也不會需要撰寫 REST 或設計 UI 特效,因為這個系統是供內部使用的,大部分的客製化和開發改版只會注重在功能層面,連架構都不太會去優化或改得更現代。

客製化的項目

https://ithelp.ithome.com.tw/upload/images/20230925/20162545m1vaenp4hR.png
我把客製化的項目分成三項:

  1. 頁面層 (UI) : 設定要在哪個畫面進行客製化,抑或是你要新增一個新的畫面,並且調整針對前端畫面得設定,客製化的情境可能是要針對某個畫面或按鈕做客製化的設定,抑或是要針對某些特定條件來調整一個輸入欄位或資料欄位的可編輯或可視設定
  2. 環境層 (Env) : 設定某些使用者的權限或一些 ERP 系統內建功能的參數,客製化的情境可能是將 SalesA 使用者權限針對銷售訂單頁面的特定功能進行限制
  3. 資料層 (Data) : 設定資料流的活動,客製化的情境可能是當有新的系統發票被創建時,自動在統一發票系統開一張發票並且同步回系統

當然,現在的 ERP 系統大部分都支援 No-Code 開發,可以藉由各家廠商設計的框架利用簡單的流程圖拖曳或 checkbox 來進行客製化的管理與開發,這讓客製化開發變得更加得容易。

工程師眼中的客製化專案開發

ERP 系統的客製化工程師要具備的技能點其實很廣:

  1. Web 前端的基本知識 : 包含 html, css 和 Javascript。
  2. ERP 系統的工作流程 : 各家 ERP Core 的工作流程不大相同,要吃官方文件。
  3. 資料庫的設計 : 在新建畫面以及資料庫時,會需要懂資料庫,舉例來說資料庫的正規化。不過大部分的 ERP 因為具備了 Table Cache 層,通常不會使用到 Store Procedure,因為既不好管理又不好開發。
  4. Web 後端的基本知識 : 開發程式邏輯時可以把自己當成後端來進行開發,差別是這邊不是利用 api 端點來和前端進行互動。
  5. Web 開發的眉角 : 就是當輸入網址後,瀏覽器到伺服器做了哪些事情,在找錯誤的時候可以更快的排解到底是 UI 的問題還是 Server 的問題。
  6. 通靈 : 因為有時候 ERP Framework 並不是被設計的很完善,抑或是 ERP 開發團隊換了很多批人進行開發,導致官方的 Coding style 或設計原則不一致,這會讓你很頭痛。而當官方連文件都沒有寫清楚時 (因為寫太清楚,官方就賺不到你的諮詢費用),你就會需要通靈了。
  7. 採購銷售出貨流程 : 要做客製化一定要先了解工作流程才能改善,這部分的知識通常與工程師無關,但你就是要懂。

在我眼中把客製化專案包包成一個 .xml 檔案,是一個邪教。
單單一個檔案就包含了所有的設定檔和程式邏輯,根本繁雜到無法進行版控,這也是為什麼很多 ERP Team 的板控都還是很古老的日期版控法、聊天室版控法或 Google Drive 版控法。
解決方法有很多,在我的團隊裡,我們將肥大的 .xml decode 成可以被板控的各個檔案,並且在程式 code review 完後,再把 Git 上的檔案 encode 成可以在 ERP 平台發佈的專案包,簡單又好用。


Reference :

Dynamics 365 - Get started with app making and customization
microsoft - Dynamics365-Apps-Samples
Oracle - Create Customizable Applications
MislavJaksic - SAP-ABAP-Development
Acumatica - Help-and-Training-Examples


上一篇
Day 9 : 出貨後的 ERP 系統 (Invoice)
下一篇
Day 11 : ERP 系統的權限管理與以角色為主的權限管理 (RBAC)
系列文
從 IT 的視角觀看公司內部的系統管理及設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言