Le Virtual Entities di Microsoft Dynamics 365
Introduzione
Cosa sono le Virtual Entities ed a cosa servono?
Le Entità Virtuali, d'ora in poi VE, sono state introdotte con l'ultima versione di CRM, la versione 9.0 e nascono dalla necessità, in casi casi, di dati presenti su altri sistemi non collegati o collegabili all'ambiente Dynamics 365. Con l'avvento di queste nuove entità, che racconto di dominio, non è più necessario creare ad hoc soluzioni personalizzate, spesso dei connettori o dei plug-in.
Altro vantaggio, oltre, è che questi ultimi sono disponibili a tutti i clienti utilizzabili direttamente da Dynamics 365 inclusi quelli personalizzati tramite servizi web.
Il limite di queste entità è che i dati collegati non sono aggiornati in tempo reale con la sorgente configurata. Infatti, vista la possibile enorme mole di dati, la sincronizzazione tra Dynamics 365 e la sorgente esterna avviene di norma una volta al giorno.
Oltre all'accesso diretto ai record di una fonte esterna, sfruttando le regole di integrazione, viene evitata la duplicazione dei dati.
Per iniziare ad implementare il meccanismo di VE
Creazione di un Data Source
- Accedere ad un CRM Versione 9.0
- andare sotto Impostazioni e selezionare Amministrazione
- selezionare Origine dati entità virtuale.
All'interno di questa pagina è possibile creare un record di tipo Data Source che indica la sorgente da cui attingere i dati.
Naturalmente, i dati forniti da Dynamics CRM sono di tipo Odata versione 4.0 e Azure Cosmos DB, ma nulla vieta di crearsi un provider personalizzato.
I campi da compilare sono i seguenti:
- Nome (obbligatorio) : Nome del Data Source.
- URL (obbligatorio) : URL del servizio Web che espone i Dati.
- Timeout : Tempo in cui il CRM partecipa alla risposta dal servizio Web con i dati (consigliato 60 secondi).
- Modalità impaginazione (obbligatorio) : seleziona l'opzione per eseguire il paging lato client o lato server per controllare come impaginati i risultati di query. Il valore predefinito è il client di paging lato. Con il server paging lato, il server controlla come vengono impaginati i dettagli del parametro $ skiptoken, che viene aggiunto alla stringa di query. È consigliato usare la paginazione lato client.
- Conteggio inline di restituzione : Restituisce i record del numero totale nel set di risultati. Questa è una performance per una griglia. Utilizzare un valore false se l'endpoint OData non supporta il parametro OData $ inclinecount. Il valore predefinito è false.
- Parametri richiesta : Se lo si desidera, è possibile aggiungere parametri di query per utilizzare il servizio Web gratuito. Stringa di query per passare alternativamente dal parametro stringa di query e intestazione al valore. È possibile aggiungere fino a 10 stringhe di intestazione o query.
Creazione di un'Entità Virtuale
Aprire una propria soluzione o quella di default e creare una nuova entità. Nella schermata di creazione selezionare "Virtual Entity", in questo modo creiamo un'Entità Virtuale e non una normale Entità Custom.
Rispetto alla creazione di una norma personalizzata si deve specificare le seguenti informazioni:
- Nome esterno : Nome della tabella esterna di origine. Accedendo ai metadati del tuo Web Service (seguendo lo standard Odata è sufficiente aggiungere $ metadata alla URL) dovrai recuperare l'informazione. Il nome esterno unito all'EntityType.
- Nome collezione esterna : Nome plurale della tabella nell'origine dati esterni a cui l'entità è mappata. Accedendo ai metadati del tuo Web Service potrai recuperare l'informazione. L'External Name corrisponde all'EntitySet.
XML di esempio accedendo ai metadati da cui recuperare le informazioni:
<EntityContainer Name = "Container">
<EntitySet Name = "Customer" EntityType = "React.VirtualEntities.Models.Customer">
</ EntityContainer>
Selezionare il Data Source che hai creato ed infine salva l'entità virtuale.
Creazione dei campi di un'Entità Virtuale
Per il corretto utilizzo delle risorse virtuali, è necessario creare e mappare i campi con le sorgenti dati di origine.
Oltre al nome della colonna, anche il tipo deve essere lo stesso.
Come primo passo, è identificato il campo primario nella sorgente dati e mappato. Racconto campo nella fonte dati è stato di tipo GUID.
Per la creazione di un campo virtuale e saranno disponibili le seguenti informazioni:
- Nome visualizzato : Nome del campo visualizza utente.
- Nome esterno : Nome del campo esposto dalla sorgente dati. Accedendo ai metadati del tuo Web Service potrai recuperare l'informazione. Il nome è uguale al nome, mentre il Type al tipo.
XML di esempio:
<Key> <PropertyRef Name = "ID" /> </ Key> <Property Name = "ID" Type = "Edm.Guid" Nullable = "false" /> <Property Name = "Email" Type = "Edm.String "/>
Creazione delle relazioni (N: N, N: 1,1: N)
- Relazione N: N :
- Entità Virtuale - Entità Virtuale in vigore non supportato!
- Entità Virtuale - Entità CRM Supportata. È sufficiente creare la normale relazione N: Il CRM si occupa di gestire tutto.
- Relazione N: 1 o 1: N :
- Entità Virtuale N - Entità Virtuale 1 (o viceversa). In questa tipologia di relazione, è sufficiente indicare il campo chiave (la Navigation Property) sulla tabella relazionata. Accedendo ai metadati del tuo sito Web recuperare l'informazione.
XML di esempio:
<NavigationProperty Name = "Customer" Type = "React.VirtualEntities.Models.Customer" />
- Entità Virtuale N - Entità CRM 1. In questa tipologia di relazione, è sufficiente indicare il campo chiave (la Proprietà di navigazione) sulla tabella relazionata che deve rappresentare il GUID dei record dell'entità relazionata sul CRM. Accedendo ai metadati del tuo Web Service potrai recuperare l'informazione.
XML di esempio:
<Property Name = "AccountCRM" Type = "Edm.Guid" />
- Entità CRM N - Entità Virtuale 1. Per questo tipo di relazione è sufficiente creare la relazione standard senza altre misure.
Esempi di utilizzo
Dopo aver verificato il dato sorgente e creato le Entità Virtuali, il loro utilizzo è identico a quello delle normali entità anche se sono in sola lettura.
È possibile ad esempio aggiungere, sull'eventuali griglie presenti nella pagina, record da relazionare.
Su un'entità CRM è possibile compilare campi di tipo look che puntano ad entità virtuali, ma non è possibile aggiungere record a griglie che fanno riferimento ad entità virtuali.
Limiti
Vi sono diversi limiti per quanto riguarda le VE.
Uno strumento per l'installazione, l'aggiornamento, l'eliminazione.
È possibile invece effettuare delle query sul codice come se fossero normali entità.
programma di classe pubblica
{
CrmServiceClient _client statico privato ;
public static void Main ( string [] args)
{
provare
{
utilizzando (_client = new CrmServiceClient (myConnectionString))
{
utilizzando (CrmServiceContext dc = new CrmServiceContext (_client.OrganizationServiceProxy))
{
var a = dc.new_customerSet.FirstOrDefault ();
var b = dc.new_orderSet.FirstOrDefault ();
}
}
}
catch (FaultException <OrganizationServiceFault> ex)
{
string message = ex.Message;
lanciare ;
}
}
}
Per ulteriori approfondimenti al riguardo: inizia con le entità virtuali
Link utili
Spesso ci si ritroverà nella situazione di dover creare un servizio Web per poter esporre i dati tramite il protocollo Odata V4.
Di seguito una guida Microsoft per creare una Web Api che espone i dati tramite Odata V4.
Esempio di creazione di un servizio Web per esporre dei dati tramite il protocollo ODATA V4
Altri link utili:
Configurazione, requisiti e best practice del fornitore di dati OData v4
Procedura dettagliata dell'entità virtuale che utilizza il provider di dati OData v4