In questo blog parleremo di tutti i tipi di metadati custom e di come possiamo sfruttarli per creare applicazioni dinamiche sulla piattaforma Salesforce.

Iniziamo con le basi! Se avete familiarità con la piattaforma Salesforce, sapete che i dati in Salesforce sono memorizzati in oggetti. Un oggetto in Salesforce non è altro che una tabella di database con colonne e righe. Le colonne sono i campi e le righe sono i record.

Cosa sono i tipi di Metadati Custom ?

Il termine “metadati” non è altro che dati su dati. In parole povere, quando si crea un record in Salesforce, si creano sia dati che metadati. I dati che state cercando di inserire vengono catturati o memorizzati nei campi, che non sono altro che colonne del vostro oggetto.

I campi degli oggetti sono metadati e i dati all’interno di questi campi (o metadati) sono dati. Questo è il motivo per cui spesso si sente definire i metadati come dati sui dati. Spero di essere riuscito a rendervi le cose più semplici!

I tipi di metadati personalizzati in Salesforce sono simili agli oggetti personalizzati. Hanno un suffisso “__mdt” invece di “__c” nello spazio dei nomi dell’API. Ad esempio, se si crea un tipo di metadati personalizzati con il nome “Apex Hours”, il nome API del tipo di metadati apparirà come “Apex_Hours__mdt”.

Questo permette di creare applicazioni dinamiche utilizzando Apex sulla piattaforma Salesforce e di avere un maggiore controllo sull’esecuzione del codice.

Metadati Custom vs Objects Custom

Forse vi state già ponendo questa domanda: “Abbiamo già gli oggetti personalizzati, quindi che bisogno c’è di usare questo?”. Andiamo subito al sodo.

  1. I tipi di metadati custom memorizzano i record in una cache di memoria che consente di recuperare più rapidamente i dati quando si esegue una query. È possibile osservare un’enorme differenza di tempo di esecuzione quando si interrogano/recuperano i record di metadati rispetto ai record di oggetti personalizzati.
  1. Per mantenere le prestazioni della vostra Org di Salesforce, potete considerarne l’uso. Inoltre, offre la flessibilità di avere un maggiore controllo sull’esecuzione basata sulla logica in Apex.
  2. Questo non conta per i governor limits.
  1. Sono distribuibili da un ambiente (Org) a un altro ambiente. È possibile racchiudere i metadati insieme ai dati o distribuirli facilmente da un’organizzazione a un’altra.
  1. Gli ISV contano molto sul suo utilizzo per sviluppare applicazioni AppExchange robuste e scalabili.
  1. Gli objects custom, invece, non sono basati sulla mem-cache. L’esecuzione della query richiede più tempo se gli oggetti contengono dati enormi e se la query non è selettiva. Le query sui record degli oggetti sono conteggiate nei limiti del governatore SOQL per transazione.
  1. I tipi di metadati custom protetti possono essere creati per memorizzare informazioni sensibili come Client Secret, Client ID, Tokens e molto altro. (protected_x property che descrive se il record di metadati custom è un componente protetto).

Tenendo conto di questi fattori, si può considerare di sviluppare la propria applicazione con i tipi di metadati personalizzati.

Come utilizzare i metadati custom in Apex

I metodi dei tipi di metadati custom sono metodi di tipo istanza e vengono richiamati da un’istanza specifica di un tipo di metadati personalizzati.

In Apex sono disponibili i seguenti metodi per recuperarli:

  1. getAll() – Restituisce una mappa contenente i record dei metadati custom per lo specifico tipo di metadati custom. Le chiavi della mappa sono i record DeveloperNames e i valori della mappa sono i record sObjects.
  1. getInstance(recordId) – Restituisce un singolo record di tipo metadata custom sObject per un ID record specificato.
  1. getInstance(developerName) – Restituisce un singolo record di tipo di metadati custom sObject per un campo developerName specificato dell’oggetto tipo di metadati custom.

Andiamo avanti e creiamo un tipo di metadati custom nella nostra org e facciamo riferimento allo stesso in Apex.

Creare tipi di Metadati Custom

Effettuare l’accesso alla propria Org, andare su setup → Nella ricerca rapida cercare “Custom Metadata Types” (Tipi di metadati personalizzati).

Fare click su “New Custom Metadata Type”.

Compilare i dettagli (nome dell’etichetta, descrizione, ecc.) e poi fare clic su “Save”. Congratulazioni, avete appena creato il vostro primo record di tipo di metadati custom.

Ora andiamo avanti e creiamo un record per il nuovo tipo di metadati custom. Fare clic sul pulsante “Manage” per creare record per il tipo di metadati.

Quindi, abbiamo creato con successo un record, come si vede sopra. Ora proviamo a recuperare i valori del record con Apex.

Utilizziamo il metodo getAll() per recuperare i valori dei record.

List<Apex_Hours__mdt> mcs = Apex_Hours__mdt.getAll().values();
system.debug('mcs---'+mcs);

Se si desidera recuperare un record specifico, è possibile utilizzare il metodo getInstance(). Il metodo accetta i recordID come parametro.

Apex_Hours__mdt mc = Apex_Hours__mdt.getInstance('Insert recordID here);

Creare alcuni record e giocare nella propria Developer Org.

Vediamo anche quali sono le differenze tra un tipo di metadati custom e un’impostazione (setting) custom.

Differenza tra i tipi di Metadati Custom e l’impostazione (settings) Custom

Anche le impostazioni custom sono simili agli object custom. È possibile creare un’impostazione custom basata su un elenco o su una gerarchia. I metadati custom non supportano dati di tipo gerarchico basati sul profilo utente o su un utente specifico.

  1. Le impostazioni custom non utilizzano la cache dell’applicazione e non sono efficienti rispetto ai tipi di metadati custom.
  2. Le impostazioni custom non possono essere distribuite tramite pacchetti o API di metadati/insiemi di modifiche. Mentre i tipi di metadati custom possono essere facilmente pacchettizzati e distribuiti. I tipi di metadati possono essere distribuiti anche tramite Change Sets/Metadata API.
  3. L’interrogazione dei record delle impostazioni custom conta contro il governor limit SOQL della piattaforma e può avere un impatto sulle prestazioni se i dati sono troppo grandi.
  4. Le impostazioni custom devono essere create manualmente perché non sono distribuibili.
  5. Le impostazioni custom non supportano i campi di relazione. È possibile creare lookup tra oggetti di metadati custom.
  6. I dati delle impostazioni custom non sono visibili nelle classi di test, mentre i tipi di metadati custom sono visibili nelle classi di test senza l’annotazione “SeeAllData”.

Video di tipi di Metadati Custom

Sintesi

Spero che in questo post abbiate imparato qualcosa, visto che abbiamo parlato dei tipi di metadati personalizzati e della differenza tra tipi di metadati personalizzati e impostazioni personalizzate.

Seguiranno altri interessanti contenuti !

 

 

 

Fonte: tradotto da ApexHours

Share:

administrator