< 前へ | 次へ >

演習 3: プロジェクトのセットアップおよび EGL SQL 検索機能の使用

ロジックを記述する前に、2 つの EGL プロジェクトと、データベース表に基づくレコード・パーツを作成します。

EGL アプリケーションは、1 つ以上のプロジェクト から編成されます。各プロジェクトは、ワークスペース内の物理フォルダーです。 プロジェクトには 1 つの EGL ソース・フォルダーが用意されており、その中には 1 つ以上のパッケージ が含まれています。さらに、それらのパッケージの中には EGL ソース・ファイルが含まれています。 プロジェクト、次に EGL ソース・フォルダー、次に EGL ソース・ファイルの入ったパッケージというこの階層は、EGL での作業の基本となります。

EGL ソース・ファイルには、ユーザーが作成する型定義である EGL パーツ が含まれています。 例えば、サービス・パーツにはロジックが含まれており、レコード・パーツは、サービス・パーツで宣言する変数の基礎になることができます。

パッケージは、以下のようにパーツを各種のコンテキスト (つまり名前空間) に分離するため、重要です。
  • パーツ名は、2 つの異なるパッケージで重複する可能性があります。また、あらゆる EGL ソース・コードは各パーツを正確に参照できます。名前空間の主な利点は、別々のチームが別々の EGL パーツを名前の競合を起こすことなく作成できることです。
  • 以下のように、ある 1 つのパッケージ内にあるそれぞれのパーツ名は、そのパッケージ内で固有のものです。
    • あるパッケージ内のパーツは、同じパッケージ内の別のパーツを、そのパーツ名を指定することによって簡単に参照できます。 例えば、レコード・パーツ MyRecordPart を基にしたレコードの宣言を以下に示します。
      myRecord MyRecordPart{};
    • あるパッケージ内のパーツは、もう 1 つのパッケージにあるパーツを、そのパッケージ名とパーツ名を指定することによって参照したり、そのパーツのインポート操作を伴うショートカットによって参照したりすることができます。

あるプロジェクトがもう 1 つのプロジェクト内のパーツを参照できるのは、参照する側のプロジェクトの EGL ビルド・パスで、参照される側のプロジェクトが指定されている場合のみです。 これについても、このチュートリアルで例を示します。 ただし、どの場合においても、異なるプロジェクトで同じパッケージ名を使用することは避けてください。使用すると、ネーム解決で問題が発生する可能性があります。

このチュートリアルの次のタスクでは、以下のプロジェクトを作成します。
PaymentService
EGL サービス・パーツおよび関連する定義を保持します。
PaymentClient
Rich UI ハンドラーおよび関連する定義を保持します。

すべてのコードを単一のプロジェクトに含めることができますが、ここで示したように分離すると、2 種類のコードを別々の方法で簡単にデプロイすることができます。

あるプロジェクトのパーツは、別のプロジェクトのパーツを使用できます。EGL は、ビルド・パス を使用して、未解決の参照を検索します。この演習では、PaymentService プロジェクトを PaymentClient プロジェクトのビルド・パスに追加する方法を後述します。

PaymentService プロジェクトの作成

EGL プロジェクトを作成してサービスを含めるには、次のステップを実行します。

  1. ワークベンチの右上にある「EGL」ボタンをクリックして、「EGL」パースペクティブに戻します。
    「データ」パースペクティブ・ボタンの横にある「EGL」パースペクティブ・ボタン
  2. メニュー・バーで「ファイル」 > 「新規作成」 > 「EGL プロジェクト」 とクリックするか、「新規 EGL プロジェクト」アイコンをクリックします。
    新規プロジェクト・アイコンは、メニュー・バーの 2 番目のアイコン・グループにある 4 つのアイコンのうちの最初のものです。
  3. 「新規 EGL プロジェクト」ウィンドウで、以下の情報を入力します。
    1. 「プロジェクト名」フィールドに、次の名前を入力します。
      PaymentService
    2. 「EGL プロジェクト・タイプ」セクションで、「一般プロジェクト」をクリックします。
      プロジェクト名が「PaymentService」である「新規 EGL プロジェクト」ウィンドウ
    3. 「次へ」をクリックします。
  4. 2 番目の「EGL プロジェクト」ウィンドウでは、EGL で指定されたデフォルトが正しいことを確認する必要があります。 以下の情報を確認してください。
    1. 「ターゲット・ランタイム・プラットフォーム」が Java™ になっている。 この設定は、EGL が EGL サービス・パーツから Java ソース・コードを生成することを示します。
    2. 「ビルド記述子オプション」で、「ビルド記述子の作成」ラジオ・ボタンが選択されている。 ビルド記述子は、生成プロセスを制御します。 ここでは独自サービス用の別のプロジェクトを作成するので、EGL が自動作成するデフォルトのビルド記述子を使用することができます。
  5. 「終了」をクリックします。
