当前位置: 首页 > news >正文

华为MetaERP 元数据驱动是什么、微服务是什么、元数据 vs Oracle EBS/Fusion 的表字段、微服务 vs Oracle 存储过程/API。最后给一张可直接拿去汇报的对比表。一、华

元数据驱动是什么、微服务是什么、元数据 vs Oracle EBS/Fusion 的表字段、微服务 vs Oracle 存储过程/API。最后给一张可直接拿去汇报的对比表。


一、华为 MetaERP 里的「元数据驱动」到底是什么

核心一句话:传统 ERP 是“代码里写死业务”,元数据驱动是“用数据描述业务,引擎读数据生成功能”。

1. 三层结构(传统 vs 元数据驱动)

  • 传统 EBS 风格:代码 + 数据库表
    • 加一个“项目参考号”字段 → 改表结构、改 Form、改 PL/SQL、改报表、发版
  • MetaERP 元数据驱动:引擎 + 元数据 + 物理表
    • 加同一个字段 → 在元数据层建一条“对象=采购订单 / 字段=项目参考号 / 类型=文本 / 必填=否”的记录
    • 元数据引擎自动:建列或映射到扩展存储、生成 UI、校验、权限、API、列表、导出

2. MetaERP 元数据管什么

不是只管“字段名”,而是管一整条业务骨架:

  • 业务对象:订单、物料、凭证、核算维度
  • 字段属性:类型、默认值、校验、可见性、跨租户覆盖
  • 关系:一对一、一对多、父子级联
  • 流程:状态机、审批路由、条件分支
  • 规则:会计引擎映射、计税规则、信用检查
  • 界面:列表、表单、仪表盘布局
  • 权限:角色对对象/字段/操作的访问控制

3. 一个具体例子:会计科目(COA)

  • Oracle EBS:公司段+部门段+科目段+项目段拼成CCID(弹性域大宽表),维度固化在字符串里,加维度要重构科目结构
  • MetaERP:把 COA 拆成核算单元 / 自然科目 / 核算维度​ 三块元数据
    • 维度是独立元数据,可动态增删
    • 事件进来 → 会计规则(也是元数据)→ 自动出多维凭证

注意:元数据驱动不等于 EAV 万能宽表。现代做法(含 MetaERP 思路)是“元数据描述结构,物理层仍用正常关系表或动态 ORM 映射”,避免 EAV 性能灾难。

二、微服务在 MetaERP 里是什么角色

核心一句话:把一个巨型 ERP 单体,按业务域拆成几百个独立部署、独立库、通过 API/事件说话的服务。

1. 拆分粒度(以财务链为例)

  • 应付微服务(有自己的表:t_ap_invoice*
  • 采购微服务(t_po_*
  • 会计引擎微服务(t_journal_*
  • 主数据微服务
  • 维度/元数据微服务

每个服务:

  • 独立代码仓库、独立容器、独立 DB Schema
  • 对外只暴露声明式 API + 事件
  • 内部爱用啥索引、啥表结构自己定

2. 跨模块怎么协作

  • EBS:同一个 Oracle 库里,PL/SQL 直接INSERT应付表再UPDATE采购分布表,一个事务搞定
  • MetaERP:
    • 应付服务落本地事务
    • 发“发票已录入”事件 / 调会计服务 API
    • 会计服务自己落凭证
    • 失败用Saga 补偿事务,不是数据库级 rollback

3. 微服务的代价(必须知道)

  • 分布式事务变最终一致,不能像 EBS 那样“全成功或全回滚”
  • 跨服务查询要做 CQRS / 只读副本 / 聚合层
  • 运维复杂度高(K8s、服务网格、链路追踪)

三、元数据 vs Oracle EBS / Fusion 的「数据库表+字段」

这是你问题里最容易被混淆的一点:元数据不是替代表,而是“表的上面再盖一层描述层”

维度

Oracle EBS / Fusion 物理表字段

MetaERP 元数据

本质

业务数据的真实存储位置(GL_JE_LINES.ENTERED_DR就是钱)

关于“有什么对象/字段/规则”的描述数据(存在元数据表或元数据服务里)

谁定义

甲骨文产品组写死,客户改要 AD 补丁/个性化

平台预置 + 租户管理员在界面配

加字段路径

新建列 → 改 PKG → 改 OAF/Form → 迁移

元数据加记录 → 引擎决定落物理列还是扩展表

表样例

PO_HEADERS_ALL,GL_CODE_COMBINATIONS,AP_INVOICES_ALL

META_OBJECT(对象定义)、META_FIELD(字段定义)、META_WORKFLOW

业务含义绑定

表名和列名即含义,但规则在 PL/SQL 里

含义、校验、标签、权限全在元数据里,物理列可能只是col_128

多租户差异

_ALL表 + ORG_ID 过滤,结构全局统一

标准元数据全局,租户元数据叠加,互不影响

升级影响

升 EBS R12 经常要跑 adop、处理客户化失效

核心引擎升,租户元数据兼容迁移即可

关键区别一句话

  • EBS 的“字段”是物理存储 + 代码含义
  • MetaERP 的“元数据字段”是逻辑定义,物理落库由引擎翻译(可能真建列,可能进扩展表,可能进 JSON 半结构化列)

Fusion 比 EBS 好一点(有更多配置化、OTBI、弹性字段),但底层仍是“预定义表结构 + 部分扩展”,不是 MetaERP 那种“对象/流程/规则全元数据化”。

四、微服务 vs Oracle 存储过程 / API

1. Oracle 存储过程(PL/SQL Package)

  • 位置:在数据库内部,和表在同一个 Oracle 实例
  • 能力:直接读全表、游标、触发器、自治事务、CCID 校验
  • 事务:原生 ACID,一个COMMIT跨应付/总账/库存
  • 扩展:改 PKG 要数据库权限,版本靠文件加载
  • 痛点:业务逻辑沉到 DB,应用层变薄,无法跨非 Oracle 库,难以容器化

2. Oracle EBS 的 API

  • 形式:xxx_pub.create_invoice这种 PL/SQL 包包装的“API”,或 OAF 的 AM/VO
  • 本质:仍是库内调用,外面 Java/Form 过来走 JDBC 调包
  • 限制:绑定 Oracle 技术栈,水平扩展靠 RAC 堆机器

3. MetaERP 微服务

  • 位置:独立进程/容器,可能连 GaussDB、可能连 Redis、可能只存事件
  • 能力:自己决定怎么存,跨服务靠 HTTP/gRPC/消息队列
  • 事务:本地 ACID + 跨服务最终一致(Saga/事件补偿)
  • 扩展:服务独立发版,A 服务升级不影响 B
  • 对外:标准 RESTful / gRPC 声明式 API,前端和低代码平台直接消费

对照表

维度

Oracle PL/SQL 存储过程

Oracle EBS Pub API

MetaERP 微服务

运行位置

Oracle DB 内

Oracle DB 内(被外部调)

独立容器/K8s

跨模块写数据

直接跨表写,一个事务

调包间接跨表写,仍同库事务

只写自己库,跨模块发事件/API

一致性

强一致

强一致

最终一致+补偿

技术绑定

死绑 Oracle

死绑 Oracle

自主栈(GaussDB/欧拉)

扩容

RAC 纵向/横向受限

同左

按服务独立 HPA 扩容

改逻辑

改 PKG 重编译

改 PKG

改某个服务镜像

低代码/AI 接入

难,要懂 PL/SQL

易,API+元数据即描述


五、把四件事串起来(MetaERP 的全局画面)

  1. 元数据驱动解决“业务怎么描述”:对象、字段、流程、规则、UI 都是数据
  2. 微服务解决“代码怎么部署”:按域拆开,各管各的表和事务
  3. 元数据引擎读元数据 → 动态生成物理表 DDL / CRUD SQL / 表单 / API 路由
  4. 微服务把这些能力按“应付”“总账”“采购”切成独立运行时
    → 所以 MetaERP 里:你配元数据,引擎建表;你调微服务 API,服务按元数据校验后写自己的物理表。

反观 Oracle EBS:

  • 表是甲骨文建的(你动不了核心)
  • 规则在 PL/SQL 里(你改要会写 Package)
  • 模块靠同库事务粘在一起(你拆不出去)
http://www.cnnetsun.cn/news/4274411.html

相关文章:

  • Java高仿知乎论坛:Spring Boot+Redis+ES构建高性能社区平台
  • Unity音游开发实战:从核心机制到性能优化的完整实现指南
  • SQL注入实战:从原理到CTF夺旗,掌握MariaDB数据库安全攻防
  • MySQL索引失效的常见场景与优化实践
  • 从课程设计到实战级酒店管理系统:Spring Boot+Vue3架构设计与核心业务实现
  • 基于Unity3D的数字孪生工厂系统:实时数据同步与三维可视化交互实践
  • Simulink S函数实战:RBF神经网络实现VSG转动惯量自适应控制
  • MATLAB导弹追踪仿真:从微分方程建模到比例导引实战
  • 长视野搜索Agent训练:从结果监督到答案回溯的信用分配
  • 强化学习中的可恢复性感知Rollout干预:优化策略学习的采样质量
  • 61-杨逢昌:机械车间刀具、量具6S检查表单填写规范及配套台账模板
  • 蓝桥杯国赛迷宫题解析:状态压缩BFS算法实战与优化
  • 基于外部图像采集的非干扰型压枪系统:原理、实现与挑战
  • 蓝桥杯国赛费用报销题解:动态规划与日期约束的经典应用
  • 现代C++编程利器:Lambda、包装器与可变参数模板实战解析
  • Unity 3D狩猎游戏开发实战:从场景搭建到AI与射击系统实现
  • 最小截平方和法(LTS):高崩溃点稳健回归原理与Python实现
  • 网格 dfs 与 FloodFill:从岛屿、区域到搜索路径
  • 数学建模国赛A题实战:FAST反射面调节的几何优化与最小二乘求解
  • 【Bug已解决】RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED using pytorch 解决方案
  • Python随机数生成全解析:从基础原理到高效实践
  • 光伏自动清洗设计:为何不能用农业喷头作为替代方案
  • 稀疏变换矩阵表示:从数学建模到图像去噪的工程实践
  • 线性规划建模与Matlab求解:从原理到竞赛实战全解析
  • FFDNet-PyTorch ZIP包实操指南:从解压失败到Jetson部署
  • ASP校园报修系统:IIS+Access老技术的实战部署指南
  • 【TriCore-OS】Event
  • 基于SEIR框架的HIV传播动力学仿真模型构建与政策分析
  • Android APK 加固原理(三):方法级代码抽取——PVM1 虚拟化打包到底是什么?
  • 从数学建模赛题到实战:全球变暖趋势分析的数据处理与统计建模全解析