Funzionalità per la gestione dei dati > Gestione di strutture di parti > Sviluppo della logica di selezione avanzata per i moduli configurabili > Esempi e best practice di logica di selezione avanzata > Selezione di opzioni per un modulo configurabile > Selezione di un'opzione da un insieme di diverse opzioni
  
Selezione di un'opzione da un insieme di diverse opzioni
Si potrebbe voler selezionare una singola opzione da un insieme di opzioni possibili in base alla risposta dell'utente. Tuttavia, le opzioni potrebbero essere talmente numerose che una singola tabella casi con una colonna allocata per ogni opzione potrebbe essere difficile da organizzare o mantenere.
Ad esempio, un piano in legno potrebbe essere disponibile in un numero elevato di materiali e finiture, ad esempio Oak Veneer, Solid Oak, Solid Oak with Maple Trim, Maple Veneer, Solid Maple, Solid Maple with Oak Trim, Cherry Veneer, Solid Cherry e Solid Cherry with Maple Trim.
Per rendere più gestibili queste informazioni, è possibile introdurre un parametro intermedio per connettere la tabella casi con i parametri booleani che determinano il sottoassieme opzionale da includere. Con questo approccio, la richiesta dell'utente viene acquisita in un parametro di input valutato in base a una tabella casi di opzioni valide. I risultati o l'output della tabella casi viene acquisito in un unico parametro. Infine, il valore di ogni parametro booleano viene determinato valutando questo parametro intermedio.
Per selezionare un'opzione da un insieme di diverse opzioni, attenersi alla procedura descritta di seguito.
1. Creare un modulo configurabile.
2. Allegare una parte figlio per ciascuna delle opzioni di finitura pertinenti.
3. Aggiungere un parametro stringa di input al modulo configurabile, ad esempio askFinish.
Definire un valore di prompt appropriato per il parametro stringa.
Definire i vincoli di un elenco per il parametro stringa con i seguenti valori:
Oak Veneer
Solid Oak
Solid Oak with Maple Trim
4. Definire un parametro stringa non di input utilizzato per associare la risposta dell'utente al sottoassieme corretto, ad esempio pickFinish. Questo parametro funge da elemento intermedio tra la tabella casi e i parametri booleani.
5. Aggiungere un parametro booleano non di input al modulo configurabile per ciascuna delle opzioni pertinenti. Esempio:
useOakVeneer - Per rappresentare l'utilizzo del materiale Oak Veneer
useSolidOak - Per rappresentare l'utilizzo del materiale Solid Oak
useSolidOakMaple - Per rappresentare l'utilizzo del materiale Solid Oak with Maple Trim
6. Aggiungere un'espressione di default a ciascun parametro booleano che valuti il parametro intermedio. Esempio:
pickFinish.equals(“OakVeneer”) - Per il parametro booleano Oak Veneer
pickFinish.equals(“SolidOak”) - Per il parametro booleano Solid Oak
pickFinish.equals(“SolidOakMaple”) - Per il parametro booleano Solid Oak with Maple Trim
7. Aggiungere il parametro booleano a Opzione inclusione di questo modulo configurabile per la parte figlio pertinente per ciascuna opzione, come segue:
useOakVeneer - Per il sottoassieme di finitura Oak Veneer
useSolidOak - Per il sottoassieme di finitura Solid Oak
useSolidOakMaple - Per il sottoassieme di finitura Solid Oak with Maple Trim
8. Creare un vincolo di tabella casi per mappare le risposte dell'utente al valore corretto del parametro intermedio. Si consideri, ad esempio, il vincolo di tabella casi 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
* 
Affinché questo approccio funzioni correttamente, tutti i valori nella colonna pickFinish della tabella casi devono essere univoci.
In questo approccio, dopo che l'utente seleziona un determinato valore, ad esempio Oak Veneer, la tabella casi assegna il valore OakVeneer al parametro pickFinish. Il parametro booleano useOakVeneer valuta l'espressione {pickFinish.equals(“OakVeneer”)} di default come true e il sottoassieme per Oak Veneer viene incluso nella struttura di prodotto variante.