把库存域的“概念语义”固化下来,作为库存/成本/财务打通的知识底)
华为 MetaERP 里说的“本体建模”不是画 E-R 图而是用业务本体OWL 类 关系 公理 规则把库存域的“概念语义”固化下来作为库存/成本/财务打通的知识底座。你问的“本体轮建模”我按“本体驱动建模的一轮完整闭环”来理解概念定义 → 关系编织 → 状态公理 → 事件联动 → 推理校验下面用“芯片物料采购入库→生产领用→销售出库” 这个具体例子走一遍。一、库存域本体分层先定边界MetaERP 库存域遵循“量/值/证分离”层本体归属管什么实物层Inventory 本体数量、库位、批次、序列号、状态价值层Cost 本体标准价、移动加权价、成本层凭证层Accounting 本体科目、分录、暂估本体建模只定义“语义”不写 SQL。二、定义本体类ClassInventoryItem 库存实物项 Material 物料主数据 InventoryOrg 库存组织 Subinventory 子库 Locator 货位 Lot 批次 Serial 序列号 OnHandQty 在手量 ReservedQty 预留量 InventoryTxn 库存事务 StockStatus 库存状态枚举示例实例Material: MAT-IC-0015G基带芯片InventoryOrg: 深圳中央仓Subinventory: 原料合格区Lot: L20260601OnHandQty: 1000pcs三、定义关系Object Property这是“本体轮”区别于普通表模型的关键belongsToItem OnHandQty → Material locatedIn OnHandQty → Locator underOrg Locator → InventoryOrg hasLot OnHandQty → Lot hasStatus OnHandQty → StockStatus generatedBy InventoryTxn → BusinessDoc(采购收货单) changesQty InventoryTxn → OnHandQty reserves ReservedQty → OnHandQty costedBy OnHandQty → CostLayer postsTo InventoryTxn → AccountingEntry关系图示意采购收货单 ──generatedBy── 入库事务 入库事务 ──changesQty── OnHandQty OnHandQty ──belongsToItem── 基带芯片 OnHandQty ──locatedIn── 货位A1 OnHandQty ──hasLot── L20260601 OnHandQty ──costedBy── 标准成本层(100元)四、定义公理与约束本体规则用类 OWL 业务规则表达不让脏数据进模型唯一性公理同一个(Material, InventoryOrg, Subinventory, Locator, Lot)最多存在一个OnHandQty实例数量守恒公理∀ OnHandQty: availableQty onHandQty − reservedQty − frozenQty状态约束StockStatus冻结时不能参与销售出库跨域联动公理入库事务生成后必须触发 Cost 本体的成本层更新并生成暂估凭证可追溯公理任意 OnHandQty 变更必须存在至少一条InventoryTxn作为证据五、用一个完整业务流跑一轮“本体轮”场景采购 1000 片芯片入库后领用 200 片做生产① 采购入库PTP → 库存本体业务动作采购订单收货 1000pcs单价 105 元标准价 100 元本体变化新建OnHandQty(芯片, 深圳仓, 原料区, A1, L20260601) 1000新建InventoryTxn(type接收入库)costedBy挂标准成本层 100 元生成AccountingEntry借 库存 100,000借 PPV 5,000贷 应付暂估 105,000② 生产领用业务动作车间领 200pcs本体推理changesQty扣减 OnHandQty → 800生成领用事务关联成本层自动生成借 生产成本 20,000贷 原材料 20,000可用量重算available 800 − 0③ 销售出库OTC 反向取数销售订单锁 300pcs → 生成ReservedQty300发货后OnHandQty 变 500预留释放成本按本体成本层结转 COGS不再回查采购单④ 反向追溯本体优势财务问“这 200 片成本怎么来的”→ 从生产成本凭证反查领用事务→ 反查OnHandQty实例→ 反查入库事务→ 反查采购订单发票全链路靠本体关系回溯不用拼 SQL。六、本体建模 vs 传统表建模对照维度传统 INV 表模型MetaERP 本体建模物料库位MTL_ONHAND_QUANTITIES_DETAIL行记录OnHandQty类 关系网出入库插事务表InventoryTxn作为语义事件驱动下游本体可用量视图算出来公理推导availableQty跨域打通ETL 跑批本体关系直接挂 Cost/GLAI 使用大模型易幻觉盘古基于本体约束推理七、给你一个可抄的建模模板库存模块# 类 Class: OnHandQty dataProperty: quantity, uom, updateTime objectProperty: belongsToItem, locatedIn, hasLot, costedBy # 规则(DSL伪代码) rule AvailableQty: onHandQty.available onHandQty.qty - sum(reservedQty) - sum(frozenQty) where onHandQty.hasStatus ! 报废 rule TxnMustHaveSource: InventoryTxn ⊑ ∃ generatedBy.BusinessDoc rule InvToCostSync: InventoryTxn(type入库) → createOrUpdate CostLayer八、实操建议落地时别踩坑先建“库存本体”再写微服务Inventory 服务只消费本体实例实物量归 Inventory 域别把单价塞进 OnHandQty 表里批次/序列号做成独立类方便溯源芯片、设备类必做状态机合格/冻结/待检/报废用枚举类公理约束别用字符串字段所有扣减必须走InventoryTxn禁止直接 UPDATE 数量