从一组选项中选择一个选项
您可能需要根据用户响应,从一组可能的选项中选择一个选项。但是,选项可能非常多,以致于难以对每个选项中分配了列的单个案例表进行组织或维护。
例如,木质桌面可以采用极其广泛的材料和饰面,如 Oak Veneer、Solid Oak、Solid Oak with Maple Trim、Maple Veneer、Solid Maple、Solid Maple with Oak Trim、Cherry Veneer、Solid Cherry 和 Solid Cherry with Maple Trim。
为了使这些信息更易于管理,您可以引入一个中间参数,以将案例表与用于确定应包括哪些可选子装配的布尔参数连接起来。利用这种方法,系统会在输入参数中捕获用户的请求,而其中所述的输入参数由有效选项的案例表进行评估。案例表的结果或输出会在单个参数中捕获。最后,通过计算此中间参数来确定每个布尔参数的值。
要从一组选项中选择一个选项:
1. 创建一个可配置模块。
2. 为每个相关的饰面选项附加子项部件。
3. 向此可配置模块中添加字符串输入参数,例如 askFinish。
◦ 为此字符串参数定义相应的提示值。
◦ 为具有以下值的字符串参数定义列表约束:
▪ Oak Veneer
▪ Solid Oak
▪ Solid Oak with Maple Trim
4. 定义一个字符串非输入参数 (例如 pickFinish),以用于匹配用户对正确子装配的响应。此参数作为案例表与布尔参数之间的中间参数来运行。
5. 对于每个相关选项,将布尔非输入参数添加到可配置模块中。例如:
◦ useOakVeneer - 表示使用材料 Oak Veneer
◦ useSolidOak - 表示使用材料 Solid Oak
◦ useSolidOakMaple - 表示使用材料 Solid Oak with Maple Trim
6. 为用于计算中间参数的每个布尔参数添加默认表达式。例如:
◦ pickFinish.equals(“OakVeneer”) - 用于 Oak Veneer 布尔值
◦ pickFinish.equals(“SolidOak”) - 用于 Solid Oak 布尔值
◦ pickFinish.equals(“SolidOakMaple”) - 用于 Solid Oak with Maple Trim 布尔值
7. 针对每个选项的相关子项部件,将此布尔参数添加到此可配置模块的“包含选项”中,如下所示:
◦ useOakVeneer - 用于 Oak Veneer 饰面子装配
◦ useSolidOak - 用于 Solid Oak 饰面子装配
◦ useSolidOakMaple - 用于 Solid Oak with Maple Trim 饰面子装配
8. 建立案例表约束,以将用户的响应映射到中间参数的正确值。例如,请考虑案例表约束 pickFinish。
askFinish
|
pickFinish
|
Oak Veneer
|
Oak Veneer
|
Solid Oak
|
Solid Oak
|
Solid Oak with Maple Trim
|
SolidOakMaple
|
Maple Veneer
|
Maple Veneer
|
Solid Maple
|
Solid Maple
|
Solid Maple with Oak Trim
|
SolidMapleOak
|
|
为了使此方法能够正常运行,案例表 pickFinish 列中的所有值都必须是唯一的。
|
在此方法中,用户选择特定值 (例如 Oak Veneer) 后,案例表会将值 OakVeneer 分配给参数 pickFinish。布尔参数 useOakVeneer 会将其默认表达式 {pickFinish.equals(“OakVeneer”)} 计算为 true,并将使用 Oak Veneer 的子装配包括在变型产品结构中。