4. 选项与选择项建模
在 Windchill 的可配置产品建模中,选项(Option)与选择项(Choice)是变型能力的“词汇表”。如果把可配置产品比作一门语言,选项组是语法分类,选项是词根,选择项是词形,选择项规则则是决定哪些词形可以合法组合的语法约束。只有先把这套词汇表和语法定义清楚,后续的配置器、变型规范、BOM 过滤和订单解析才有稳定的输入。本节围绕“选项池”的建立过程,说明四类对象的定义方式、相互关系以及落地时的关键判断。
一、四个核心对象的职责边界
Windchill 中与可配置产品相关的对象通常包括:选项组(Option Group)、选项(Option)、选择项(Choice)和选择项规则(Choice Rule)。它们不是同义词,职责边界必须分清,否则后期会出现“选项组里塞选择项”“选项和选择项混用”等结构性问题。
- 选项组:一组相关选项的容器,代表一个可配置维度,例如“电压等级”“外壳材质”“通信接口”。选项组本身不直接被用户选择,它定义的是“从哪个维度做选择”。
- 选项:选项组内的一个可配置特征,例如“电压等级”下的“供电电压”。选项是配置器向用户提问的单位,也是规则挂接的锚点。
- 选择项:选项下可选的具体取值,例如“供电电压”下的“220V AC”“380V AC”“24V DC”。选择项是最终写入变型规范、驱动 BOM 过滤的最小单元。
- 选择项规则:约束选择项之间“能否同时出现”或“出现后必须带出什么”的逻辑,例如“选 380V AC 时必须选三相输入”“选 IP67 时不能选塑料外壳”。
四者的层级关系是:选项组 → 选项 → 选择项,规则横跨选择项之间。理解这一点,就能避免把“颜色”直接建成选项、把“红色”建成选项组这类常见错误。
二、选项组与选项的划分原则
选项组的划分依据是“客户或订单真正会独立选择的维度”,而不是企业内部零件分类。例如一台工业电源,客户会分别选择输入电压、输出功率、防护等级、通信方式,这四个维度就应建成四个选项组。若把“输入电压”和“输出功率”合并成一个“电气参数”组,配置器界面会变得难以理解,规则也难以挂接。
选项的命名建议使用“特征名”而非“取值名”。例如选项叫“供电电压”,选择项叫“220V AC”“380V AC”。如果选项直接叫“220V AC”,那么该选项下就没有可扩展的取值空间,后续增加“110V AC”时只能新建选项,破坏结构稳定性。
选项组和选项还需要设置基数(Cardinality):单选还是多选。例如“供电电压”通常单选,“通信接口”可能多选(同时支持 RS485 和以太网)。基数决定了配置器允许用户勾选几个选择项,也决定了规则中“必须选一个”还是“可选多个”的校验方式。
三、选择项建模与编码
选择项是最终驱动 BOM 过滤的单元,因此每个选择项都应具备稳定的编码和明确的属性映射。以“供电电压”选项为例,可建立如下选择项:
| 选择项名称 | 选择项编码 | 映射属性 | 说明 |
|---|---|---|---|
| 220V AC | VOLT_220AC | 电压=220V,相数=单相 | 默认值 |
| 380V AC | VOLT_380AC | 电压=380V,相数=三相 | 需触发依赖规则 |
| 24V DC | VOLT_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 过滤失效。判断方法是检查编码是否被外部系统引用,若有则冻结。
选项池不是一次建完就固定的,它会随产品线扩展而增长。因此建模时要预留扩展位:选项组可以新增选项,选项可以新增选择项,规则可以追加。只要层级清晰、编码稳定、规则可校验,选项池就能持续支撑可配置产品的变型管理,而不会在订单量上升后变成难以维护的“规则泥潭”。