Utilizzo dell’oggetto Invocazione di Metodo

L’oggetto Invocazione di Metodo è utile per potersi riferire in modo indiretto ad un metodo. Si può pensare a questo oggetto come un puntatore a funzione del linguaggio C o la dichiarazione di una lambda, tipica dei linguaggi di programmazione moderni. Questo oggetto si può istanziare ovunque cliccando nel Project View con il tasto destro sul nodo dentro il quale lo si vuole posizionare e selezionando “Invocazione a Metodo”.

Una volta istanziato si può impostare il metodo che verrà invocato selezionandolo dal Property View, insieme agli eventuali argomenti da passare al metodo stesso. Questo oggetto espone quindi un metodo “Invoke” che, una volta chiamato, esegue il metodo selezionato passando gli argomenti impostati.

Confirmation dialog: a typical use case for the MethodInvocation object

Può capitare l’esigenza di chiedere all’utente una conferma di un’azione che sta compiendo (attraverso una Dialog o un Pannello apposito). A fronte della scelta dell’utente tipicamente deve essere eseguita una logica sulla pagina che ha aperto la Dialog.

Un meccanismo come l’Invocazione a Metodo può quindi essere utile in questo scenario, poiché permette di creare delle Callback che possono eseguire metodi al di fuori della Dialog.

Nella libreria dei template è infatti presente l’oggetto “Dialog di Conferma” che fornisce un template da utilizzare nel caso appena descritto. È presente infatti un Object Type “ConfirmationDialogContext” che funge da struttura di comunicazione tra la il chiamante della Dialog e la Dialog stessa. In esso sono presenti infatti tre nodi:

  • Message, which is a variable of type LocalizedText, in which the text to be shown in the Dialog can be inserted.

  • OnConfirm, che è un oggetto di tipo Invocazione a Metodo, il quale può contenere una calback che verrà invocata quando l’utente farà click sul bottone “Confirm”.

  • OnCancel, che è simile a OnConfirm, ma verrà invocato sul bottone di “Cancel”.

Un’istanza di ConfirmationDialogContext può essere quindi creata sulla pagina che aprirà la Dialog, e configurata con il messaggio e le callback opportune, facendo riferimento per esempio a metodi di un possibile netlogic definito su quella pagina (es: OnSave, OnDiscard). Quando verrà aperta la Dialog, è necessario utilizzare questo oggetto come Alias della Dialog, quindi bisogna andarlo ad impostare come “AliasNode” nel comando “OpenDialog”.

La stessa Dialog può essere quindi facilmente riutilizzata in diverse pagine che hanno bisogno di una conferma da parte dell’utente, lasciando invece l’implementazione vera e propria delle callback alle singole pagine. Si noti che l’Object Type ConfirmationDialogContext rappresenta solo un esempio e può essere facilmente esteso con l’aggiunta di altre callback o altri campi per lo scambio di informazioni tra la pagina e la Dialog.

A sample project implementing this scenario can be found here.

Scarica il progetto di esempio da qui.