Asignar reglas y valores basados en condiciones
Puede definir reglas que se ejecutan condicionalmente mediante los elementos WHEN, WHENNOT, WHENCHANGED y WHENNOTCHANGED.Estas reglas se usan para definir qué elementos se ejecutan cuando la cláusula definida es True.Puede definir condiciones basadas en el valor asignado a un campo concreto o en si un usuario modifica un campo concreto.Por ejemplo, puede crear una lista de selección dependiente para proporcionar seguridad detallada o comportamientos personalizados.
Las condiciones de campo son elementos adicionales que se enumeran en un elemento FIELD (Definition) o el elemento FIELD (Workflow).Para obtener más información sobre estos elementos, vea FIELD (Definición) (Elemento) y FIELD (Workflow) (elemento).
A continuación se muestra un ejemplo sencillo de la cláusula WHEN:
<FIELD . . . >
<WHEN field="referenceName" value="yyy">
</FIELD>
Esta cláusula significa que todo lo que esté dentro del elemento FIELD es aplicable siempre que el campo refname tenga el valor "yyy".El campo debe ser un nombre de referencia de campo válido.Para obtener más información, vea Convenciones de nomenclatura para objetos de seguimiento de elementos de trabajo.
[!NOTA]
El atributo de valor no distingue entre mayúsculas y minúsculas.Por consiguiente, si el nombre de referencia del campo contiene "YYY", las coincidencias pueden incluir el valor = "yyy" o "YYY".
En este tema
Estructura de la sintaxis para los elementos condicionales
Definir un campo obligatorio dependiente
Definir una lista de selección condicional
Definir un campo cuando el usuario cambia otro campo (WHENCHANGED)
Definir un valor de campo basado en un usuario que no modifica un campo (WHENNOTCHANGED)
Estructura de la sintaxis para los elementos condicionales
En la siguiente tabla se describen reglas condicionales que se pueden especificar como elementos secundarios del elemento de FIELD (Definition) o el elemento FIELD (Workflow).Estos elementos aceptan uno o más de los siguientes atributos:
field: cadena que describe el campo.Debe tener entre 1 y 255 caracteres.
value: cuando el campo especificado tiene este valor, las reglas de los elementos WHEN y WHENNOT se aplican al campo actual.
Elemento |
Sintaxis |
Descripción |
---|---|---|
WHEN |
|
Especifica una o más reglas que se aplicarán al campo actual cuando otro campo tenga un valor concreto.El elemento primario define el campo actual. Cuando el campo especificado tiene el valor especificado, las reglas de este elemento se aplican al campo actual. |
WHENNOT |
|
Especifica una condición según la cual se aplican una o varias reglas al campo actual.Las reglas se aplican al campo actual cuando cambia el valor de otro campo.El elemento primario define el campo actual. Cuando el campo especificado no contiene el valor especificado, las reglas de este elemento se aplican al campo actual. |
WHENCHANGED |
|
Especifica una condición según la cual se aplican una o varias reglas al campo actual.Las reglas se aplican al campo actual cuando se cambia el valor de otro campo en una revisión de un elemento de trabajo.El elemento primario define el campo actual. |
WHENNOTCHANGED |
|
Especifica una condición según la cual se aplican una o varias reglas al campo actual.Las reglas se aplican al campo actual cuando el valor de otro campo no cambia en una revisión de un elemento de trabajo.El elemento primario define el campo actual. |
En la siguiente tabla se describe cómo cada regla opcional, basada en condiciones, se aplica al campo primario cuando la cláusula condicional especificada con un elemento WHEN, WHENNOT, WHENCHANGEDWHENNOTCHANGED es true.Para obtener más información, vea Establecer las condiciones de un campo de elemento de trabajo.
Elemento |
Descripción |
---|---|
El campo primario debe tener un valor que proceda de la lista especificada de valores. |
|
Se permitirá el valor del campo primario que ya existe, aunque infrinja otras reglas.Este elemento no se aplica si se cambia el valor del campo primario. |
|
Los usuarios pueden cambiar el valor del campo por NULL, pero no pueden cambiarlo por ningún otro valor. |
|
El valor de un tercer campo se copia automáticamente en el campo primario.El tercer campo se especifica en el elemento COPY. |
|
Este elemento especifica el valor predeterminado del campo primario. |
|
El campo primario no debe contener ningún valor. |
|
Se inmoviliza el campo primario.Cuando se inmoviliza un campo, puede cambiar su valor por NULL, pero no puede cambiarlo por ningún otro valor. |
|
El valor del campo primario debe coincidir con el modelo especificado. |
|
El valor del campo primario no puede coincidir con el valor de un tercer campo.El tercer campo se especifica en el elemento NOTSAMEAS. |
|
El campo primario no puede contener ningún valor de la lista enumerada. |
|
El campo primario es de solo lectura. |
|
El campo primario no debe contener ningún valor que no sea NULL. |
|
El campo primario toma su valor del componente de servidor especificado.Los componentes de servidor válidos son clock, que es la hora a la que se actualiza el elemento de trabajo, y currentuser, que es la identidad del usuario que actualizó el elemento de trabajo. |
|
La lista enumerada contiene los valores sugeridos para el campo primario. |
|
Solo los usuarios especificados pueden modificar el campo primario. |
Volver al principio
Definir un campo obligatorio dependiente
Puede especificar que se requiera un campo solo cuando otro campo contenga un valor concreto.En el ejemplo siguiente, cuando un cliente informa de un error, debe especificar la gravedad que le atribuye.Si no es un cliente el que informa del error, no se requiere una gravedad de cliente.
<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="Blocking" />
<LISTITEM value="Major" />
<LISTITEM value="Minor" />
</ALLOWEDVALUES>
<WHEN field="MyCorp.CustomerReported" value="true">
<REQUIRED />
</WHEN>
</FIELD>
Definir una lista de selección condicional
En el ejemplo siguiente se muestra una lista de selección condicional en la que se limitan los valores permitidos para el campo Problem Type, basándose en si el valor de ProblemCharacteristic está establecido en Documentation.
<FIELD refname="MyCorp.ProblemType" name="Problem Type" type="String">
<WHEN field="MyCorp.ProblemCharacteristic" value="Documentation">
<ALLOWEDVALUES>
<LISTITEM value="Spelling Error" />
<LISTITEM value="Bad Format" />
<LISTITEM value="Missing Info" />
</ALLOWEDVALUES>
</WHEN>
</FIELD>
Definir un campo cuando el usuario cambia otro campo (WHENCHANGED)
En el siguiente ejemplo, cuando un usuario cambia el valor del campo MyCorp.State, el campo MyCorp.StateDate se establece en la fecha y hora que muestra el reloj del servidor.
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<WHENCHANGED field="MyCorp.State">
<COPY from="clock" />
</WHENCHANGED>
</FIELD>
En el siguiente ejemplo, cuando un usuario cambia el valor del campo MyCorp.State, el valor del campo MyCorp.StateDate se elimina.
<!-- Clear the status field whenever someone changes the state -->
<FIELD refname="MyCorp.Status" name="Status" type="String">
<WHENCHANGED field="MyCorp.State">
<COPY from="value" value="">
</WHENCHANGED>
</FIELD>
Definir un valor de campo basado en un usuario que no modifica un campo (WHENNOTCHANGED)
En el siguiente ejemplo, cuando un usuario no cambia el valor del campo MyCorp.State, el sistema hace que MyCorp.StateDate sea de solo lectura.
<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
<!-- Make the StateDate field read-only when the State field is not changed -->
<WHENNOTCHANGED field="MyCorp.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
Vea también
Conceptos
Referencias de todos los elementos FIELD de XML
Otros recursos
Establecer las condiciones de un campo de elemento de trabajo