Ciao developer,
in questo articolo troverai una breve introduzione su come gestire le proprietà e i file di configurazione di un progetto Mule. vediamo come:
File di configurazione
Mule ci dà la possibilità di definire e valorizzare le proprietà in un file mediante la componente “Configuration properties” :
1) Crea il file, click su “Create” e seleziona “Configuration properties”
2) Scrivi il nome del file creato in precedenza
Io personalmente simpatizzo per i file con estensione .properties ma, Mule ci offre la possibilità di usare file con estensione .yaml, la modalità di gestione rimane invariata.
Il runtime di Mule si occuperà di caricare la configurazione in memoria.
Proprietà globali o d’ambiente
A differenza della sorella minore con la componente “Global Property” possiamo definire una proprietà come “Globale” ma, la valorizzazione di essa viene delegata all’ambiente che ospiterà l’applicazione:
1) click su “Create” e seleziona “Globa property”
2) Dagli un nome e un valore di default (se necessario)
Lato runtime, prima del avvio basta aggiungere la variabile con la classica opzione -D
$> ./mule -M-Dmy.prop=456
Oppure, se in sviluppo su Anypoint Studio basta andare nelle impostazioni di avvio e aggiungere la variabile, come segue:
Best Practice
Nei progetti Mule (o in generale) spesso volentieri troverete (e vi invito ad abituarvi a farlo :)), un mix delle due modalità viste in precedenza. Ovvero, è possibile definire un file di configurazione per ogni ambiente di esecuzione e, grazie all’operatore ${} di Mule, puntare ad uno specifico file.
Per fa ciò basta definire una variabile globale che chiameremo mule.env che potrà assumere i seguenti valori: dev, test, prod in funzione dell’ambiente di esecuzione.
Definire una configuration properties con il placeholder:
<global-property doc:name="Global Property"
name="mule.env" value="dev" />
<configuration-properties doc:name="Configuration properties"
file="${mule.env}.properties" />
Creare gli i tre files denominati dev.properties, test.properties e prod.properties all’interno della directory resource e Mule si occuperà di tutto il resto.
Come vedete, in questo modo la gestione delle proprietà di configurazione diventa molto ordinata e flessibile.
Accedere al valore delle proprietà a runtime
Per accedere al valore delle proprietà esistono due possibilità:
1) Mediante l’operatore ${}
Questo operatore può essere usato un pò ovunque, Dataweave, Transform message o Connector
2) Mediante la funzione p(“”)
Questa funzione può essere usata solo negli script Dataweave, in quanto fa parte delle funzioni del core di mule:
%dw 2.0
output application/java
---
{
env: p("mule.env")
}
Alcuni link utili:
Doc ufficiale sulle proprietà: https://docs.mulesoft.com/mule-runtime/4.3/configuring-properties
Un buon articolo che spiega la differenza tra ${} e p(): https://www.linkedin.com/pulse/differences-extracting-property-values-using-p-mule-4-sravan-lingam/
Leggi anche Upload file via API con Mule