3. 分类体系设计原则

分类体系不是把零部件“摆整齐”的目录树,而是决定后续检索效率、复用率、BOM 准确性和治理成本的基础设施。设计时最常犯的错误,是先把层级画得很深、很全,再回头发现没人愿意按它归类。因此本节从四个相互制约的设计要素展开:分类维度选择、层级深度控制、属性继承、分类编码规则。它们共同决定一个分类节点是否“可归类、可检索、可复用、可维护”。

一、分类维度选择:先确定“按什么分”

分类维度是分类节点的划分依据。Windchill 中常见的维度包括:功能用途、结构形式、材料、连接方式、驱动方式、安装方式、标准体系等。维度选择的核心原则是单一主维度优先:同一层级尽量只用一个维度切分,避免“功能+材料+规格”混在同一层,否则会出现“螺栓”既可按螺纹分、又可按头型分、还可按材料分的归类歧义。

以紧固件为例,推荐的主维度顺序为:大类(紧固件)→ 功能子类(螺栓/螺钉/螺母/垫圈)→ 结构形式(六角头/内六角/法兰面)→ 标准体系(GB/DIN/ISO)→ 规格族(M3~M12)。这里“功能”是第一主维度,“结构形式”是第二主维度,标准体系是第三主维度。每一层只回答一个问题,归类时不需要反复权衡。

维度选择还要考虑检索路径。如果工程师最常按“规格”找件,那么规格应尽量靠近叶子节点,而不是埋在深层;如果采购最常按“标准号”找件,标准体系就应成为独立可检索维度。维度不是越多越好,一般建议一个分类节点下不超过 3 个主维度,超过时应拆分为独立分类树或改用属性表达。

二、层级深度控制:4~6 层是工程甜点区

层级深度直接影响归类成本和检索效率。层级过浅(2~3 层),节点下零件数量爆炸,检索时仍需二次筛选;层级过深(7 层以上),归类时点击次数多、路径长,且容易出现“不知道放哪层”的犹豫。工程实践中,4~6 层通常是可维护的甜点区。

控制深度的常用方法有三种:一是把“可枚举的取值”下沉为属性,例如把“材料”从分类层级改为属性字段,避免为每种材料建一个节点;二是把“组合关系”交给 BOM 或变型表达,例如“带垫圈螺栓”不必单独建类,而由装配关系表达;三是设置“其他/未分类”兜底节点,但必须配套定期清理机制,否则兜底节点会变成垃圾场。

判断深度是否合理,可以用一个简单指标:叶子节点平均承载零件数。若某叶子节点下零件数长期超过 200,说明该分支还应再分;若某中间节点下只有 1~2 个叶子且零件极少,说明层级冗余,应合并。建议在分类体系上线前,用历史零件数据做一次分布统计,把“节点数—零件数”曲线拉平,而不是凭直觉拍层级。

三、属性继承:让分类节点“自带字段”

属性继承是 Windchill 分类体系区别于普通文件夹的核心能力。其机制是:在分类节点上定义属性(如材料、表面处理、标准号、规格、强度等级),子节点自动继承父节点属性,叶子节点再补充专有属性。这样归类时系统自动带出必填字段,减少人工录入,也保证同类零件字段一致。

设计属性继承时要注意三点:第一,继承属性应是“该类零件普遍需要”的字段,例如“螺纹规格”对螺栓普遍需要,但对垫圈不适用,就不应放在紧固件根节点;第二,区分“分类属性”与“业务属性”,分类属性用于检索和归类,业务属性(如供应商、价格)应放在物料主数据或采购视图,避免分类树被业务字段污染;第三,设置必填与选填,必填字段过多会拖慢归类速度,建议每个叶子节点必填字段控制在 5~8 个。

下面这张图展示了分类维度、层级深度、属性继承与编码规则四者之间的约束关系,以及它们如何共同作用于一个可用的分类节点。

分类体系四要素约束关系 维度决定切分方式 · 深度决定归类成本 · 属性决定字段一致性 · 编码决定唯一标识 ① 分类维度 功能 / 结构 / 标准 单一主维度优先 每层只答一个问题 ② 层级深度 4~6 层为甜点区 可枚举值下沉为属性 叶子承载量做均衡 ③ 属性继承 父节点定义通用字段 叶子补充专有字段 必填控制在 5~8 个 ④ 分类编码 段位对应层级 唯一且可读 预留扩展位 示例:紧固件分类树(4 层)与编码段位对应 L1 L2 L3 L4 紧固件 (FST) 螺栓 (BOL) 螺母 (NUT) 垫圈 (WSH) 六角头 (HEX) 内六角 (SHC) 法兰面 (FLG) GB/T 5782 DIN 933 ISO 4017 分类编码示例 FST-BOL-HEX-GB5782 │ │ │ └─ 标准号段 │ │ └─ 结构形式段 │ └─ 功能子类段 └─ 大类段 规则:段位与层级一一对应, 每段 3~4 位,预留扩展位。

四、分类编码规则设计:让节点可被机器识别

分类编码是分类节点的“身份证”。好的编码规则应满足四个条件:唯一性、可读性、可扩展性、与层级对应。常见做法是采用“段位式编码”,每一段对应一个层级,段与段之间用分隔符连接。例如 FST-BOL-HEX-GB5782:FST 表示紧固件大类,BOL 表示螺栓子类,HEX 表示六角头结构,GB5782 表示标准号。这样编码本身就能反映分类路径,便于人工识别和系统解析。

编码设计要避免两个极端:一是纯流水号(如 100001、100002),虽然唯一但不可读,无法从编码判断类别;二是把规格写进编码(如 FST-BOL-HEX-GB5782-M10-50),导致编码过长且规格变化时编码失效。规格、材料、长度等应作为属性字段,而不是编码段位。编码只表达“分类身份”,不表达“具体规格”。

段位长度建议统一,例如每段 3 位字母或数字,不足补零。若某层分类数量可能超过 999,应预留 4 位。编码一旦发布,不应随意变更;若分类调整,应通过“编码映射表”维护新旧对应关系,而不是直接改编码,否则会破坏历史数据的可追溯性。

设计检查清单:① 每个层级是否只用一个主维度?② 层级深度是否控制在 4~6 层?③ 叶子节点平均零件数是否在 20~200 之间?④ 继承属性是否只包含该类普遍需要的字段?⑤ 必填字段是否控制在 5~8 个?⑥ 编码段位是否与层级一一对应?⑦ 编码是否唯一且预留了扩展位?⑧ 是否建立了“其他/未分类”兜底节点的定期清理机制?

五、四要素的协同与冲突处理

四个要素并非独立,而是相互制约。维度选得细,层级就容易深;层级压得浅,属性就要承担更多区分职责;属性字段多,归类录入成本就高;编码段位多,维护成本也高。实际设计中,常见的冲突是“检索需求”与“归类成本”之间的矛盾:工程师希望按规格直接检索,但规格作为属性字段时,检索需要依赖属性搜索而非分类浏览。

处理这类冲突的原则是:分类负责“是什么”,属性负责“什么样”。分类树回答“这是螺栓还是螺母”,属性回答“这个螺栓是 M10 还是 M12、是不锈钢还是碳钢”。检索时,用户先通过分类缩小范围,再用属性过滤精确命中。这样既控制了层级深度,又保留了检索精度。

最后需要强调,分类体系不是一次性设计完成的静态结构,而是需要持续治理的动态资产。建议每季度统计一次各叶子节点的零件增长量、属性完整率和编码重复率,对异常节点进行合并、拆分或属性调整。只有把设计原则和治理机制配套起来,分类体系才不会在半年后变成“没人用的目录树”。