Direttiva modello di produzione
La direttiva *Modello di produzione specifica combinazioni valide di membri che possono essere visualizzati all'interno di un determinato costrutto. Questa direttiva può essere visualizzata solo all'interno di modelli con *Type: CONSTRUCT.
Se questa direttiva è presente, l'ambiente di produzione viene valutato in base a ogni istanza di un costrutto associato al modello host di produzione. Il modello host è il modello che contiene la direttiva Production. Se la direttiva Production restituisce FALSE, viene generato un messaggio di avviso, ma l'elaborazione non è in grado di essere influenzata. Se il modello host non contiene direttive di produzione, non viene eseguita alcuna convalida.
La direttiva *Production viene visualizzata a livello radice del costrutto del modello host. Se più di una direttiva *Production viene visualizzata a livello radice, verrà valutata solo la direttiva definita più di recente. Il risultato della valutazione di una direttiva Production è un valore booleano.
La direttiva *Production è un costrutto. Gli elementi figlio della direttiva *Production sono altri costrutti di produzione o *Costrutti membro o una combinazione di entrambi (denominati anche produzione figlio). Non è possibile usare le direttive dello spazio dei nomi all'interno della direttiva *Production.
Ogni produzione figlio contenuta nella direttiva *Production restituisce anche TRUE o FALSE. La direttiva Produzione viene valutata per prima cosa valutando ognuna delle sue produzioni figlio. Il risultato della direttiva di produzione padre racchiusa viene ottenuto eseguendo un'operazione logica semplice sui risultati di ognuna delle produzioni figlio. Il tipo di operazione logica da applicare è specificato da vValue della direttiva *Production.
Il valore della direttiva *Production può essere uno dei simboli seguenti: EXACTLY_ONE, SATISFY_ALL o AT_LEAST_ONE.
Nell'esempio seguente viene illustrata una direttiva di produzione.
*Production: EXACTLY_ONE
{ ... child Productions ... }
L'algoritmo seguente definisce i valori della direttiva di produzione:
Se l'ambiente di produzione specifica EXACTLY_ONE, questa produzione restituisce TRUE se un'unica produzione figlio restituisce TRUE, con il resto false. In caso contrario, la produzione restituisce FALSE.
Se la produzione specifica SATISFY_ALL, questa produzione restituisce TRUE solo se tutte le produzioni figlio valutano TRUE. In caso contrario, la produzione restituisce FALSE.
Se la produzione specifica AT_LEAST_ONE, questa produzione restituisce TRUE se almeno una o più produzioni figlio restituisce TRUE. In caso contrario, la produzione restituisce FALSE.
*Le direttive di produzione possono essere annidate a profondità arbitraria.