Cómo se evalúan las reglas
Puede hacerse una ligera idea de cómo se evalúan las reglas cuando aplica varias reglas a un campo. El modo en que se evalúan no es completamente determinista. En esta sección se describe el comportamiento y las interacciones que se esperan cuando se utilizan las reglas <WHEN*>, <DEFAULT> y <COPY>.
Los pasos siguientes muestran, en la secuencia apropiada, las interacciones que realizan Team Foundation Server y el usuario de un formulario de elemento de trabajo. El usuario realiza sólo los pasos 1, 8 y 13.
Con la interfaz de usuario de Visual Studio, el usuario crea un nuevo elemento de trabajo o modifica uno existente.
Rellenar los valores predeterminados del campo. Para todos los campos, utilice cualquier regla <DEFAULT> que esté fuera de las reglas <WHEN*>.
Copiar valores de campos. Para todos los campos, utilice cualquier regla <COPY> que esté fuera de las cláusulas <WHEN*>.
Para todos los campos con una regla <WHEN> coincidente, haga primero las reglas <DEFAULT> y después las reglas <COPY> en el interior.
Para todos los campos con una regla <WHENNOT> coincidente, haga primero las reglas <DEFAULT> y después las reglas <COPY> en el interior.
Nota
En Team Foundation Server siempre se procesan las reglas <WHEN> antes de las reglas <WHENNOT>.
Para todos los campos cuyos valores hayan cambiado desde el paso 1 y que contengan reglas <WHENCHANGED>, escriba primero las reglas <DEFAULT> y, después, las reglas <COPY> en el interior.
Permitir que el usuario inicie la edición.
El usuario cambia un valor de campo y después desplaza el foco del campo.
Provocar las reglas <WHEN> para ese campo que coincidan con el nuevo valor.
Provocar las reglas <WHENNOT> para ese campo que coincidan con el nuevo valor.
Provoque las reglas <WHENCHANGED> para ese campo que coincidan con el nuevo valor.
Devolver la capacidad de edición al usuario.
El usuario guarda los cambios en la base de datos.
Para todos los campos, realice las operaciones <SERVERDEFAULT> que estén definidas para el campo directa o indirectamente bajo una regla <WHEN> o <WHENNOT>.
Procesar pulsaciones de tecla
Cuando un usuario modifica un formulario de elemento de trabajo a través de la interfaz de usuario, se establece un nuevo valor para cada pulsación de tecla que se introduce en un campo. Esto significa que puede producirse inesperadamente una regla <WHEN*> cada vez que se cumplen las condiciones de requisito previo de la regla.
En el siguiente ejemplo XML, se vaciará SubStatus cuando escriba “Approved Again” en el campo Status, porque la regla <WHEN*> se produce en cuanto el usuario escribe la letra "e" en Approved, incluso aunque el valor final que se espera no sea "Approve". Por esta razón, considere cuidadosamente el uso de reglas condicionales.
<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>