In questo articolo parleremo di tutti i tipi di metadati personalizzati e di come possiamo sfruttarli per costruire 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 personalizzati?

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 personalizzati vs Oggetti personalizzati

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 personalizzati 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 impacchettare 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 oggetti personalizzati, 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 personalizzati protetti possono essere creati per memorizzare informazioni sensibili come il segreto del cliente, l’ID del cliente, i token e molto altro. (proprietà protected_x che descrive se il record di metadati personalizzati è 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 personalizzati in Apex

I metodi dei tipi di metadati personalizzati 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 personalizzati per lo specifico tipo di metadati personalizzati. 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 personalizzato sObject per un ID record specificato.
  1. getInstance(developerName) – Restituisce un singolo record di tipo di metadati personalizzati sObject per un campo developerName specificato dell’oggetto tipo di metadati personalizzati.

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

Creare i tipi di metadati personalizzati

Accedere alla propria Org, andare su setup → Nella ricerca rapida cercare “Custom Metadata Types”.

Fare click su “New Custom Metadata Type”.

Create Custom Metadata Types

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

Ora andiamo avanti e creiamo un record per il nuovo tipo di metadati personalizzati. 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.

Sfruttiamo 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);

Vediamo anche quali sono le differenze tra un tipo di metadati personalizzato e un’impostazione personalizzata..

Differenze tra i tipi di metadati personalizzati e le impostazioni personalizzate

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

  1. Le impostazioni personalizzate non utilizzano la cache dell’applicazione e non sono efficienti rispetto ai tipi di metadati personalizzati.
  2. Le impostazioni personalizzate non possono essere distribuite tramite pacchetti o API di metadati/insiemi di modifiche. Mentre i tipi di metadati personalizzati 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 personalizzate conta contro il governor limit SOQL della piattaforma e può avere un impatto sulle prestazioni se i dati sono troppo grandi.
  4. Le impostazioni personalizzate devono essere create manualmente perché non sono distribuibili.
  5. Le impostazioni personalizzate non supportano i campi di relazione. È possibile creare lookup tra oggetti di metadati personalizzati.
  6. I dati delle impostazioni personalizzate non sono visibili nelle classi di test, mentre i tipi di metadati personalizzati sono visibili nelle classi di test senza l’annotazione “SeeAllData”.

Video Tipi di metadati personalizzati in Salesforce

 

 

 

Fonte: tradotto da ApexHours

Share:

administrator