Utilizzare i messaggi (classi di richiesta e di risposta) con il metodo Execute

 

Data di pubblicazione: gennaio 2017

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

È possibile utilizzare i metodi nell'oggetto IOrganizationService per eseguire operazioni comuni. Oltre ai metodi comuni, puoi utilizzare il metodo IOrganizationService.Execute per eseguire i messaggi non esposti come metodi. Il metodo Execute accetta una classe di richiesta di messaggio come parametro e restituisce una classe di risposta di messaggio. I nomi delle classi di richiesta di messaggio terminano con "Request" e i nomi delle classi di risposta di messaggio terminano con "Response". Per ulteriori informazioni su tutti i messaggi supportati dal metodo Execute, vedere Messaggi xRM nel servizio dell'organizzazione, Messaggi Dynamics 365 nel servizio dell'organizzazione. I servizi Web IDiscoveryService e IDeploymentService utilizzano un modello di richiesta e di risposta di esecuzione simile.

Esecuzione flusso di messaggi

OrganizationRequest è la classe base per tutte le richieste di messaggi. È possibile utilizzare questa classe base per eseguire eventuali messaggi, specificando il nome del messaggio e la raccolta di parametri per la richiesta. Tuttavia, quando si utilizza una classe derivata, come ad esempio AssociateRequest, la raccolta di parametri viene popolata quando si utilizzano le proprietà nella classe di richiesta.

Il metodo Execute restituisce la classe di risposta corrispondente per la richiesta, una classe derivata della classe OrganizationResponse. Come con la classe di richiesta, la classe derivata contiene una proprietà di ogni valore nella raccolta di parametri dei risultati. Tutti i messaggi hanno una risposta, ma molti non hanno proprietà nella risposta. .

I messaggi sono predefiniti nei metadati e sono archiviati come record nelle entità dei messaggi SDK. Per ogni messaggio è possibile determinare se funziona mentre si è connessi al server o da Microsoft Dynamics 365 per Microsoft Office Outlook con accesso offline. Queste informazioni sono disponibili nell'attributo SdkMessage.Availability. Per ulteriori informazioni, vedere Entità di registrazione plug-in.

In questo argomento

Passare parametri facoltativi nei messaggi

Eseguire i messaggi in un'unica transazione di database

Eseguire messaggi in background (in modalità asincrona)

Passare parametri facoltativi nei messaggi

È possibile passare dei parametri facoltativi a qualsiasi richiesta di messaggio aggiungendo un valore alla proprietà Parameters. Alcuni parametri non sono proprietà esposte nelle classi di richiesta. Per impostare questi parametri, è necessario impostarli nella raccolta di Parameters nella classe Request.

Nella tabella che segue sono elencati questi parametri.

Parameter

Descrizione

Messaggi

SolutionUniqueName

Una String che specifica il nome univoco della soluzione a cui si applica l'operazione. Per ulteriori informazioni, vedere Traccia delle dipendenze dei componenti di soluzione.

AddPrivilegesRoleRequest
CreateRequest
DeleteRequest
MakeAvailableToOrganizationTemplateRequest
UpdateRequest

CalculateMatchCodeSynchronously

La specifica di questo parametro non è più richiesta. I codici di corrispondenza utilizzati per rilevare i duplicati vengono calcolati in modo sincrono indipendentemente dal valore passato in questo parametro. Per ulteriori informazioni, vedere Esegui rilevamento duplicati.

CreateRequest
UpdateRequest

SuppressDuplicateDetection

Un valore Boolean utilizzato per disabilitare il rilevamento duplicati in un'operazione di creazione o di aggiornamento. Per ulteriori informazioni, vedere Esegui rilevamento duplicati.

CreateRequest
UpdateRequest

Nell'esempio riportato di seguito viene mostrato come passare un parametro facoltativo:

Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);

Eseguire i messaggi in un'unica transazione di database

