Framework degli eventi
Microsoft Dataverse espone eventi per indicare il punto in cui è attualmente in esecuzione il processo nella pipeline. È possibile gestire questi eventi, ad esempio, per convalidare dati, impedire il completamento delle transazioni o automatizzare qualsiasi logica di business che non può essere ottenuta con mezzi dichiarativi.
È possibile sottoscrivere questi eventi registrando assembly .NET (denominati plug-in) per eseguire la logica personalizzata ogni volta che si verifica l'evento specificato. La registrazione si esegue usando uno strumento denominato Plug-in Registration Tool. Per altre informazioni su Plugin Registration Tool, fare riferimento all'esercitazione Registrare un plug-in.
A livello generale, la gestione degli eventi comporta tre operazioni. Innanzitutto, è necessario sottoscrivere un messaggio specifico che rappresenta il tipo di operazione (o evento) che si sta attualmente verificando (o sta per verificarsi), ad esempio creazione, recupero, aggiornamento e così via. È quindi necessario indicare anche in che punto della pipeline dell'evento si vuole eseguire la propria logica (ovvero prima o dopo l'operazione). È possibile gestire eventi anche prima della convalida, un pratico metodo per eseguire logica di convalida avanzata che non è possibile ottenere tramite regole di business o flussi di lavoro. Infine, è necessario indicare la modalità di esecuzione desiderata per la logica (sincrona o asincrona).
Di seguito vengono approfondite le tre aree.
Messaggi di evento
Dataverse espone molti messaggi che vengono pubblicati quando si verificano varie operazioni sui dati. Per altre informazioni su questi messaggi, vedere Usare i messaggi con il servizio Organization.
Le operazioni sui dati di base esposte da Dataverse sono le seguenti:
Create
Retrieve
RetrieveMultiple
Update
Delete
Associate
Disassociate
Inoltre, vengono esposti diversi messaggi in modo contestuale, a seconda del tipo di tabella gestito. Ad esempio, se la tabella include una colonna rollup, è possibile implementare un gestore eventi nel messaggio di evento CalculateRollupField.
In genere, è possibile trovare un inventario di questi messaggi personalizzati resi disponibili da Dataverse eseguendo una ricerca nello spazio dei nomi Microsoft.Sdk.Messages di tutte le classi il cui nome termina con \Request. Un altro modo per visualizzare i messaggi disponibili per un determinato tipo di tabella consiste nell'esplorare le combinazioni tabella-messaggio tramite Plug-in Registration Tool.
Inoltre, è possibile creare ed esporre messaggi personalizzati tramite la creazione di azioni personalizzate. Per altre informazioni sulle azioni, vedere Creazione di messaggi personalizzati.
Pipeline di eventi
Oltre alla sottoscrizione di messaggi specifici o di tipi di evento, Dataverse espone anche un modo per specificare il punto nella pipeline in cui l'evento esegue la logica personalizzata. Per gli sviluppatori ASP.NET, questo comportamento è simile al modo in cui si lavora su cicli di vita delle pagine all'interno di un'applicazione Web. Questo approccio è un modello di sviluppo comune per le architetture di pubblicazione-sottoscrizione e risulterà familiare agli sviluppatori con esperienza in altri framework degli eventi.
Pre-validation
L'evento Pre-validation si verifica per primo nella pipeline, prima che vengano eseguiti controlli di sicurezza. Ha lo scopo di garantire che l'utente che effettua la transazione corrente abbia le autorizzazioni corrette necessarie per eseguire l'operazione prevista.
Gli sviluppatori possono usare questo evento per eseguire la logica di convalida e annullare l'operazione prima che si verifichi la transazione. Ad esempio, se l'evento è configurato per essere eseguito ogni volta che viene aggiornata una tabella, è possibile annullare l'operazione prima dell'aggiornamento generando un metodo InvalidPluginExecutionException all'interno della logica di esecuzione del plug-in. Per altre informazioni sul contesto di esecuzione, vedere Informazioni sul contesto di esecuzione.
Pre-operation
Usare questo evento se si vuole modificare qualsiasi valore della tabella prima che questa venga salvata.
Post-operation
Usare questo evento per modificare qualsiasi proprietà del messaggio prima che il richiedente ottenga la risposta. Evitare di applicare aggiornamenti alla tabella corrispondente a questo punto, in quanto questa operazione attiverà un altro evento di aggiornamento.
Modalità di esecuzione (sincrona e asincrona)
È possibile configurare i plug-in per l'esecuzione sincrona o asincrona, a seconda del tipo di operazione della pipeline gestito.
Sincrona
I plug-in registrati in questa modalità verranno eseguiti non appena l'elaborazione dell'evento raggiunge la fase della pipeline di esecuzione e l'intera operazione non continuerà finché la logica non avrà completato l'esecuzione. Se più plug-in sono registrati per l'esecuzione sulla stessa fase della pipeline, l'attributo dell'ordine di esecuzione (specificato tramite Plug-in Registration Tool) determinerà quale eseguire per primo.
Asincrona
I plug-in registrati in questa modalità vengono inviati come processo di sistema al servizio asincrono, che ne esegue la logica al termine dell'operazione specificata. Per altre informazioni sul funzionamento dei processi di sistema, vedere Servizio asincrono.
Nota
È possibile registrare solo plug-in asincroni per la fase PostOperation della pipeline di eventi.