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

<WHEN field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</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

<WHENNOT field="fieldReferenceName" value="value">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</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

<WHENCHANGED field="fieldReferenceName" >
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>      
</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

<WHENNOTCHANGED field="fieldReferenceName">
    <ALLOWEDVALUES> . . . </ALLOWEDVALUES>
    <ALLOWEXISTINGVALUE> . . . <ALLOWEXISTINGVALUE>
    <CANNOTLOSEVALUE> . . . </CANNOTLOSEVALUE>
    <COPY> . . . </COPY>
    <DEFAULT> . . . </DEFAULT>
    <EMPTY> . . . </EMPTY>
    <FROZEN> . . . </FROZEN>
    <MATCH> . . . </MATCH>
    <NOTSAMEAS> . . . </NOTSAMEAS>
    <PROHIBITEDVALUES> . . . </PROHIBITEDVALUES>
    <READONLY> . . . </READONLY>
    <REQUIRED> . . . </REQUIRED>
    <SERVERDEFAULT> . . . </SERVERDEFAULT>        
    <SUGGESTEDVALUES> . . . </SUGGESTEDVALUES>
    <VALIDUSER> . . . </VALIDUSER>
</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, WHENCHANGED WHENNOTCHANGED es true. Para obtener más información, vea Establecer las condiciones en un campo Elemento de trabajo.

Elemento

Descripción

ALLOWEDVALUES

El campo primario debe tener un valor que proceda de la lista especificada de valores.

ALLOWEXISTINGVALUE

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.

CANNOTLOSEVALUE

Los usuarios pueden cambiar el valor del campo por NULL, pero no pueden cambiarlo por ningún otro valor.

COPY

El valor de un tercer campo se copia automáticamente en el campo primario. El tercer campo se especifica en el elemento COPY.

DEFAULT

Este elemento especifica el valor predeterminado del campo primario.

EMPTY

El campo primario no debe contener ningún valor.

FROZEN

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.

MATCH

El valor del campo primario debe coincidir con el modelo especificado.

NOTSAMEAS

El valor del campo primario no puede coincidir con el valor de un tercer campo. El tercer campo se especifica en el elemento NOTSAMEAS.

PROHIBITEDVALUES

El campo primario no puede contener ningún valor de la lista enumerada.

READONLY

El campo primario es de solo lectura.

REQUIRED

El campo primario no debe contener ningún valor que no sea NULL.

SERVERDEFAULT

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.

SUGGESTEDVALUES

La lista enumerada contiene los valores sugeridos para el campo primario.

VALIDUSER

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 en un campo Elemento de trabajo

Trabajar con reglas de campo

Historial de cambios

Fecha

Historial

Motivo

Enero de 2011

Se ha agregado la estructura de la sintaxis para que todos los elementos condicionales y el contenido reorganizado para resaltar los ejemplos.

Mejora de la información.