3. 对象模型设计基础
在制造运营系统中,流程模型回答的是“事情按什么顺序发生”,而对象模型回答的是“事情作用在什么上、这些事物之间是什么关系”。如果只画流程不建对象模型,系统很容易退化成“表单驱动”:工单、物料、设备、人员都只是字段,一旦业务规则变化,就要在流程里到处打补丁。对象模型的价值,是把制造现场中稳定存在的业务实体及其关系先固化下来,让流程成为对象状态迁移的驱动者,而不是数据的搬运工。
对象、类、属性与标识
对象是制造运营中可被独立识别和管理的业务实体,例如一张具体的工单 WO-20240513-001、一台具体的设备 CNC-07、一批具体的物料 LOT-2405A。类是对具有相同特征和行为的对象的抽象,例如“工单类”“设备类”“物料批次类”。属性描述对象的状态与特征,如工单的计划数量、已完工数量、状态、计划开始时间;设备的能力等级、当前状态、所属产线。标识是区分同类对象的关键,制造场景中常用业务编码加版本或批次号,例如工单号、设备编号、物料批次号加序列号。
设计属性时要区分三类:一是标识属性,用于唯一识别;二是状态属性,用于驱动流程判断,如工单状态(已创建、已下达、生产中、已完工、已关闭);三是业务属性,用于记录业务事实,如实际数量、报废数量、实际开始时间。状态属性尤其重要,因为它直接决定流程模型中的分支条件。例如“工单是否可开工”不应写成流程里的硬编码判断,而应表达为“工单状态为已下达且物料齐套”这一对象约束。
关系、继承与聚合
对象之间不是孤立的。制造运营中最常见的关系包括:关联关系,如工单与物料之间存在“消耗”关联;聚合关系,如产线由多台设备组成,设备可以独立存在,产线是聚合根;组合关系,如工单与工单工序,工序不能脱离工单独立存在;继承关系,如“装配工单”和“返修工单”都继承自“工单”基类,共享工单号、状态、数量等通用属性,但各自扩展特殊属性。
继承用于表达“是一种”的语义,聚合用于表达“包含但可独立”的语义,组合用于表达“包含且同生命周期”的语义。三者混用是对象模型设计中最常见的错误。例如把“设备”作为“产线”的组合,会导致设备调拨后历史数据断裂;把“工单工序”作为聚合,会导致工单关闭后工序仍可独立存在,破坏业务一致性。
对象模型与流程模型的关系
对象模型与流程模型是“静态结构”与“动态行为”的配合关系。流程模型中的每个活动,本质上都是对某个对象执行操作或改变其状态。例如“下达工单”是把工单状态从“已创建”改为“已下达”;“报工”是增加工单的已完工数量并写入报工记录;“质检判定”是改变物料批次的质量状态。因此,对象模型中的状态机是流程分支的判断依据,流程模型中的活动是对象状态迁移的触发条件。
实践中建议先识别对象及其状态,再画流程。以工单为例,先定义状态集合:已创建、已下达、生产中、已完工、已关闭,并明确每个状态的进入条件和退出条件。然后流程模型只需表达“谁在什么条件下触发状态迁移”。这样当业务规则变化时,只需调整状态迁移条件,而不必重画整条流程。反过来,如果先画流程再补对象,往往会出现同一对象在不同流程中状态定义不一致的问题。
建模语言与工具选择
对象模型的主流表达方式是 UML 类图,它天然支持类、属性、操作、继承、聚合、组合和关联的表达。对于制造运营场景,类图适合表达对象结构,状态图适合表达单个对象的状态迁移,序列图适合表达跨对象的消息交互。三者配合使用,可以覆盖从静态结构到动态行为的完整描述。
工具选择上,轻量级团队可用 draw.io 或 PlantUML 快速表达类图与状态图,前者适合评审沟通,后者适合版本化管理。中大型项目若需要与代码或模型驱动开发衔接,可考虑 Enterprise Architect、MagicDraw 等支持 UML 全模型的工具。若采用领域驱动设计,则可用事件风暴加聚合根识别的方式先梳理对象边界,再落到类图。无论选哪种工具,关键判断标准是:能否清晰表达继承、聚合、组合和关联的语义差异,能否与流程模型共用同一套对象标识和状态定义。
一个可参考的对象模型片段
以下以工单为核心,给出一个简化的对象模型片段,用于说明属性与关系的组织方式。示例中的字段和取值均为教学假设,实际项目应按业务确认。
类:工单
标识:工单号(唯一)
属性:状态、计划数量、已完工数量、计划开始、计划结束
状态集合:已创建 → 已下达 → 生产中 → 已完工 → 已关闭
关系:
组合 1..* 工单工序
关联 0..* 物料批次(消耗)
关联 0..1 产线(执行)
类:工单工序
标识:工单号 + 工序号
属性:工作中心、标准工时、实际工时、状态
关系:关联 0..1 设备(占用)
类:物料批次
标识:批次号
属性:物料编码、可用数量、质量状态
关系:关联 0..* 工单(被消耗)
类:产线
标识:产线编码
属性:节拍、所属车间
关系:聚合 1..* 设备
类:设备
标识:设备编号
属性:能力等级、当前状态、所属产线
关系:关联 0..* 工作中心(可被分配)
这个片段中,工单与工单工序是组合关系,工序随工单关闭而结束;产线与设备是聚合关系,设备可调拨且保留历史;工单与物料批次是关联关系,一张工单可消耗多个批次,一个批次也可被多张工单消耗。把这些关系定清楚,流程模型中的“领料”“报工”“质检”等活动才有稳定的数据基础。