Sottotipi di codeunit (II parte) – Install

Salve lettore, in questo articolo voglio parlarti di un altro sottotipo di codeunit. Vorrei parlarti delle codeunit di installazione. In un altro articolo ho parlato delle codeunit di test e testrunner e di come possono essere utilizzate per fare test. In questo post parleremo delle codeunit di installazione, mentre ho deciso di dedicare un post a parte per le codeunit di aggiornamento, perché c’è qualche concetto in più delle codeunit di installazione da sapere e non voglio renderti la lettura troppo complicata.

Quando installiamo un’app per la prima volta, non è difficile che si debba dover gestire qualche popolamento di tabella, emissione di messaggi all’utente o callback di telemetria dei dati. Per fare in modo che ciò avvenga dobbiamo sviluppare, all’interno della nostra app, una codeunit di installazione. Tale codeunit è riconoscibile perché ha la proprietà subtype impostata a install.

Quando viene eseguita la codeunit di installazione?

La codeunit di installazione viene eseguita in diversi modi:

  1. tramite l’utilizzo del cmdlet Install-NavApp tramite Powershell.
  2. Tramite la pagina di installazione delle estensioni direttamente nel client.
  3. Tramite la pubblicazione con Visual Studio Code (solo per sviluppatori).

N.B. La codeunit di installazione non viene eseguita se si sta facendo un aggiornamento tramite il comando Start-NavAppDataUpgrade.

Sviluppo della codeunit

Come detto quando creiamo una codeunit dobbiamo mettere la proprietà Subtype = Install. Inoltre questa codeunit supporta due trigger:

  • OnInstallAppPerCompany() – In questo trigger si deve includere tutto il codice inerente ai dati di una specifica società all’interno del database. Tale trigger viene eseguito una volta per ogni società presente su Microsoft Business Central.
  • OnInstallAppPerDatabase() – In questo trigger si deve includere tutto il codice inerente al database. Questo trigger viene eseguito una sola volta nel processo di installazione.

In una stessa app è possibile avere più di una codeunit di installazione e diventa parte integrante dell’app stessa. Attenzione al fatto di avere più di una codeunit di installazione: non vi è alcuna garanzia di sequenzialità di esecuzione delle codeunit di installazione; pertanto occorre assicurarsi che vengano eseguite indipendenti l’una dall’altra.

Quando si sviluppa una codeunit di installazione è utile conoscere la versione, le dipendenze, il publisher, ecc. Tutte queste informazioni possono essere estrapolate tramite i tipi di dato ModuleInfo e NavApp.

Esempio

Nel seguente esempio ti mostro una codeunit di installazione che va a popolare una tabella di setup che attiva una certa gestione.

Innanzitutto sviluppiamo la tabella di setup e la sua pagina di gestione.

Tabella di setup
Pagina di setup

Ora sviluppiamo una codeunit di installazione che riempie i valori predefiniti della tabella.

Codeunit di installazione

Il risultato che ne otterremo è quello nella seguente immagine.

Pagina di setup client

Considera, pertanto, nello sviluppo della tua app la possibilità di una codeunit di installazione per compiere delle operazioni preliminari. In un prossimo articolo ti parlerò anche della codeunit di aggiornamento che merita un discorso a parte.

Spero che questo articolo ti sia utile per i tuoi prossimi sviluppi.

Lascia una risposta