华为 MetaERP 预算模块的“元数据模型配置流程”,不是 SAP/Oracle 里“进 GL 开 Funds Check”那种模块级开关,而是先建元数据对象 → 再绑业务事件 → 再生成预算版本 → 最后让交易实时消费。
可以分成 8 个阶段来讲,每一步都是“配置元数据”,不是改代码。
0. 总体配置链路(一句话)
维度主数据 → 预算主体/Cube → 预算版本 → 预算额度/驱动规则 → 占用层 → 控制规则 → 事件映射 → 预测/模拟版本 → 上线校验
1. 维度元数据配置(Dimension Master)
目的:先告诉系统“预算可以按什么切”。
配置对象:
元数据 | 配置内容 |
|---|---|
Dim_Org | 法人 / BG / 区域 / 代表处 / 部门树 |
Dim_RespCenter | 成本中心 / 利润中心 / 投资中心 |
Dim_Project | 项目 / WBS / Task 层级树 |
Dim_Product | 产品族 / 产品 / 解决方案 |
Dim_Resource | 人工 / 差旅 / 物料 / 外包 / 折扣 / 算力 |
Dim_Account | 自然科目 / 管理科目 / 费用类 / 资本类 |
Dim_Period | 年/季/月/周,可独立于会计日历 |
Dim_Scenario | 经营 / 资本 / 专项 / 战略 |
配置动作:
- 建维度类型
dimension_type=PROJECT - 建值集
PRJ-A001 / PRJ-A002 - 建层级树
Chip Program → PRJ-A001 → WBS-T3 - 设交叉验证规则
LegalEntity=CN AND CostCenter=SZ02 AND Project=PRJ-A001合法LegalEntity=CN AND CostCenter=MKT01 AND Project=PRJ-A001非法 - 设维度版本(组织调整不改历史)
👉 产出:维度可被预算/核算/预测共同引用。
2. 预算主体 / Cube 配置(Budget Subject)
目的:告诉系统“预算挂在谁身上”。
MetaERP 不是只挂成本中心,而是配置多个 Cube:
ORG_CUBE : Org + CostCenter + Account + Period PROJECT_CUBE : Project + WBS + Resource + Period PRODUCT_CUBE : Product + Region + Resource + Period CAPEX_CUBE : AssetClass + Project + Period STRATEGY_CUBE : StrategyProgram + BG + Period配置流程:
- 新建 Budget Cube:
PROJECT_CUBE - 选维度成员:
Project / WBS / ResourceType / Period - 设主键:
subject_key = scenario|project|wbs|resource|period|version - 设是否参与控制:
control_participant=Y/N - 设多 Cube 同写策略:
PR 一行 → ORG_CUBE + PROJECT_CUBE 同时占
- 设维度互锁:项目预算不能自动挪到部门费用
👉 产出:一笔业务可同时命中多个预算主体。
3. 预算版本元数据配置(Budget Version)
目的:把“计划 / 基线 / 预测 / 模拟”变成对象。
PLAN 战略规划 TARGET 集团目标 SUBMITTED 下级提报 BASELINE 已批准、可硬控 FORECAST 3+9 / 6+6 / 9+3 SIMULATION What-if配置字段:
version_type: BASELINE status: BASELINED control_eligible: true editable: false effective_from: 2026-01-01 effective_to: 2026-12-31 source_plan: BP-2026 lock_dims: [LegalEntity, Project]规则:
- 只有
BASELINE参与 PR/PO 强控 FORECAST只读、可分析SIMULATION不写 reservation
配置动作:
- 建版本类型
- 绑来源:
SP/BP/ProjectPlan - 设版本状态机:DRAFT → SUBMITTED → APPROVED → BASELINED → FROZEN
- 设版本优先级(同 subject 多个版本时取哪个)
4. 预算额度 / 弹性规则配置(Budget Line & Driver)
目的:不是“填 500 万”,而是定义“这 500 万怎么来”。
4.1 按额授予(AMOUNT)
subject: CC-RD / 660201 / 2026-01 grant_type: AMOUNT amount: 500000 control_flag: Y4.2 按率授予(RATE / 弹性预算)
subject: MKT / 销售费用 grant_type: RATE base_measure: Revenue.ActualYTD + Revenue.Forecast formula: amount = base * 0.08 upper_bound: 99999999 recompute_on: - SalesForecast.Published - Invoice.Actualized target_version: FORECAST4.3 战略项目固定池
subject: PRJ-A001 / 芯片验证 grant_type: AMOUNT amount: 120000000 strategic_lock: true transfer_out_allowed: false配置动作:
- 上传 Excel / EPM 推数
- 配置自上而下分解规则
- 配置自下而上汇总规则
- 配置率额混合:固定池 + 弹性池
5. 占用层元数据配置(Encumbrance Model)
目的:定义“什么时候占、占哪一层”。
PR → COMMITMENT PO → COMMITMENT→OBLIGATION GR/工时 → OBLIGATION→ACTUAL(可比例) Invoice → OBLIGATION↓ / ACTUAL↑ Payment → 不占预算配置元数据:
encumbrance_layer: - event: PR.Submitted layer: COMMITMENT action: RESERVE - event: PO.Approved layer: OBLIGATION action: CONVERT_FROM_COMMITMENT - event: Invoice.Validated layer: ACTUAL action: CONSUME_OBLIGATION还可配:
- 容差:
invoice_over_po_tolerance = 5% - 三单匹配失败是否占预算
- 取消/退回是否自动释放
- 跨期占用是否冻结
👉 这一步决定 MetaERP 能不能“交易即占额”。
6. 控制规则元数据配置(Control Rule)
目的:把“超了怎么办”变成可热加载规则。
{ "ruleId": "RD_PRJ_ABS", "filter": "projectType=RD and resource=SERVER", "trigger": "PR.Submitted", "controlLevel": "ABSOLUTE", "tolerancePct": 0, "onInsufficient": "BLOCK" }{ "ruleId": "MKT_OPEX_ADV", "filter": "costCenter like MKT%", "controlLevel": "ADVISORY", "tolerancePct": 5, "onInsufficient": "REQUIRE_APPROVAL" }配置维度:
- 触发事件:PR / PO / Expense / Timesheet / Contract
- 控制级别:ABSOLUTE / ADVISORY / TRACK / NONE
- 时间窗口:MONTH / QUARTER / YTD / PROJECT_LIFECYCLE
- 超支动作:拦截 / 审批 / 告警 / 记日志
- 例外角色:CFO / 项目赞助人
规则引擎热加载,不改 Java 代码。
7. 业务事件 → 预算影响映射(Event Mapping)
目的:让 PR/PO/报销/工时“天然会碰预算”。
event: PR.Submitted budget_effects: - cube: ORG_CUBE layer: COMMITMENT amount_from: pr_line.amount - cube: PROJECT_CUBE layer: COMMITMENT amount_from: pr_line.amountevent: Timesheet.Approved budget_effects: - cube: PROJECT_CUBE layer: ACTUAL amount_from: hours * labor_rate配置动作:
- 选业务事件
- 配维度解析器(PR 行 → project/wbs/costcenter/product)
- 配金额表达式
- 配写哪几个 Cube
- 配是否走控制规则
👉 新增“算力预约单 / 云资源申请单”只需加映射,不碰预算内核。
8. 预测 / 模拟版本配置(Forecast & Simulation)
8.1 滚动预测
forecast_version: FC_6_6 base_version: BASELINE_2026 window: 6+6 source_mix: actual_ytd: 60% business_forecast: 40% regenerate_rule: DRIVER_BASED locked_dims: [LegalEntity] editable_dims: [ResourceType, Period]8.2 模拟
sim_run: SIM-20260915-001 base_version: BASELINE_2026 clone_mode: SOFT assumptions: revenue: -15% wafer_price: +10% hiring_freeze: true output: - forecast_gap - transfer_proposal - margin_impact模拟:
- 不写 BASELINE
- 只写
sim_diff_line - 可“另存为草案预算 / 生成调剂单”
9. 权限 / 组织 / 审批流配置
对象 | 配置点 |
|---|---|
谁能编预算 | 预算编制角色 + 组织范围 |
谁能基线化 | CFO / 财经委员会 |
谁能调剂 | 预算 Owner + 上级 BG |
谁能模拟 | 战略财务 / 经营分析 |
超预算审批 | 项目赞助人 → 中心总裁 → CFO |
MetaERP 里这些也是元数据:
Role × DimensionScope × Action × VersionType10. 上线前自检(Go-Live Check)
- 维度交叉验证通过
- 至少 1 个 BASELINE 版本
- PR/PO 事件已映射
- 控制规则覆盖核心 Cube
- 占用层 COMMIT/OBLIGATION/ACTUAL 全通
- 预测版本可重算
- 模拟 Run 不影响 BASELINE
- 一笔 PR 能同时过:项目 Cube + 成本中心 Cube
- 取消 PR → 占用释放
- 发票超 PO → 走差异占用/审批
11. 用“研发买服务器”串一遍配置流
1. Dim_Project 建 PRJ-A001 / WBS-T3 2. Dim_Resource 建 SERVER 3. PROJECT_CUBE 开控制 4. BASELINE_2026 下达:PRJ-A001/T3/SERVER = 80万 5. ORG_CUBE 下达:CC-RD/660108 = 500万 6. 规则:RD+SERVER+PR = ABSOLUTE 7. 事件:PR.Submitted → 两 Cube 各 RESERVE COMMITMENT 8. PR 70万 > 项目可用60万 → 拦截 9. 改 50万 → 通过 10. PO → Commitment 转 Obligation 11. Invoice → Obligation 转 Actual 12. Forecast 版:收入变 → 销售费用自动滚 13. Sim:芯片涨价 → 项目缺口 → 出调剂建议12. 一句话总结配置哲学
MetaERP 预算不是“开开关”,而是:
先定义维度,再定义主体,再定义版本,再定义额度怎么算,再定义业务事件怎么占,再定义超了怎么办,最后让预测和模拟复用同一套元数据。