Выбор одной опции из набора нескольких опций
Может потребоваться в зависимости от ответа пользователя выбрать одну опцию из набора нескольких возможных опций. При этом может быть задействовано так много опций, что одну таблицу вариантов со столбцом, назначенным для каждой опции, может быть сложно организовать или обслуживать.
Например, может быть доступно очень большое количество материалов и отделок для деревянной столешницы, таких как Дубовый шпон, Массив дуба, Массив дуба с кленовой отделкой, Кленовый шпон, Массив клена, Массив клена с дубовой отделкой, Вишневый шпон, Массив вишни и Массив вишни с кленовой отделкой.
Чтобы сделать эту информацию более управляемой, можно ввести промежуточный параметр для соединения таблицы вариантов с логическими параметрами, которые определяют, какая необязательная подсборка должна быть включена. При этом подходе запрос пользователя фиксируется во входном параметре, который оценивается по таблице вариантов допустимых опций. Результаты, или вывод таблицы вариантов, записываются в одном параметре. Наконец, значение для каждого логического значения определяется посредством оценки этого промежуточного параметра.
Чтобы выбрать одну опцию из набора нескольких опций, выполните следующие действия.
1. Создайте конфигурируемый узел.
2. Присоедините дочернюю деталь для каждой из соответствующих опций отделки.
3. Добавьте строковый входной параметр в конфигурируемый узел, например, askFinish.
◦ Определите соответствующее значение запроса для строкового параметра.
◦ Определите ограничения списка для строкового параметра со следующими значениями:
▪ Дубовый шпон
▪ Массив дуба
▪ Массив дуба с кленовой отделкой
4. Определите строковый параметр, не являющийся входным, который используется для сопоставления ответа пользователя с правильной подсборкой - например, pickFinish. Этот параметр действует как посредник между таблицей вариантов и логическими параметрами.
5. Добавьте логический не входной параметр в конфигурируемый узел для каждой из соответствующих опций. Например:
◦ useOakVeneer - для представления использования материала "дубовый шпон"
◦ useSolidOak - для представления использования материала "массив дуба"
◦ useSolidOakMaple - для представления использования материала "массив дуба с кленовой отделкой"
6. Добавьте к каждому логическому параметру выражение по умолчанию, которое вычисляет промежуточный параметр. Например:
◦ pickFinish.equals(“OakVeneer”) - для логического параметра "дубовый шпон"
◦ pickFinish.equals(“SolidOak”) - для логического параметра "массив дуба"
◦ pickFinish.equals(“SolidOakMaple”) - для логического параметра "массив дуба с кленовой отделкой"
7. Добавьте логический параметр в Опцию включения этого конфигурируемого узла для соответствующей дочерней детали для каждой опции, как показано ниже.
◦ useOakVeneer - для подсборки обработки "дубовый шпон"
◦ useSolidOak - для подсборки обработки "массив дуба"
◦ useSolidOakMaple - для подсборки обработки "массив дуба с кленовой отделкой"
8. Установите ограничение таблицы вариантов, чтобы сопоставлять ответы пользователя с правильным значением промежуточного параметра. Например, рассмотрим ограничение таблицы вариантов pickFinish.
askFinish
|
pickFinish
|
Дубовый шпон
|
Дубовый шпон
|
Массив дуба
|
Массив дуба
|
Массив дуба с кленовой отделкой
|
SolidOakMaple
|
Кленовый шпон
|
Кленовый шпон
|
Массив клена
|
Массив клена
|
Массив клена с дубовой отделкой
|
SolidMapleOak
|
|
Чтобы этот подход работал правильно, все значения в столбце pickFinish таблицы вариантов должны быть уникальными.
|
При этом подходе после выбора пользователем определенного значения, такого как "Дубовый шпон", таблица вариантов назначает значение OakVeneer параметру pickFinish. Логический параметр useOakVeneer оценивает выражение по умолчанию {pickFinish.equals(“OakVeneer”)} как истину, и подсборка для дубового шпона включается в структуру исполнения изделия.