Modalità di valutazione delle regole
È possibile farsi un'idea di come vengono valutate le regole quando si applicano più regole a un campo. La modalità di valutazione delle regole non è completamente deterministica. In questa sezione vengono descritti il comportamento e le interazioni previsti durante l'utilizzo delle regole <WHEN*>, <DEFAULT> e <COPY>.
Nei passaggi riportati di seguito sono mostrate, nella sequenza corretta, le interazioni eseguite da Team Foundation Server e dall'utente di un form relativo a un elemento di lavoro. Solo i passaggi 1, 8 e 13 vengono eseguiti dall'utente.
Mediante l'interfaccia utente Visual Studio, l'utente crea un nuovo elemento di lavoro o ne modifica uno esistente.
Riempire i campi predefiniti. Per tutti i campi, utilizzare le regole <DEFAULT> esterne alle regole <WHEN*>.
Copiare i valori dei campi. Per tutti i campi, utilizzare le regole <COPY> esterne alle clausole <WHEN*>.
Per tutti i campi con una regola <WHEN> corrispondente, creare prima una regola <DEFAULT> e quindi inserirvi regole <COPY>.
Per tutti i campi con una regola <WHENNOT> corrispondente, creare prima una regola <DEFAULT> e quindi inserirvi regole <COPY>.
Nota
Team Foundation Server elabora sempre le regole <WHEN> prima delle regole <WHENNOT>.
Per tutti i campi i cui valori sono stati modificati dopo il passaggio 1 e che contengono regole <WHENCHANGED>, creare prima una regola <DEFAULT> e quindi inserirvi regole <COPY>.
Consentire all'utente di iniziare le modifiche.
L'utente modifica un valore di un campo e quindi sposta lo stato attivo dal campo.
Generare regole <WHEN> per tale campo che corrispondano al nuovo valore.
Generare regole <WHENNOT> per tale campo che corrispondano al nuovo valore.
Generare regole <WHENCHANGED> per tale campo che corrispondano al nuovo valore.
Restituire la possibilità di modifica all'utente.
L'utente salva le modifiche nel database.
Per tutti i campi, eseguire operazioni <SERVERDEFAULT> definite per il campo in modo diretto o indiretto in una regola <WHEN> o <WHENNOT>.
Elaborazione delle pressioni dei tasti
Quando un utente utilizza l'interfaccia utente grafica per modificare un form relativo a un elemento di lavoro, ogni volta che viene premuto un tasto per un campo, viene impostato un nuovo valore. In altre parole, una regola <WHEN*> può essere attivata in modo imprevisto ogni volta che vengono soddisfatti i prerequisiti della regola.
Nell'esempio XML riportato di seguito, il valore di SubStatus viene annullato quando si digita "Approved Again" nel campo Status, in quanto la regola <WHEN*> viene attivata appena l'utente digita la lettera "e" di Approved, anche se il valore finale desiderato non è "Approve". Per questo motivo, valutare attentamente l'utilizzo delle regole condizionali.
<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>