前回の演習で作成したハンドラーに関数を追加します。
この演習では、EGL ライブラリーの作成を始めとして、EGL ソース・コードを直接取り扱います。 ライブラリーには、定数、変数、および関数を含めることができ、これらのいずれに対しても、アプリケーション内のさまざまな論理単位からアクセスできます。 ライブラリーの重要な特性は、変数への変更を、そのライブラリーにアクセスするすべての論理単位から使用できることです。 ただし、このチュートリアルでは重点的に取り扱うのは関数です。ライブラリーに関数を置くことで、広範囲で使用される同一のロジックを複数の場所で保守する必要がなくなります。
いくつかの一般的な問題に対処するために、com.ibm.egl.rui プロジェクトが備えている EGL Model/View/Controller (MVC) フレームワークを使用することができます。 通常、「MVC」というイニシャルは、エンタープライズ・アプリケーションの各種コンポーネントを表しますが、Rich UI の MVC フレームワークは、ユーザー・インターフェース・コンポーネントのみに関係しています。 ここで、モデル は変数またはレコード・フィールド、ビュー はウィジェット、コントローラー はモデルとビューの間で行われるデータ転送を制御する宣言です。 データ転送は自動で行われることもあれば、後述するように、関数呼び出しへの応答として行われることもあります。
前回の演習で行ったドラッグ・アンド・ドロップ・アクションでは、コントローラー宣言を追加するだけでなく、他の宣言を単一書式のコンポーネントとして処理する宣言である書式マネージャー も追加しました。 書式マネージャーには一連の書式フィールドがあり、各フィールドには、ラベル、コントローラー、およびエラーのフィールドを含めることができます。
EGL により、inputRec_form_Submit スタブ関数が作成されました。 その目的は、関数が書式上のすべてのフィールドを検証し、それらを「コミット」することです。 コミットは MVC 実装の一部であり、inputRec レコードがウィジェット内の値を使用して更新されることを意味します。
このほかに 2 つの関数を呼び出すコードを追加します。 1 つ目の関数は、processImage イメージを表示することで、ユーザーにアプリケーションが実行されていることを通知します。 2 つ目の関数は、サービスを呼び出して住宅ローンの支払金額を計算します。
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 関数は、ここで示したように、つまりサービスからデータを受け取るコールバック関数の場合のように呼び出されることが多くなります。
以下のようにします。
これで計算器をテストする準備が整いました。
次の演習では、円グラフを作成して、ある計算における元金の総額と利子の総額を比較します。