Compartir a través de


Asignar reglas y valores basados en condiciones

Puede definir reglas que se ejecuten de forma condicional 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 en función del valor que se asigne a un campo específico o en función de si un usuario modifica un campo específico. Por ejemplo, puede crear una lista de selección dependiente para proporcionar un comportamiento personalizado o de seguridad detallado.

Las condiciones de campo son elementos adicionales que enumera en un elemento FIELD (Definición) o en el elemento FIELD (Flujo de trabajo). Para obtener más información sobre estos elementos, vea Referencia de elemento FIELD (Definición) y FIELD (Workflow) (Elemento).

El código siguiente es 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 de este elemento FIELD es aplicable siempre y cuando 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, consulta 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 tanto, si el nombre de referencia de campo contiene "YYY", las coincidencias incluirán tanto los valores "yyy" como "YYY".

En este tema

  • Estructura de sintaxis para los elementos condicionales

  • Definir un campo requerido dependiente

  • Definir una lista de selección condicional

  • Definir un campo si el usuario cambia otro campo (WHENCHANGED)

  • Definir un valor de campo si un usuario no modifica un campo (WHENNOTCHANGED)

Estructura de sintaxis para los elementos condicionales

En la tabla siguiente se describen las reglas condicionales que puede especificar como elementos secundarios del elemento FIELD (Definición) o del elemento FIELD (Flujo de trabajo). Estos elementos aceptan uno o varios de los atributos siguientes:

  • field: cadena que describe el campo. Debe contener 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 por la que 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 por la que se aplican una o varias reglas al campo actual. Las reglas se aplican al campo actual cuando el valor de otro campo cambia 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 por la que 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 tabla siguiente se describe cómo se aplica cada regla opcional basada en condiciones al campo principal cuando la regla condicional que especifique mediante un elemento WHEN, WHENNOT, WHENCHANGED o WHENNOTCHANGED sea verdadera. Para obtener más información, consulta Aplicar reglas a un campo de elemento de trabajo.

Elemento

Descripción

ALLOWEDVALUES

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

ALLOWEXISTINGVALUE

Se permitirá el valor del campo principal que ya exista, aunque infrinja otras reglas. Este elemento no se aplica si se cambia el valor del campo principal.

CANNOTLOSEVALUE

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

COPY

El valor de un tercer campo se copiará automáticamente en el campo principal. Especifique el tercer campo en el elemento COPY.

DEFAULT

Este elemento especifica el valor predeterminado del campo principal.

EMPTY

El campo principal no debe contener ningún valor.

FROZEN

El campo principal está inmovilizado. Cuando un campo está inmovilizado, puede cambiar el valor a NULL, pero no puede cambiarlo a ningún otro valor.

MATCH

El valor del campo principal debe coincidir con el patrón que especifique.

NOTSAMEAS

El valor del campo principal no puede coincidir con el valor de un tercer campo. Especifique el tercer campo en el elemento NOTSAMEAS.

PROHIBITEDVALUES

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

READONLY

El campo principal es de solo lectura.

REQUIRED

El campo principal debe contener un valor que no sea NULL.

SERVERDEFAULT

El campo principal toma su valor del componente del servidor especificado. Los componentes del servidor válidos son clock, que es la hora a la que se actualizó 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 principal.

VALIDUSER

Solo pueden modificar el campo principal los usuarios que especifique.

Volver al principio

Definir un campo requerido dependiente

Puede especificar que se requiere un campo solo cuando otro campo contenga un valor específico. En el ejemplo siguiente, cuando un cliente informe de un error, debe especificarse la gravedad del cliente. Si no fue un cliente quien informó del error, no se requiere la gravedad del 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

El ejemplo siguiente muestra una lista de selección condicional en la que se limitan los valores permitidos para el campo Tipo de problema, en función de si el valor del campo ProblemCharacteristic está establecido en Documentación.

<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 si el usuario cambia otro campo (WHENCHANGED)

En el ejemplo siguiente, si un usuario cambia el valor del campo MyCorp.State, el campo MyCorp.StateDate se establecerá en la fecha y hora que muestre 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 ejemplo siguiente, si un usuario cambia el valor del campo MyCorp.State, se borrará el valor del campo MyCorp.Status.

<!-- 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 si un usuario no modifica un campo (WHENNOTCHANGED)

En el ejemplo siguiente, si un usuario no cambia el valor del campo MyCorp.State, el campo MyCorp.StateDate será 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

Otros recursos

Aplicar reglas a un campo de elemento de trabajo

Aplicar reglas a un campo de elemento de trabajo