EGL は、PaymentService という名前のプロジェクトを作成します。 ディレクトリー内の以下のフォルダーに注意してください。
EGLSource
パッケージおよびソース・ファイルはここに置きます。
EGLGen/JavaSource
EGL は、生成した Java ファイルをここに置きます。
JavaSource
カスタム Java ソース・ファイルはすべてここに置きます。 生成プロセスでこれらのファイルが上書きされることはありません。
JRE システム・ライブラリー
EGL は、Java ランタイム環境をサポートする JAR ファイル用にこのフォルダーを使用します。
「プロジェクト・エクスプローラー」ビューに、新規プロジェクトおよびフォルダーが表示されます。

PaymentClient プロジェクトの作成

EGL Rich UI プロジェクトには、Web 用のユーザー・インターフェース開発を迅速に進めるための多くのショートカットが含まれています。

EGL Rich UI プロジェクトを作成するには、次のようにします。

  1. メニュー・バーの「新規 EGL プロジェクト」アイコンをクリックします。
  2. 「EGL プロジェクト」ウィンドウで、以下の情報を入力します。
    1. 「プロジェクト名」フィールドに、次の名前を入力します。
      PaymentClient
    2. 「EGL プロジェクト・タイプ」で、「Rich UI プロジェクト」をクリックします。
    3. 「次へ」をクリックします。
  3. 2 番目の「EGL プロジェクト」ウィンドウでは、EGL で指定されたデフォルトが正しいことを確認する必要があります。 以下の情報を確認してください。
    1. 「プロジェクトのデフォルトのロケーションを使用」が選択されている。
    2. 「ウィジェット・ライブラリー」リストに以下のプロジェクトが含まれている。
      • EGL Rich UI ウィジェット
      • EGL Dojo ウィジェット
    3. 「EGL プロジェクト・フィーチャー」グループで、「EGL デプロイメント記述子の作成」が選択されている。
  4. 「次へ」をクリックします。
  5. ビルド設定ページで、「PaymentService」を選択します。
    PaymentService プロジェクトが選択されています。

    Rich UI ハンドラーが PaymentService プロジェクトに定義されているパーツを使用できるように、 PaymentService プロジェクトが、作成されるプロジェクトのビルド・パスに追加されます。

  6. 「終了」をクリックします。
EGL は、PaymentClient という名前のプロジェクトを作成し、 Rich UI、Dojo ウィジェット、および Dojo ランタイム・ライブラリー用のワークスペースにサポート・プロジェクトを追加します。EGL が一般プロジェクト用に作成したディレクトリーに加えて、Rich UI プロジェクトには以下のディレクトリーが含まれます。
WebContent
カスケーディング・スタイル・シート (CSS) やイメージなどのサポート・ファイルが入ります。
「プロジェクト・エクスプローラー」ビューに、新規プロジェクトおよびフォルダーが表示されます。
最初に Rich UI プロジェクトをワークスペースに追加した場合は、以下に示す 3 つの他のプロジェクトが自動的に追加されます。
  • com.ibm.egl.rui
  • com.ibm.egl.rui.dojo.runtime.local
  • com.ibm.egl.rui.dojo.widgets

これらの 3 つのプロジェクトには、Rich UI アプリケーションの作成時に使用する、ウィジェットやその他のサポート・ファイルが含まれています。

PaymentService プロジェクトのビルド記述子の編集

EGL ビルド・ファイルの拡張子は .eglbld であり、このファイルにはビルド・パーツ が含まれています。ビルド・パーツは、EGL 生成プログラムに対する入力である XML 定義です。
1 つのビルド・ファイルには通常、複数のビルド記述子が含まれており、EGL コードを複数の方法で生成できるようになっています。例えば、EGL が PaymentService.eglbld ファイル内に以下のビルド記述子を作成したとします。
  • PaymentServiceJavaBuildOptions
  • PaymentServiceDebugBuildOptions

プロジェクトのビルド記述子を変更して、記述したロジックでデータベースにアクセスできるようにする必要があります。

ビルド記述子の編集手順は、以下のとおりです。

  1. PaymentService プロジェクトで、EGLSource フォルダーを展開します。PaymentService.eglbld ファイルをダブルクリックします。 ビルド・パーツ・エディターが開きます。
  2. 「接続を使用した DB オプションのロード」フィールドで下矢印をクリックし、 「Derby Database Connection」を選択します。
  3. デフォルトではワークベンチの左下隅にある「アウトライン」ビューを見つけます。この時点で、PaymentServiceJavaBuildOptions ビルド記述子が強調表示されています。PaymentServiceDebugBuildOptions をダブルクリックします。その後、EGL デバッガーで使用する他のビルド記述子についてステップ 2 を繰り返します。
    「アウトライン」ビューに、ビルド・ファイル内のさまざまなビルド記述子が表示されています。
  4. ビルド記述子ファイルを保存して閉じます。

EGL SQL 検索機能を使用したレコード・パーツの作成

PaymentDB データベース内の PAYMENT 表に対応するレコード・パーツのフィールドを自動的に検索できます。 列名は、レコード・パーツのフィールド名の基礎です。

  1. SQL 検索機能の設定を変更するには、次のようにします。
    1. ワークベンチのトップ・メニューから、「ウィン ドウ」 > 「設定」 > 「EGL」 > 「SQL」とクリックします。
    2. オプションの 3 つ目のグループである「構造体項目命名の大文字小文字制御規則」で、「小文字に変更してアンダースコアーの後の最初の文字を大文字に変更」を選択します。 フィールド名は大/小文字混合になります。
    3. オプションの 4 つ目のグループである「構造体項目命名のアンダースコアー制御規則」で、「アンダースコアーを除去」を選択します。 フィールド名の列名では、アンダースコアーは使用されません。
    4. オプションの最後のグループで、「システム・カタログから主キー情報を取得」が選択されていることを確認します。 レコード・パーツの 1 つ以上のフィールドは、SQL 表のキー・フィールドに対応するため、デフォルトの EGL SQL 処理を実行する場合に有用です。
    5. 「必要に応じて SQL ユーザー ID およびパスワードを要求」をクリアします。 データベースにアクセスするたびにダイアログ・ウィンドウが開かないようにします。
    6. 「OK」をクリックします。
  2. 「プロジェクト・エクスプローラー」ビューで、「PaymentService」を右クリックして、「新規作成」 > 「レコード」とクリックします。
  3. 「新規 EGL ソース・レコード (New EGL Source Record)」ウィンドウで、以下の情報を入力します。
    1. 「EGL ソース・ファイル名」フィールドに、以下の名前を入力します。
      ServiceRecords
      EGL が自動的に .egl ファイル拡張子を追加します。
    2. 「パッケージ」フィールドに、以下の名前を入力します。
      レコード
    3. 「終了」をクリックします。
    EGL は、records ディレクトリーおよび ServiceRecords.egl ファイルを作成し、このファイルを EGL エディターで開きます。
  4. 以下のコードをコピーおよび貼り付けして、ファイルの内容を置換します。
    package records;
    
    record paymentRec type SQLRecord {tableNames = [["PAYMENT"]]}
    
    end
    注:
    1. SQLRecord というラベルが付いたレコード・パーツを使用するということは、以下のケースにおいて、EGL 生成プログラムが SQL I/O に適したコードを作成することを意味します。
      • 次の例のように、add などの I/O ステートメントをコーディングします。
        add mySQLRecord;
      • I/O ステートメントが操作するレコード (この例では、mySQLRecord) は、SQL レコードです。つまり、このレコードは、SQLRecord のラベルが付いたレコード・パーツに基づいています。
    2. SQL レコード・パーツは、tableNames などの複数のプロパティーを使用します。その目的は、ほとんどの場合、EGL 生成プログラムの出力を変更し、これにより実行時の動作を変更することです。
    3. テーブル名は、2 次元配列として指定されます。なぜなら、カスタム SQL ステートメントを記述するときに有用であるテーブル・ラベル (SQL 別名) を指定する理由がある場合があるからです。以下に示すのは、テーブル・ラベルを含む tableNames プロパティー設定です。
      tableNames=[["PAYMENT", "A"]]
    4. 作成するレコード・パーツが単一のデータベース表に対応し、そのレコード・パーツの名前がデータベース表と同じであれば、tableNames プロパティーを設定する必要はありません。 このチュートリアルでは、レコード・パーツの名前は異なるため、tableNames プロパティーが必要です。
  5. record ステートメントの任意の場所で右クリックし、「SQL レコード」 > 「SQL を検索」をクリックします。 EGL は、データベース管理システムによって提供される情報に従って、レコード・パーツのフィールドを作成します。指定したのはテーブル名とその他わずかな情報であり、その結果を以下に示します。
    フィールド宣言は SQL データベースから取得されます。
  6. amount の型を decimal(10,2) から money に変更します。 この変更により、レコード・パーツを「EGL データ」ビューから Rich UI の「設計」面にドラッグ・アンド・ドロップしたときに、追加オプションを指定できるようになります。これについては後で説明します。
  7. fixedPayment の型を BOOLEAN に変更します。 この変更も、後述するドラッグ・アンド・ドロップ操作で役に立ちます。
  8. 保存 (Ctrl-S) して、ServiceRecords.egl ファイルを閉じます。

演習のチェックポイント

この演習では、以下のタスクを実行しました。
  • データ・アクセス・サービスを作成するための EGL プロジェクトを作成しました。
  • Rich UI アプリケーションを作成するための EGL プロジェクトを作成しました。
  • ビルド・ファイルのビルド記述子を変更しました。具体的に言うと、ワークベンチの接続定義からデータベース情報を追加しました。
  • EGL SQL 検索機能を設定しました。
  • レコード・パーツを作成し、データベースから情報の大部分を取得しました。

次の演習では、一部の Rich UI アプリケーションを作成し、プロトタイプ・コードの動作を確認します。

< 前へ | 次へ >

フィードバック