Condividi tramite


Definire le transizioni personalizzate del modello di stato

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

È possibile specificare le transizioni di stato personalizzate per l'entità Incident (Caso) o per le entità personalizzate. La proprietà EntityMetadata.IsStateModelAware è true per le entità che supportano le transizioni del modello di stato.

Le transizioni di stato personalizzate sono un livello facoltativo di filtro per definire quali transizioni di stato sono valide per un record in uno stato specificato. La definizione di un elenco limitato di opzioni può semplificare agli utenti la scelta dello stato corretto per un record, particolarmente quando si dispone di un elevato numero di combinazioni per stati validi e valori di stato.

In questo argomento

Qual è il modello di stato?

Rilevare transizioni di stato valide

Qual è il modello di stato?

Le entità che supportano il concetto di stato hanno una coppia di attributi che acquisiscono questi dati, come illustrato nella tabella.

Nome logico

Nome visualizzato

Descrizione

statecode

Stato

Rappresenta lo stato del record. Per entità personalizzate, cioè Attiva o Inattiva. L'entità Incident (case) utilizza Attivo, Risolto e Annullato. Non è possibile aggiungere altre opzioni di stato, ma è possibile modificare le etichette di opzioni.

statuscode

Motivo stato

Rappresenta uno stato che è collegato a uno stato specifico. Ogni stato deve disporre di almeno uno stato possibile. È possibile aggiungere ulteriori opzioni di stato e modificare le etichette di opzioni esistenti.

I metadati per gli attributi definiscono quali valori di stato sono validi per uno specifico stato. Ad esempio, per l'entità Incident (Caso), lo stato predefinito e le opzioni di stato sono riportati nella tabella seguente.

Stato

Stato

Label: Attivo

Value: 0

Label: In corso

Value: 1

State: 0

Label: Bloccato

Value: 2

State: 0

Label: In attesa di dettagli

Value: 3

State: 0

Etichetta: Ricerche in corso

Value: 4

State: 0

Label: Risolto

Value: 1

Label: Problema risolto

Value: 5

State: 1

Etichetta: Informazioni fornite

Value: 1000

State: 1

Etichetta: Annullato

Value: 2

Label: Annullato

Value: 6

State: 2

Label: Unito

Value: 2000

State: 2

Questi dati vengono archiviati nella classe StatusOptionMetadata, che rappresenta le opzioni nella classe StatusAttributeMetadata.

Per visualizzare i metadati di entità per l'organizzazione, installa la soluzione Browser di metadati descritta in Visualizzazione dei metadati per l'organizzazione. Puoi inoltre visualizzare i metadati per un'organizzazione non personalizzata nel file Excel EntityMetadata.xlsx incluso nella cartella di livello superiore di Download degli SDK.

Rilevare transizioni di stato valide

È possibile modificare l'attributo statuscode per definire quali altre opzioni di stato rappresentino transizioni valide dallo stato corrente. Per istruzioni, vedere l'argomento della Guida alla personalizzazione: Definire le transizioni di motivo stato

Quando transizioni di stato personalizzate vengono applicate a un'entità, la proprietà EntityMetadata.EnforceStateTransitions sarà true. Inoltre, ogni StatusOptionMetadata all'interno della raccolta StatusAttributeMetadata.Options disporrà di una nuova proprietà TransitionData. Questa proprietà conterrà un valore Stringa che rappresenta un documento XML. Questo documento contiene la definizione delle transizioni consentite. Ad esempio, l'opzione dell'attributo predefinita Incident (Caso) StatusCode può avere il seguente valore TransitionData.

<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">
<allowedtransition sourcestatusid="1" tostatusid="6" />
<allowedtransition sourcestatusid="1" tostatusid="1000" /> 
<allowedtransition sourcestatusid="1" tostatusid="2000" />
<allowedtransition sourcestatusid="1" tostatusid="5" />
</allowedtransitions>

Nota

Quando tali dati vengono recuperati nel codice non gestito dal servizio Web, ad esempio quando si usa JavaScript, utilizzeranno una sequenza di escape e appariranno come nell'esempio seguente.

&lt;allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices"&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="6" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="1000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="2000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="5" /&gt;
&lt;/allowedtransitions&gt;

Quando tali dati sono presenti e la proprietà dell'Entità EnforceStateTransitions è true, ogni istanza degli incidenti può solo essere modificata con uno dei valori statuscode consentiti. È possibile utilizzare IOrganizationService.Update per impostare statuscodeOptionSetValue su qualsiasi dei valori consentiti che non rappresentano una modifica nello stato. Per modificare lo stato, utilizzare SetStateRequest impostando i valori della proprietà consentiti State e Status o CloseIncidentRequest impostando la proprietà Status su uno dei valori consentiti per il valore corrente statuscode. Il tentativo di impostare un valore non valido genera un errore.

Vedere anche

Esempio: recuperare le transizioni di stato valide
Stato e motivo stato del record
Recuperare e rilevare le modifiche apportate ai metadati
Definisci le transizioni di motivi stato

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright