據(jù)驅(qū)動+微服務(wù))vs Oracle EBS / Fusion(物理表+PLSQL+API))
一、華為 MetaERP 里的「元數(shù)據(jù)驅(qū)動」到底是什么元數(shù)據(jù)驅(qū)動Metadata-Driven不是“把字段配置放數(shù)據(jù)庫里”這么簡單而是把系統(tǒng)結(jié)構(gòu)本身? 當(dāng)數(shù)據(jù)存。在 MetaERP 中元數(shù)據(jù)層描述業(yè)務(wù)對象采購訂單、發(fā)票、憑證、物料字段名稱、類型、是否必填、默認(rèn)值、可見性對象關(guān)系一對一、一對多、級聯(lián)校驗(yàn)規(guī)則、權(quán)限策略、審批流界面列表/表單/儀表盤怎么畫映射到物理表的規(guī)則由遷移引擎生成真實(shí)表不是 EAV 萬能值表運(yùn)行時(shí)發(fā)生什么你在元數(shù)據(jù)引擎里定義“采購訂單加一個(gè) Project Reference 字段”→ 引擎自動在物理庫生成/變更表列或通過動態(tài) ORM 映射生成 CRUD API渲染前端表單校驗(yàn)掛接權(quán)限與審計(jì)不改 Java/Go 代碼、不重啟、不碰核心表結(jié)構(gòu)。關(guān)鍵點(diǎn)元數(shù)據(jù)是“真理源”物理表是元數(shù)據(jù)的投影不是反過來。二、MetaERP 里的「微服務(wù)」是什么MetaERP 把傳統(tǒng) ERP 拆成領(lǐng)域服務(wù)采購服務(wù)自己庫PO_HEADER / PO_LINE 等價(jià)物發(fā)票服務(wù)、付款服務(wù)、庫存服務(wù)會計(jì)科目服務(wù)、規(guī)則引擎服務(wù)、主數(shù)據(jù)服務(wù)特征每個(gè)服務(wù)獨(dú)立部署、獨(dú)立 Schema/分庫、K8s 容器化服務(wù)間不直連對方表只通過 RPC/REST 消息事件協(xié)作跨服務(wù)一致性用Saga 補(bǔ)償事務(wù)不是單庫 COMMIT業(yè)務(wù)動作發(fā)事件“發(fā)票已匹配 PO”→ 財(cái)務(wù)服務(wù)監(jiān)聽 → 實(shí)時(shí)記憑證對比單體EBS 里 PO 保存→觸發(fā)器→AP 校驗(yàn)→GL 過賬全在同一個(gè) Oracle 庫一個(gè)事務(wù)里MetaERP 里這是三個(gè)服務(wù)的本地事務(wù) 事件串聯(lián)。三、元數(shù)據(jù) vs Oracle EBS / Fusion 的「數(shù)據(jù)庫表和字段」1. 表是誰定義的維度Oracle EBS / FusionMetaERP元數(shù)據(jù)驅(qū)動表結(jié)構(gòu)來源人寫 DDLPO_HEADERS_ALL、AP_INVOICES_ALL 是固化物理表元數(shù)據(jù)引擎代碼生成/動態(tài)映射出物理表加字段建表/加列 DDL 改 Form 改并發(fā)程序 可能改 PLSQL在元數(shù)據(jù)里加一條 Field 記錄引擎同步物理列表與業(yè)務(wù)對象關(guān)系業(yè)務(wù)對象≈物理表1:1 很重業(yè)務(wù)對象元數(shù)據(jù)定義物理表是其運(yùn)行時(shí)投影?彈性域角色EBS 用 Key Flexfield 把多維度拼成 CCID 大寬表維度是獨(dú)立元數(shù)據(jù)實(shí)體可插拔不拼字符串多租戶擴(kuò)展_ALL 表 ORG_ID 過濾定制易污染標(biāo)準(zhǔn)表租戶元數(shù)據(jù)層疊加標(biāo)準(zhǔn)內(nèi)核不動2. 字段語義差別EBS 字段SEGMENT1…SEGMENT30在 CCID 里代表公司/科目/部門含義靠彈性域配置解釋物理上就是字符串段ATTRIBUTE1…15是預(yù)留自定義列類型死板。Fusion 字段比 EBS 封裝深表高度抽象業(yè)務(wù)走 Service/VO/Entity Object但底層仍是預(yù)置物理模型擴(kuò)展靠 EFFExtended Flexfield或 PVO 定制。MetaERP 字段字段定義本身帶類型/校驗(yàn)/權(quán)限/索引提示/屬于哪個(gè)對象/哪個(gè)視圖可見是一等元數(shù)據(jù)。物理列由引擎決定要不要建、建哪張表頭表/明細(xì)表/維度行表。3. 科目與維度建模最典型差異EBS科目公司部門項(xiàng)目 → 拼成CCIDGL_CODE_COMBINATIONS寬表思維查得快但改維度動全局。MetaERP核算單元 / 自然科目 / 維度標(biāo)簽三層解耦憑證頭分錄行維度行分表存JOIN 換靈活性。代價(jià)EBS 固定維度查詢/法定報(bào)表快MetaERP 靈活但簡單匯總要多表聚合靠引擎優(yōu)化。四、微服務(wù) vs Oracle 的「存儲過程 / API」1. 存儲過程PL/SQL在 Oracle 體系里的位置EBS 大量邏輯在數(shù)據(jù)庫內(nèi)校驗(yàn)PL/SQL 包過賬觸發(fā)器 并發(fā)程序調(diào)用 PL/SQL接口先寫接口表 → 并發(fā)請求跑 PL/SQL 搬運(yùn)強(qiáng)一致一個(gè) Oracle DB 事務(wù)搞定跨模塊PO→AP→GLFusion 把一部分邏輯上移到應(yīng)用層ADF/Service但核心財(cái)務(wù)/成本仍深度依賴 PL/SQL 與 Oracle DB 特性自治庫、ESS 作業(yè)。2. MetaERP 微服務(wù)怎么替代它對比點(diǎn)Oracle PL/SQL / 并發(fā)程序MetaERP 微服務(wù)邏輯位置數(shù)據(jù)庫內(nèi)DB 是大腦服務(wù)內(nèi)DB 只存數(shù)據(jù)GaussDB 分片跨模塊調(diào)用同一事務(wù)跨表 UPDATE服務(wù) A 寫本地表 → 發(fā)事件 → 服務(wù) B 消費(fèi)一致性ACID 單庫事務(wù)Saga 最終一致 補(bǔ)償事務(wù)擴(kuò)展方式改 PL/SQL 包、建并發(fā)請求加服務(wù)/加元數(shù)據(jù)/加事件處理器實(shí)時(shí)性批處理為主日結(jié)、月結(jié)事件驅(qū)動交易即記賬對外集成SOAP/REST API 是“出口”內(nèi)部仍 PLSQL 主導(dǎo)API 是服務(wù)間原生協(xié)議無“內(nèi)部 PLSQL 捷徑”多租戶單庫多 ORG_ID租戶級 Schema/分片物理隔離3. API 語義差異EBS API如AP_INVOICES_PKG.CREATE_INVOICE是 PL/SQL 包包裝外面套 ISG/SOA 轉(zhuǎn) Web Service本質(zhì)是“給存儲過程穿 HTTP 外衣”。Fusion APIREST/SOAP 是標(biāo)準(zhǔn)入口但底層仍走 Fusion 的 Entity/VO 層不能直接 DML 基表。MetaERP APIAPI 不是“暴露老邏輯”而是元數(shù)據(jù)引擎順手生成的——定義對象就有 API對象變 API 變服務(wù)邊界API 邊界。五、一張總表收口主題Oracle EBS / Fusion華為 MetaERP結(jié)構(gòu)真理源物理表 代碼 彈性域配置元數(shù)據(jù)引擎Metadata as Source of Truth加字段/對象DDL 改 Form/PLSQL/并發(fā)改元數(shù)據(jù) → 引擎生成表/API/界面表字段含義靠段名/彈性域解釋CCID 寬表字段是自描述元數(shù)據(jù)維度解耦服務(wù)邊界模塊耦合同庫事務(wù)領(lǐng)域微服務(wù)獨(dú)立庫事件協(xié)作業(yè)務(wù)邏輯載體PL/SQL、觸發(fā)器、并發(fā)程序服務(wù)內(nèi)領(lǐng)域代碼 元數(shù)據(jù)規(guī)則 事件處理器跨模塊一致性單庫 COMMIT/ROLLBACKSaga 補(bǔ)償、最終一致定制侵入性改核心表/存儲過程風(fēng)險(xiǎn)高租戶元數(shù)據(jù)層隔離內(nèi)核不動實(shí)時(shí)記賬批量/月末業(yè)務(wù)事件→會計(jì)規(guī)則服務(wù)實(shí)時(shí)出憑證六、一句話類比好記EBSExcel 模板寫死列改列要改文件結(jié)構(gòu)公式藏在 VBA 里所有表在一個(gè)工作簿。MetaERPNotion 數(shù)據(jù)庫——你改“屬性”配置后端表/視圖/表單/API 自動變每個(gè)團(tuán)隊(duì)微服務(wù)有自己的子庫通過 webhook 聯(lián)動。