设计模块产品结构
许多产品包含大量子系统,这些子系统均具有自己的可选元素集。在某些情况下,每个子系统的选项由系统以合乎逻辑的方式单独处理。而在其他情况下,一个子系统中的可用选项则可能需要受到其他子系统中所做选择的影响。
例如,假设金属展示柜有多种不同型号可供选用,其中提供有多种展示、装饰和光照选项。根据选定的展示柜型号,可用于展示、装饰和光照元素的选项可能会有所不同。
对于仅具有少数模块和有限选项集的简单产品结构而言,创建和测试合适的可配置产品结构相对比较容易。但是,如果产品结构有五个模块,而每个模块都有六个可供选择的选项,则排列总数 (在本例中为 5 x 6 = 30) 可能是惊人的。
建议的方法是将模块的产品结构组织到可配置模块中,如下图所示。
在本示例中,假定 Display Case 有五种不同型号 (即 Model_01 到 Model_05) 可供选用,并且某些选项仅适用于某些型号,如下表所示。
Display Case 型号 | Trim Options | Lighting Options | Display Options |
Model_01 | Twin Standard | Single Double | Shelf, Ventilated Shelf, Solid |
Model_02 | Standard Deluxe | Double, Triple | Shelf, Ventilated Shelf, Solid |
Model_03 | Twin Standard Deluxe | Single Double Triple | Shelf, Ventilated Rack |
Model_04 | Twin Standard Deluxe | Single Double Triple | Shelf, Ventilated Shelf, Solid Rack |
Model_05 | Twin Standard Deluxe | Single Double Triple | Shelf, Ventilated Shelf, Solid Rack |
下一步是以模块化方式建立相应的逻辑元素,以便可以单独测试每个选项模块,然后将其整合到完整的产品结构中。例如,请考虑 Trim Options 模块的逻辑。此模块需要四个参数,如下所示:
askModel
• 字符串,输入参数
• 提示 = "(TRIM OPTIONS) Select the desired display case model"
• 约束:"Model_01", "Model_02", "Model_03", "Model_04", "Model_05"
• "hide when driven" = true
useStandard
• 布尔,非输入参数
• 针对 Bumper, Standard 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
useTwin
• 布尔,非输入参数
• 针对 Bumper, Twin 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
useDeluxe
• 布尔,非输入参数
• 针对 Bumper, Deluxe 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
接下来,您需要一个案例表 (例如 pickTrim) 来控制每种型号的展示柜的适用性,如下表所示。
Display Case 型号 | Trim Options | Lighting Options | Display Options |
Model_03 | TwinStandardDeluxe | SingleDoubleTriple | Shelf, Ventilated Rack |
Model_04 | TwinStandardDeluxe | SingleDoubleTriple | Shelf, Ventilated Shelf, Solid Rack |
Model_05 | TwinStandardDeluxe | SingleDoubleTriple | Shelf, Ventilated Shelf, Solid Rack |
下一步是以模块化方式建立相应的逻辑元素,以便可以单独测试每个选项模块,然后将其整合到完整的产品结构中。例如,请考虑 Trim Options 模块的逻辑。此模块需要四个参数,如下所示:
askModel
• 字符串,输入参数
• 提示 = "(TRIM OPTIONS) Select the desired display case model"
• 约束:"Model_01", "Model_02", "Model_03", "Model_04", "Model_05"
• "hide when driven" = true
useStandard
• 布尔,非输入参数
• 针对 Bumper, Standard 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
useTwin
• 布尔,非输入参数
• 针对 Bumper, Twin 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
useDeluxe
• 布尔,非输入参数
• 针对 Bumper, Deluxe 部件,添加到 Display Case 可配置模块的“使用”选项卡中的“包含选项”
接下来,您需要一个案例表 (例如 pickTrim) 来控制每种型号的展示柜的适用性,如下表所示。
askModel | useStandard | useTwin | useDeluxe |
Model_01 | yes | yes | no |
Model_02 | yes | no | yes |
Model_03 | yes | yes | yes |
Model_04 | yes | yes | yes |
Model_05 | yes | yes | yes |
通过这些逻辑表达式可以单独测试 Trim Options 模块,以便您能够确保一切都按预期运行。
| 但是,如果对每个模块都使用相同的方法,则系统会反复询问用户所需的 Display Case 型号,这是不必要的。因此,在创建每个模块并验证它们能够正常运行后,需要将这些模块整合到一起。 |
要整合这些模块:
1. 创建合适的参数以确定 Display Case 可配置模块中的型号,如下所示:
◦ askModel - 字符串,必需输入参数
◦ 提示 = "Select the desired display case model"
◦ 约束:"Model_01", "Model_02", "Model_03", "Model_04", "Model_05"
2. 在 Display Case 可配置模块及其所有后代的 askModel 之间建立对等项。
3. 移除每个选项模块中每个 askModel 参数的约束。
| 为了避免在 Display Case 顶层可配置模块与构成每个模块的可配置模块之间发生冲突,必须移除这些约束。 |
4. 测试已完成的可配置产品结构。由于您已对每个模块都进行了测试,因此只需验证用户在 Display Case 顶层可配置模块中输入的 askModel 值是否已正确地复制到每个模块中即可。
| 如果在“配置”窗口的“设置参数”页面中显示 BOM 树并使用“应用”按钮,则可以快速查看是否已将 Display Case 可配置模块中 askModel 的当前值复制到每个模块中。 |