È requisito comune nelle applicazioni aziendali coordinare le modifiche di più record nel sistema in modo che le modifiche apportate ai dati vengano tutte implementate o non implementate. In termini di database, questa azione è definita un'esecuzione di più operazioni in un'unica transazione con la possibilità di eseguire il rollback di tutte le modifiche apportate ai dati nel caso in cui un'operazione non riesce.

Puoi eseguire due o più richieste di servizi dell'organizzazione in un'unica transazione di database tramite la richiesta del messaggio ExecuteTransactionRequest. Per utilizzare questo messaggio, popola la raccolta Requests con due o più richieste dell'organizzazione che devono essere eseguite nella transazione. Imposta ReturnResponsestrue se desideri ottenere una raccolta di risposte, una per ogni richiesta di messaggio eseguita, nella raccolta Responses. Le richieste di messaggio nella raccolta Requests vengono eseguite nell'ordine della raccolta, in cui l'elemento in corrispondenza dell'indice 0 viene eseguito per primo. Lo stesso ordine viene mantenuto nella raccolta Responses.

Se una delle richieste non riesce e la transazione è sottoposta al rollback, le modifiche apportate ai dati durante l'esecuzione della transazione vengono annullate. Inoltre, ExecuteTransactionFault viene restituito per identificare l'indice nella raccolta del messaggio di richiesta che ha causato l'errore.

ExecuteMultipleRequest può contenere una o più istanze di ExecuteTransactionRequest. Un'istanza di ExecuteTransactionRequest non può contenere ExecuteMultipleRequest o ExecuteTransactionRequest. Per ulteriori informazioni su ExecuteMultipleRequest, vedi Utilizzare ExecuteMultiple migliorare le prestazioni per il carico dei dati in blocco.

Per un codice di esempio che dimostra ExecuteTransactionRequest vedere Sample: Execute multiple requests in transaction.

Eseguire messaggi in background (in modalità asincrona)

Oltre all'esecuzione immediata delle richieste di messaggio, come nel caso della chiamata di Execute e del passaggio di una richiesta di messaggio, puoi anche eseguire una richiesta di messaggio in background (in modalità asincrona). Le prestazioni del sistema possono così migliorare posticipando l'esecuzione del messaggio a un momento successivo quando il carico del server è minore. Gli utenti interattivi non devono attendere l'esecuzione del messaggio di destinazione prima di poter continuare. Questa situazione è utile soprattutto quando l'esecuzione dei messaggi di elaborazione richiede alcuni minuti.

Nota

Attualmente, solo il messaggio ImportSolutionRequest può essere utilizzato con il messaggio ExecuteAsync.

Utilizzare il messaggio ExecuteAsyncRequest per eseguire un messaggio asincrono. Configurare la richiesta e passare l'istanza di richiesta come argomento a Execute.ExecuteAsyncResponse viene restituito con l'ID del processo asincrono. È possibile (facoltativamente) eseguire una query sul processo che utilizza l'ID per individuarne lo stato corrente.

È inoltre possibile eseguire più messaggi alla volta utilizzando il messaggio ExecuteMultipleRequest. A tale scopo, aggiungere una o più richieste di messaggio ExecuteAsync a una richiesta di messaggio ExecuteMultiple. A causa delle limitazioni rivolte a migliorare le prestazioni complessive del sistema, è possibile eseguire solo un messaggio alla volta in modalità asincrona per ogni organizzazione. Non è possibile eseguire una richiesta di messaggio ExecuteMultiple da una richiesta di messaggio ExecuteAsync. Per ulteriori informazioni sulla richiesta di messaggio ExecuteMultiple, vedere Utilizzare ExecuteMultiple migliorare le prestazioni per il carico dei dati in blocco.

Vedere anche

Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
Usa il Servizio organizzazione per leggere e scrivere dati o metadati.
Utilizzare ExecuteMultiple migliorare le prestazioni per il carico dei dati in blocco
Utilizzare i messaggi (classi di richiesta e di risposta) con il metodo ExecuteCrmOrganizationRequest
Messaggi del servizio di individuazione
Messaggi xRM nel servizio dell'organizzazione
Messaggi Dynamics 365 nel servizio dell'organizzazione
ExecuteAsync message privileges

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright