Dans cette leçon, vous travaillez directement dans le code source EGL, en commençant par une bibliothèque EGL que vous écrivez. Une bibliothèque peut contenir des constantes, des variables et des fonctions, qui sont toutes accessibles par les différentes unités logiques de l'application. Une caractéristique importante d'une bibliothèque est que les modifications apportées à une variable sont disponibles pour toutes les unités logiques qui accèdent à la bibliothèque. Toutefois, l'accent dans ce tutoriel est mis sur les fonctions, qui vous placez dans une bibliothèque pour éviter d'avoir à gérer plusieurs fois la même logique lorsqu'elle est largement utilisée à plusieurs endroits.
Pour traiter certains problèmes courants, vous pouvez utiliser la structure de l'architecture MVC (Model View Controller) EGL, contenue dans le projet com.ibm.egl.rui. Bien que les initiales "MVC" décrivent généralement les différents composants d'une application d'entreprise, la structure MVC de Rich UI ne concerne que les composants d'une interface utilisateur. Ici, le modèle (model) est une zone de variable ou d'enregistrement, la vue (view) est un widget, et le contrôleur (controller) est une déclaration qui gère le transfert des données entre le modèle et la vue. Ce transfert de données est parfois automatique, et parfois une réponse à l'appel d'une fonction, comme illustré par la suite.
Les actions de glisser-déposer effectuées dans la leçon précédente ont ajouté non seulement des déclarations de type contrôleur, mais aussi un gestionnaire de formulaires, qui est une déclaration permettant de traiter d'autres déclarations en tant que composants d'un seul formulaire. Un gestionnaire de formulaires comporte un ensemble de zones, dont chacune peut inclure un libellé, un contrôleur, et une zone d'erreur.
EGL a créé une fonction bouchon (stub) inputRec_form_Submit. Son objectif est de valider toutes les zones du formulaire et de les "valider". La validation fait partie intégrante de l'implémentation MVC et consiste à mettre à jour l'enregistrement inputRec avec les valeurs des widgets.
Vous allez ajouter du code pour appeler deux fonctions supplémentaires. La première fonction rend l'image processImage visible, ce qui permet à l'utilisateur de savoir que l'application fonctionne. La seconde fonction appelle le service qui calcule les mensualités hypothécaires.
if(inputRec_form.isValid()) inputRec_form.commit(); showProcessImage(); calculateMortgage(); else errorLabel.text = "Input form validation failed."; end

function showProcessImage() processImage.visible = yes; end
function hideProcessImage() processImage.visible = no; end
function calculateMortgage()
call mortService.amortize(inputRec)
returning to displayResults
onException handleException;
end
function displayResults(retResult MortgageCalculationResult in) paymentLabel.text = MortgageLib.formatMoney(retResult.monthlyPayment as STRING); inputRec_form.publish(); hideProcessImage(); end
Etant donné la séquence des événements, la fonction publish du formulaire est souvent appelée comme elle l'est ici : dans une fonction de rappel qui reçoit des données à partir d'un service.
Procédez comme suit :
Vous êtes maintenant prêt à tester le calculateur.
Dans la leçon suivante, vous créez un graphique circulaire pour comparer le total du capital au total des intérêts pour un calcul donné.