在本课程中,您将直接使用 EGL 源代码,从您编写的 EGL 库开始。一个库中可能包含常量、变量和函数,可以通过应用程序中不同的逻辑单元来访问这些对象。库的一项重要特征是,对变量所作的更改可用于任何访问该库的逻辑单元。但是,本教程讨论的重点在于函数,您将函数放入库中,以避免在多处维护同一个广泛使用的逻辑。
要处理一些普通问题,您可以使用 EGL 模型视图控制器 (MVC) 框架,此框架由 com.ibm.egl.rui 项目提供。尽管初始“MVC”通常描述企业应用程序的不同组件,但是 Rich UI 中的 MVC 框架仅关心用户界面的组件。这种情况下,模型是一个变量或记录字段,视图是一个窗口小部件,而控制器是用于监视模型与视图之间的数据传输的声明。该数据传输有时候是自动进行的,有时候是对函数调用的响应,稍后对此进行了说明。
上一课中的拖放操作不仅添加了控制器声明,而且添加了表单管理器,表单管理器是一个允许您将其他声明视作单个表单的组件的声明。表单管理器包括一组表单字段,每个表单字段可以包括标签、控制器和错误字段。
EGL 创建了一个存根 inputRec_form_Submit 函数。此函数用于验证表单上的所有字段以及“落实”这些字段。落实操作是 MVC 实现的一部分,意味着会使用窗口小部件中的值来更新 inputRec 记录。
您将添加代码以调用两个另外的函数。第一个函数使 processImage 图像可视,这就让用户知道应用程序正在运行。第二个函数将调用服务以计算抵押贷款还款金额。
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
考虑到事件的顺序,通常按照当前教程所示来调用表单级别的 publish 函数:在用于接收来自服务的数据的回调函数中。
按如下所示执行操作:
现在,您可以测试计算器。
在下一课中,您将创建一个饼图,以对所给定计算中的本金总额与利息总额进行比较。