4. 选项与选择项建模

在 Windchill 的可配置产品建模中,选项(Option)与选择项(Choice)是变型能力的“词汇表”。如果把可配置产品比作一门语言,选项组是语法分类,选项是词根,选择项是词形,选择项规则则是决定哪些词形可以合法组合的语法约束。只有先把这套词汇表和语法定义清楚,后续的配置器、变型规范、BOM 过滤和订单解析才有稳定的输入。本节围绕“选项池”的建立过程,说明四类对象的定义方式、相互关系以及落地时的关键判断。

一、四个核心对象的职责边界

Windchill 中与可配置产品相关的对象通常包括:选项组(Option Group)、选项(Option)、选择项(Choice)和选择项规则(Choice Rule)。它们不是同义词,职责边界必须分清,否则后期会出现“选项组里塞选择项”“选项和选择项混用”等结构性问题。

  • 选项组:一组相关选项的容器,代表一个可配置维度,例如“电压等级”“外壳材质”“通信接口”。选项组本身不直接被用户选择,它定义的是“从哪个维度做选择”。
  • 选项:选项组内的一个可配置特征,例如“电压等级”下的“供电电压”。选项是配置器向用户提问的单位,也是规则挂接的锚点。
  • 选择项:选项下可选的具体取值,例如“供电电压”下的“220V AC”“380V AC”“24V DC”。选择项是最终写入变型规范、驱动 BOM 过滤的最小单元。
  • 选择项规则:约束选择项之间“能否同时出现”或“出现后必须带出什么”的逻辑,例如“选 380V AC 时必须选三相输入”“选 IP67 时不能选塑料外壳”。

四者的层级关系是:选项组 → 选项 → 选择项,规则横跨选择项之间。理解这一点,就能避免把“颜色”直接建成选项、把“红色”建成选项组这类常见错误。

可配置产品选项池结构 选项组 电压等级 / 外壳材质 选项 供电电压 / 防护等级 选择项 220V AC / IP67 / 不锈钢 包含 取值 选择项规则(跨选择项约束) 互斥规则 IP67 与 塑料外壳 不可同选 依赖规则 380V AC 必须带 三相输入 默认规则 未指定时默认 220V AC 约束 选项池落地检查要点 1. 选项组按“可配置维度”划分,不按零件分类划分 2. 选项名用“特征名”,选择项名用“具体取值”,避免同名 3. 规则优先用互斥/依赖表达,默认值只做兜底 4. 选择项编码与 ERP/PLM 属性映射提前对齐

二、选项组与选项的划分原则

选项组的划分依据是“客户或订单真正会独立选择的维度”,而不是企业内部零件分类。例如一台工业电源,客户会分别选择输入电压、输出功率、防护等级、通信方式,这四个维度就应建成四个选项组。若把“输入电压”和“输出功率”合并成一个“电气参数”组,配置器界面会变得难以理解,规则也难以挂接。

选项的命名建议使用“特征名”而非“取值名”。例如选项叫“供电电压”,选择项叫“220V AC”“380V AC”。如果选项直接叫“220V AC”,那么该选项下就没有可扩展的取值空间,后续增加“110V AC”时只能新建选项,破坏结构稳定性。

选项组和选项还需要设置基数(Cardinality):单选还是多选。例如“供电电压”通常单选,“通信接口”可能多选(同时支持 RS485 和以太网)。基数决定了配置器允许用户勾选几个选择项,也决定了规则中“必须选一个”还是“可选多个”的校验方式。

三、选择项建模与编码

选择项是最终驱动 BOM 过滤的单元,因此每个选择项都应具备稳定的编码和明确的属性映射。以“供电电压”选项为例,可建立如下选择项:

选择项名称选择项编码映射属性说明
220V ACVOLT_220AC电压=220V,相数=单相默认值
380V ACVOLT_380AC电压=380V,相数=三相需触发依赖规则
24V DCVOLT_24DC电压=24V,相数=直流与部分通信模块互斥

编码建议采用“维度缩写_取值”的格式,全部大写、下划线分隔,避免中文和空格。编码一旦被下游系统引用,就不应随意修改;若必须修改,应通过别名或映射表过渡。选择项还可以设置默认值和排序号,默认值用于用户未选择时的兜底,排序号决定配置器界面的展示顺序。

