In questo articolo approfondiamo le caratteristiche principali della componente “Codice” del BPM, delineando le caratteristiche che lo rendono lowcode.
Nel precedente Articolo abbiamo visto le componenti principali di Appian che lo caratterizzano, qui approfondiamo le caratteristiche principali della componente “Codice” del BPM, ovvero SAIL delineando le caratteristiche che lo rendono lowcode.
SAIL è lowcode
Abbiamo già illustrato che Appian ha un suo linguaggio proprietario, SAIL, che di fatto è un linguaggio che punta ad essere un linguaggio fortemente espressivo, in particolare:
- È un linguaggio Funzionale, al cui interno abbiamo la possibilità di usufruire di funzioni di second’ordine.
- È debolmente tipato, anche se tipizzando le variabili in ingresso (rule input) l’ambiente adotta i controlli tipici della tipizzazione forte, eccetto per la possibilità di eseguire conversioni di tipo implicite;
- È fortemente espressivo, inoltre è utilizzato sia per la costruzione di rule che di interfacce
- Non ha un sistema di cattura e gestione delle eccezioni, questo fa’ sì che bisogna usare con oculatezza le rule e le interfacce in un applicativo robusto.
Le caratteristiche appena citate permettono di scrivere codice molto espressivo in grado di effettuare operazioni anche molto complesse con poche righe di codice.
Ad esempio, consideriamo un dizionario che schematizziamo in Json con un costrutto del tipo :
[{“nome”:”Vincenzo”,”cognome”:”Reggina”,”professione”:”Sviluppatore”},{“nome”:”Tizio”,”cognome”:”Rossi”,”professione”:”Pittore”},{“nome”:”Caio”,”cognome”:”Verdi”,”professione”:”Designer”}]
e da questo json vogliamo estrarre solo gli elementi del dizionario “Nome”.
Dobbiamo semplicemente scrivere il seguente codice:
a!fromJson(local!elenco).nome
SAIL come linguaggio di programmazione
Appian punta molto sul fatto che il suo BPM sia “lowcode”. Il motivo è chiaro: “lowcode” si traduce in tempi di sviluppo più rapidi, ma per farlo il proprio linguaggio, ha determinate caratteristiche. Il fatto SAIL sia un linguaggio funzionale con una forte espressività ci permette di scrivere segmenti di codice fortemente concisi che ne assicurano anche una forte riusabilità all’interno della nostra applicazione. Gli script in virtù del fatto che il linguaggio è debolmente tipato permettono sono facilmente generalizzabili. Tutto oro? assolutamente no.
Il fatto che gli script siano debolmente tipati e che non ci sia una gestione degli errori fa’ sì che gli script devono quanto più possibile essere brevi e concisi pena la decadenza della manutenibilità degli script stessi.
Primi costrutti: commenti e if.
A questo punto illustriamo i primi costrutti utili per un semplice script.
Il primo costrutto che vedremo sono i commenti, in Appian un po’ come Java e C#, si scrivono utilizzando la notazione slash e asterisco.
/* questo è un commento monolinea */
/* questo è un commento
Multilinea, ma carino */
Tutto qui, per quanto riguarda la componente SAIL, mentre per la componente BPM è consigliato (leggi anche obbligatorio) l’utilizzo delle annotation dei processi per inserire dei commenti, ma vedremo poi.
Il secondo costrutto che vediamo è l’if il quale è una (ovviamente) funzione che differenzia il risultato in base a un valore booleano in ingresso.
if(condizione, espressione se condizione vera, espressione se condizione falsa).
Ciò che ci restituisce l’if è dettato dalla prima espressione se la condizione è vera, dalla seconda se questa è falsa.
ad esempio if(0=1,“Appian”,”Computer”) restituirà sempre la stringa “Computer”.