2. 追溯数据对象建模

在多工厂协同场景下,追溯数据建模的核心矛盾并不是“有没有数据”,而是“同一个对象在不同工厂、不同系统里是否被认成同一个东西”。同一个物料,A 厂叫 MAT-00123,B 厂叫 WL10023;同一个批次,MES 里是 LOT20240512A,WMS 里是 B240512-01。如果不在建模阶段解决标识统一与关系定义问题,后续的追溯查询只能靠人工映射,跨厂追溯链路必然断裂。本节围绕追溯实体的统一标识方法与实体间关系建模展开,给出可直接落地的建模规则与示例。

一、追溯实体清单与统一标识规则

追溯建模的第一步是确定“哪些对象需要被追溯”。在多工厂产品追溯中,通常需要纳入以下六类核心实体:产品(Product)、批次(Lot/Batch)、序列号(SerialNumber)、工单(WorkOrder)、物料(Material)、工艺参数(ProcessParameter)。每类实体都必须拥有一个全局唯一标识(Global Unique Identifier,GUID),并且该标识在跨厂传递时保持不变。

统一标识的推荐做法是采用“实体类型码 + 工厂码 + 业务主键 + 校验位”的分段编码结构。例如:

产品:   PRD-CN01-MODELX200-A7
批次:   LOT-CN01-20240512-A-0031
序列号: SN-CN02-20240512-000871
工单:   WO-CN01-20240512-0456
物料:   MAT-CN03-RM-8842-01
工艺参数: PP-CN01-WELD-TEMP-0450

其中 CN01、CN02 表示工厂码,用于标识数据来源工厂;中间段为业务主键,承载日期、产线、物料类别等业务含义;末段为序号或校验位。这种结构的好处是:既能保证全局唯一,又能从编码本身读出工厂归属和业务语义,便于跨厂数据对齐时快速判断来源。

需要特别强调的是,统一标识不等于“所有工厂用同一个编码”。更现实的做法是保留各厂原有业务编码作为“本地标识”,同时为每个实体分配一个不随工厂变化的“全局标识”,两者通过映射表关联。这样既不影响各厂现有系统运行,又能在协同层完成统一。

二、实体关系建模:从孤立对象到追溯网络

仅有统一标识还不够,追溯的本质是“关系”。一个序列号属于哪个批次、哪个工单生产、消耗了哪些物料、经过了哪些工艺参数,这些关系构成了追溯链路。推荐采用“主实体 + 关系边”的图结构建模方式,而不是把所有字段塞进一张宽表。

核心关系包括:

  • 产品—批次:一个产品型号可对应多个生产批次,批次是产品追溯的最小聚合单元。
  • 批次—序列号:一个批次包含多个序列号,序列号是单件级追溯的最小单元。
  • 工单—批次:工单是生产执行单元,一个工单可产出一个或多个批次。
  • 批次—物料:批次与物料之间是多对多关系,需记录投料时间、投料数量、物料批次号。
  • 批次—工艺参数:批次在生产过程中产生的关键工艺参数记录,如焊接温度、压力、时长等。

这些关系在建模时应统一表达为“源实体标识—关系类型—目标实体标识—关系属性”的四元组。例如:

{
  "source": "LOT-CN01-20240512-A-0031",
  "relation": "CONSUMES_MATERIAL",
  "target": "MAT-CN03-RM-8842-01",
  "attributes": {
    "quantity": 120.5,
    "unit": "kg",
    "feedTime": "2024-05-12T08:23:00+08:00",
    "materialLot": "RM240510-07"
  }
}

这种四元组结构的好处是:关系类型可扩展、关系属性可携带业务上下文、跨厂合并时只需对齐实体标识而不需要重构表结构。

三、跨厂标识映射与关系对齐

多工厂场景下,最容易被忽视的是“同一实体在不同工厂的本地标识映射”。建议建立一张全局标识映射表,字段包括:全局标识、工厂码、本地标识、实体类型、生效时间、失效时间。当 A 厂向协同平台推送数据时,平台根据映射表将本地标识转换为全局标识;当 B 厂查询时,再根据映射表还原为 B 厂可理解的本地标识。

关系对齐的关键判断依据是:源实体和目标实体的全局标识是否都能解析成功。如果任一实体无法映射,则该条关系应进入异常队列,而不是静默丢弃。异常队列中的记录需要人工确认或补充映射规则,这是保证追溯链路完整性的重要兜底机制。

追溯实体统一标识与关系建模结构 全局标识(GUID)作为跨厂锚点,关系边承载业务语义与属性 工厂 A(CN01) 本地标识:LOT-A-240512 本地标识:WO-A-0456 本地标识:MAT-A-8842 本地标识:SN-A-000871 工厂 B(CN02) 本地标识:B240512-01 本地标识:WO-B-0789 本地标识:WL-10023 本地标识:SN-B-000912 全局标识映射层 LOT-CN01-20240512-A-0031 WO-CN01-20240512-0456 MAT-CN03-RM-8842-01 SN-CN02-20240512-000871 实体关系边(四元组:源标识 — 关系类型 — 目标标识 — 属性) 工单 WO WO-CN01-...-0456 批次 LOT LOT-CN01-...-0031 序列号 SN SN-CN02-...-0871 物料 MAT MAT-CN03-...-8842 PRODUCES CONTAINS CONSUMES 工艺参数 PP(焊接温度 / 压力 / 时长) PP-CN01-WELD-TEMP-0450 RECORDS_PP 映射异常队列 待人工确认映射 关系边统一采用四元组表达,跨厂合并时只需对齐全局标识,无需重构表结构

四、建模落地时的关键检查点

在实际项目中,追溯数据对象建模是否可用,可以通过以下检查点快速判断:第一,每个实体是否都有全局唯一标识,且该标识在跨厂传输中未被改写;第二,实体间关系是否以独立关系边形式存储,而不是硬编码在某个字段里;第三,当某个本地标识无法映射时,系统是否有异常队列承接,而不是直接丢弃;第四,工艺参数是否与批次或序列号建立了可查询的关联,而不是只停留在设备日志中。

统一标识的核心原则是“全局标识不变、本地标识可换、映射关系可查”。建模时优先保证标识与关系的可解析性,再考虑字段丰富度,避免一开始就追求大而全的宽表。

以某电子制造企业的多工厂追溯项目为例,其建模初期将批次、工单、物料全部放在一张宽表中,导致 A 厂和 B 厂的字段语义冲突,追溯查询需要写大量 CASE WHEN。改为“实体表 + 关系边表 + 全局标识映射表”三表结构后,跨厂追溯查询从原来的多表关联简化为按全局标识检索关系边,查询逻辑显著简化,异常映射也能被集中监控。这一调整说明:追溯建模的重点不是字段多少,而是标识是否统一、关系是否显式、异常是否可兜底。