四、选择项规则的表达方式

选择项规则是选项池的“语法约束”,常见类型包括互斥、依赖、包含、排除和默认。Windchill 中通常通过规则表达式或规则表来维护,核心是把业务语言翻译成“条件 → 结论”的形式。

  • 互斥规则:A 与 B 不能同时被选。例如“IP67 防护”与“塑料外壳”互斥。
  • 依赖规则:选 A 时必须选 B。例如选“380V AC”时必须选“三相输入”。
  • 包含规则:选 A 时自动带出 B,且 B 不可取消。例如选“以太网通信”时自动带出“RJ45 接口”。
  • 排除规则:选 A 时自动排除 B。例如选“24V DC”时排除“三相输入”。
  • 默认规则:未指定时自动填入某选择项,例如默认“220V AC”。

规则编写时要注意方向性:依赖规则是单向的,“380V AC → 三相输入”成立,不代表“三相输入 → 380V AC”成立,因为三相输入也可能对应其他电压。若业务上确实双向约束,应写成两条规则或使用等价规则。规则之间还可能冲突,例如 A 依赖 B、B 又与 C 互斥,此时需要做规则一致性检查,避免配置器出现无解组合。

五、建立选项池的实操过程

下面以一台“工业开关电源”为例,给出选项池的建立过程。示例参数为教学假设,不代表真实产品规格。

步骤1:定义选项组
  选项组1:输入电压(单选)
  选项组2:输出功率(单选)
  选项组3:防护等级(单选)
  选项组4:通信接口(多选)

步骤2:在选项组下定义选项
  输入电压 → 供电电压
  输出功率 → 额定功率
  防护等级 → 外壳防护
  通信接口 → 通信方式

步骤3:为每个选项定义选择项
  供电电压:220V AC / 380V AC / 24V DC
  额定功率:150W / 300W / 600W
  外壳防护:IP20 / IP67
  通信方式:RS485 / 以太网 / 无

步骤4:编写选择项规则
  R1 互斥:IP67 与 塑料外壳 不可同选
  R2 依赖:380V AC → 三相输入
  R3 包含:以太网 → RJ45 接口
  R4 排除:24V DC → 排除 三相输入
  R5 默认:供电电压 默认 220V AC

步骤5:校验与发布
  检查规则冲突、默认值唯一性、编码重复
  发布选项池,供配置器和变型规范引用

完成上述步骤后,选项池就可以被配置器加载。用户在配置界面选择“380V AC + 600W + IP67 + 以太网”时,系统会依据 R2 自动带出“三相输入”,依据 R3 带出“RJ45 接口”,并检查 R1 是否被违反。若用户同时选了“塑料外壳”,配置器应给出冲突提示并阻止提交。

规则校验建议在选项池发布前执行一次“全组合扫描”:对每个选项组的选择项做笛卡尔积,逐条应用规则,统计无解组合和冲突组合。若冲突比例过高,说明规则过严或选项划分不合理,应回到选项组和选项层级调整,而不是在配置器里打补丁。

六、常见建模错误与判断依据

实际项目中,选项池最容易出现四类问题。第一类是层级错位:把选择项直接挂在选项组下,导致配置器无法按选项提问。判断方法是检查每个选择项是否有明确的父选项。第二类是命名混淆:选项和选择项同名,规则引用时无法区分。判断方法是看名称是否同时出现在两个层级。第三类是规则方向错误:把单向依赖写成双向,导致配置器过度约束。判断方法是逐条规则验证反向是否成立。第四类是编码不稳定:选择项编码随名称变化,导致下游 BOM 过滤失效。判断方法是检查编码是否被外部系统引用,若有则冻结。

选项池不是一次建完就固定的,它会随产品线扩展而增长。因此建模时要预留扩展位:选项组可以新增选项,选项可以新增选择项,规则可以追加。只要层级清晰、编码稳定、规则可校验,选项池就能持续支撑可配置产品的变型管理,而不会在订单量上升后变成难以维护的“规则泥潭”。