数据管理功能 > 管理部件结构 > 开发可配置模块的高级选择逻辑 > 高级选择逻辑的示例和最佳做法 > 为可配置模块选择选项 > 从一组选项中选择一个选项
  
从一组选项中选择一个选项
您可能需要根据用户响应,从一组可能的选项中选择一个选项。但是,选项可能非常多,以致于难以对每个选项中分配了列的单个案例表进行组织或维护。
例如,木质桌面可以采用极其广泛的材料和饰面,如 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 的子装配包括在变型产品结构中。