Nesta lição, você trabalhará diretamente com o código de origem do EGL, iniciando com a gravação de uma biblioteca do EGL. Uma biblioteca pode conter constantes, variáveis e funções, as quais podem ser acessadas por diferentes unidades de lógica no aplicativo. Uma característica importante de uma biblioteca é que as mudanças em uma variável estão disponíveis para qualquer unidade de lógica que acessa a biblioteca. Entretanto, o foco neste tutorial está nas funções, que são colocadas em uma biblioteca para evitar que a mesma lógica amplamente usada tenha de ser mantida em diversos locais.
Para tratar alguns problemas comuns, é possível usar a estrutura do Model View Controller (MVC) do EGL, que é fornecida pelo projeto com.ibm.egl.rui. Embora as iniciais "MVC" normalmente descreva os diferentes componentes de um aplicativo corporativo, a estrutura do MVC no Rich UI refere-se apenas aos componentes de uma interface com o usuário. Aqui, o modelo é um campo de registro ou variável, a visualização é um widget e o controlador é uma declaração que controla a transferência dos dados entre o modelo e a visualização. A transferência de dados algumas vezes é automática e algumas vezes é uma resposta para uma chamada de função, conforme mostrado posteriormente.
As ações de arrastar e soltar da lição anterior incluíram não apenas declarações do controlador, mas um gerenciador de formulário, que é uma declaração que permite o tratamento de outras declarações como componentes de um formulário único. Um gerenciador de formulário inclui um conjunto de campos de formulário, cada um dos quais pode incluir um rótulo, um controlador e um campo de erro.
O EGL criou uma função stub inputRec_form_Submit. A intenção é que a função valide todos os campos no formulário e os “confirme”. A confirmação é parte da implementação do MVC e significa que o registro inputRec é atualizado com os valores nos widgets.
Você incluirá o código para chamar duas outras funções. A primeira função torna a imagem processImage visível e, dessa forma, avisa ao usuário que o aplicativo está trabalhando. A segunda função chama o serviço para calcular o pagamento de hipoteca.
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
Dada essa sequência de eventos, a função publish de nível de formulário é frequentemente chamada conforme a seguir: em uma função de retorno de chamada que recebe dados de um serviço.
Faça conforme a seguir:
Na próxima lição, você criará um gráfico de setores circulares para comparar o total principal com os juros totais em um cálculo determinado.