Condividi tramite


Assegnare valori e regole condizionali

È possibile definire regole da eseguire in base a determinate condizioni usando gli elementi WHEN, WHENNOT, WHENCHANGED e WHENNOTCHANGED. Queste regole vengono usate per definire quali elementi sono eseguiti quando la clausola definita è True. È possibile definire condizioni basate sul valore assegnato a un campo specifico o sul fatto che un utente modifichi o meno un campo specifico. Ad esempio, è possibile creare un elenco di selezione dipendente per fornire sicurezza dettagliata o un comportamento personalizzato.

Le condizioni di campo sono elementi aggiuntivi elencati all'interno di un elemento FIELD (definizione) o FIELD (flusso di lavoro). Per altre informazioni su questi elementi, vedere Riferimento all'elemento FIELD (Definizione) e Elemento FIELD (Flusso di lavoro).

Il seguente codice è un esempio semplice della clausola WHEN:

<FIELD . . . >

    <WHEN field="referenceName" value="yyy">

</FIELD>

Questa clausola indica che tutti gli elementi presenti all'interno dell'elemento FIELD sono applicabili se nel campo refname è presente il valore "yyy". Il campo deve essere rappresentato da un nome di riferimento di campo valido. Per altre informazioni, vedere Convenzioni di denominazione per oggetti di rilevamento di elementi di lavoro.

Nota

Per l'attributo del valore non è prevista la distinzione tra maiuscole e minuscole.Di conseguenza, se il nome di riferimento del campo contiene "YYY", le corrispondenze includono i valori "yyy" e "YYY".

Contenuto dell'argomento

  • Struttura della sintassi per gli elementi condizionali

  • Definizione di un campo obbligatorio dipendente

  • Definizione di un elenco di selezione condizionale

  • Definizione di un campo quando l'utente modifica un altro campo (WHENCHANGED)

  • Definizione di un valore di campo basato sulla mancata modifica di un campo da parte di un utente (WHENNOTCHANGED)

Struttura della sintassi per gli elementi condizionali

Nella tabella seguente vengono descritte le regole condizionali che è possibile specificare come elementi figlio dell'elemento FIELD (definizione) o dell'elemento FIELD (flusso di lavoro). Questi elementi accettano uno o più degli attributi seguenti:

  • field: stringa che descrive il campo. Deve contenere da 1 a 255 caratteri.

  • value: quando il campo specificato ha questo valore, le regole negli elementi WHEN e WHENNOT vengono applicate al campo corrente.

Elemento

Sintassi

Descrizione

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>

Specifica una o più regole da applicare al campo corrente quando un altro campo ha un valore specifico. L'elemento padre definisce il campo corrente.

Quando viene definito il valore del campo specificato, le regole in questo elemento vengono applicate al campo corrente.

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>

Specifica una condizione in base alla quale vengono applicate una o più regole al campo corrente. Le regole vengono applicate al campo corrente al variare del valore di un altro campo. L'elemento padre definisce il campo corrente.

Quando il campo specificato non contiene il valore specificato, le regole contenute in questo elemento vengono applicate al campo corrente.

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>

Specifica una condizione in base alla quale vengono applicate una o più regole al campo corrente. Le regole vengono applicate al campo corrente quando il valore di un altro campo è stato modificato nella revisione di un elemento di lavoro. L'elemento padre definisce il campo corrente.

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>

Specifica una condizione in base alla quale vengono applicate una o più regole al campo corrente. Le regole vengono applicate al campo corrente quando il valore di un altro campo non è stato modificato nella revisione di un elemento di lavoro. L'elemento padre definisce il campo corrente.

Nella tabella seguente viene descritto in che modo ciascuna regola facoltativa basata su una condizione viene applicata al campo padre quando la clausola condizionale specificata tramite un elemento WHEN, WHENNOT, WHENCHANGED o WHENNOTCHANGED è true. Per altre informazioni, vedere Applicare una regola a un campo elemento di lavoro.

Elemento

Descrizione

ALLOWEDVALUES

Il campo padre deve avere un valore che proviene dall'elenco di valori specificato.

ALLOWEXISTINGVALUE

Il valore del campo padre già esistente sarà consentito anche se viola altre regole. Questo elemento non è applicabile se il valore del campo padre viene modificato.

CANNOTLOSEVALUE

Gli utenti possono modificare il valore del campo padre in NULL, ma non possono impostarlo su nessun altro valore.

COPY

Il valore di un terzo campo viene copiato automaticamente nel campo padre. Specificare il terzo campo nell'elemento COPY.

DEFAULT

Questo elemento specifica il valore predefinito del campo padre.

EMPTY

Il campo padre non deve contenere un valore.

FROZEN

Il campo padre è bloccato. Quando un campo è bloccato, è possibile modificarne il valore in NULL, ma non è possibile impostarlo su nessun altro valore.

MATCH

Il valore del campo padre deve corrispondere al modello specificato.

NOTSAMEAS

Il valore del campo padre non deve corrispondere al valore di un terzo campo. Specificare il terzo campo nell'elemento NOTSAMEAS.

PROHIBITEDVALUES

Il campo padre non può contenere alcun valore dell'elenco enumerato.

READONLY

Il campo padre è di sola lettura.

REQUIRED

Il campo padre deve contenere un valore diverso da NULL.

SERVERDEFAULT

Il campo padre prende il valore dal componente server specificato. I componenti server validi sono clock, che indica l’orario in cui l’elemento di lavoro viene aggiornato, e currentuser, che indica l'identità dell'utente che ha aggiornato l'elemento di lavoro.

SUGGESTEDVALUES

L'elenco enumerato contiene i valori suggeriti per il campo padre.

VALIDUSER

Solo gli utenti specificati possono modificare il campo padre.

Torna all'inizio

Definizione di un campo obbligatorio dipendente

È possibile specificare che un campo è obbligatorio solo quando un altro campo contiene un valore specifico. Nell'esempio seguente, quando un cliente riferisce la presenza di un bug, è necessario specificare un valore di gravità per il cliente. Se il bug non è stato segnalato da un cliente, la gravità non è necessaria.

<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>

Definizione di un elenco di selezione condizionale

L'esempio seguente dimostra un elenco di selezione condizionale in cui i valori consentiti per il campo Problem Type sono limitati e dipendono dall'impostazione o meno del campo ProblemCharacteristic su 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>

Definizione di un campo quando l'utente modifica un altro campo (WHENCHANGED)

Nell'esempio seguente, quando un utente modifica il valore del campo MyCorp.State, il campo MyCorp.StateDate viene impostato sulla data e ora corrente come mostrato dal clock del server.

<FIELD refname="MyCorp.StateDate" name="Date Of Last State Change" type="DateTime">
    <WHENCHANGED field="MyCorp.State">
        <COPY from="clock" />
    </WHENCHANGED>
</FIELD>

Nell'esempio seguente, quando un utente modifica il valore del campo MyCorp.State, il valore del campo MyCorp.Status viene cancellato.

<!-- 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>

Definizione di un valore di campo basato sulla mancata modifica di un campo da parte di un utente (WHENNOTCHANGED)

Nell'esempio seguente, quando un utente non modifica il valore del campo MyCorp.State, il campo MyCorp.StateDate diventa di sola lettura.

<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>

Vedere anche

Altre risorse

Applicare una regola a un campo elemento di lavoro

Applicare una regola a un campo elemento di lavoro