演習 3.6: リモート・ロジックの呼び出し

このチュートリアルでは、EGL コードを作成して、そのコードを Web アプリケーション・サーバーで実行します。しかし、別の言語で書かれたコードや別のプラットフォームで実行するコードを使用する必要がある場合もあります。EGL call 文は、制御権を別のプログラムに移動します。制御権を受け取るプログラムは、そのプログラムを呼び出した EGL コードと異なる言語で作成され、異なるプラットフォームで実行されていても構いません。

この演習では、UpdateSession.jsp ページに入力されたユーザー ID の妥当性検査を行う外部 EGL プログラムを作成します。この外部プログラムは EGL で書かれ、Web アプリケーションと同じサーバーで実行されますが、別の言語で書かれていたり、別のプラットフォームで実行されるプログラムでも構いません。この外部プログラムは、前の演習で使用したものよりも、より複雑なサーバー・サイドの妥当性検査を行います。

EGL call 文について詳しくは、ヘルプ・トピック「call」を参照してください。

共用レコードの作成

このセクションでは、ユーザー ID に関する情報を保持する EGL レコード・パーツを作成します。レコード・パーツが複数のプログラムまたは PageHandler で使用される場合には、レコード・パーツ定義をページ・コード・ファイルに保持せずに、別のファイルに保持する方法が、最適なプログラミング手法です。

  1. プロジェクト・エクスプローラー・ビューで、「data」パッケージをクリックして選択する。data パッケージは EGLSource フォルダー内にあります。
  2. 「ファイル」>「新規」>「その他」をクリックする。「新規」ウィンドウが開きます。
  3. 「新規」ウィンドウで「EGL」を展開する。
  4. EGL ソース・ファイル」をクリックする。
  5. 次へ」をクリックする。
  6. data が「パッケージ」フィールドにあることを確認する。
  7. EGL ソース・ファイル名」フィールドに、新規 EGL ソース・ファイル名として、次のテキストを入力する。

    userIDRecord

    「新規 EGL パーツ」ウィンドウは次のようになります。

    「新規 EGL パーツ」ウィンドウの外観

  8. 終了」をクリックする。新規ファイルが作成されてエディターで開きます。
  9. userIDRecord.egl ファイル内のすべてのコードを以下のコードに置き換える。
    package data;
    
    Record userIDRecord type basicRecord
      userID              char(50);
      isValid             char(1);
      validationMessage   char(100);
    end
    このコードは、3 つのフィールドがある単純な EGL レコード・パーツを作成します。ユーザー ID 自体を保持するフィールド、ユーザー ID が有効であるかどうかを示す単一文字を保持するフィールド、バリデーター関数からの正常またはエラー・メッセージを含むストリングを保持するフィールドです。
  10. ファイルを保管する。
  11. Ctrl+G キーを押すか、コードを右クリックしてポップアップ・メニューで「生成」をクリックし、ファイルを生成する。
  12. ファイルを閉じる。

リモート・プログラムの作成

  1. data」パッケージを再度クリックする。
  2. 「ファイル」>「新規」>「その他」をクリックする。
  3. 新規」ウィンドウで、「EGL」を展開し、「プログラム」をクリックする。
  4. 次へ」をクリックする。
  5. EGL ソース・ファイル名」フィールドに、新規 EGL ソース・ファイル名として、次のテキストを入力する。

    UserIDValidation

  6. 呼び出し先プログラムとして作成」チェック・ボックスを選択する。
  7. 基本 - 基本プログラムの作成 (Basic - Create a basic program)」をクリックする。

    「新規 EGL パーツ」ウィンドウは次のようになります。

    「新規 EGL パーツ」ウィンドウの外観

  8. 終了」をクリックする。新規プログラム・パーツが作成され、エディターで表示されます。
  9. userIDValidation.egl ファイル内のすべてのコードを以下のコードに置き換える。
    package data;
    
    program UserIDValidation (userID userIDRecord)
    
    lengthOfUserID int;
    
      function main()
        userID.isValid = "Y";
        lengthOfUserID = strLib.strLen(userID.userID);
    
        if (lengthOfUserID > 12)
          userID.isValid = "N";
          userID.validationMessage = "Your user ID can be no longer than 12 characters";
        end
    
        if (lengthOfUserID < 5)
          userID.isValid = "N";
          userID.validationMessage = "Your user ID must be at least 5 characters long";
        end
    
        if (userID.isValid == "Y")
          userID.validationMessage = "Your user ID is valid";
        end
    
      end
    
    end

    以下は、ここで挿入したコードに関する技術面での詳細です。

  10. ファイルを保管する。
  11. Ctrl+G キーを押すか、コードを右クリックしてポップアップ・メニューで「生成」をクリックし、ファイルを生成する。
  12. ファイルを閉じる。

リモート・プログラムの呼び出し

ここまでで、ユーザー ID を保持するレコードとユーザー ID を評価する外部プログラムを作成しました。最後のステップでは、作成した外部プログラムを使用するように UpdateSession PageHandler をセットアップします。

  1. UpdateSession.jsp ページを開く。
  2. ページを右クリックし、ポップアップ・メニューから「ページ・コードの編集 」をクリックする。
  3. UpdateSession.egl ファイルで、updateSession() 関数全体を次の新規関数に置き換える。
      Function updateSession()
        
        userID userIDRecord;
        userID.userID = userSession.userid;
        call data.UserIDValidation userID;
        
        if (userID.isValid == "Y")
          setSessionAttr("sess",userSession);
          forward to "ViewSession";
        else
          setError(userID.validationMessage);
        end
        
      end

    以下は、この関数のコードに関する技術面での詳細です。

    userID userIDRecord;
    userID.userID = userSession.userid;
     
    このコードは、userIDRecord レコード・パーツから userID という名前の変数を作成します。その後、userSession レコード内のユーザー ID の値をその変数に割り当てます。
    call data.UserIDValidation userID;
    このコードは、userIDValidation プログラムを呼び出し、そのプログラムに userID 変数を渡します。プログラムは、ユーザー ID の妥当性検査を行い、validationMessage および isValid フィールドを更新して、userID 変数を戻します。
    if (userID.isValid == "Y")
      setsessionAttr("sess",userSession);
      forward to "ViewSession"
    else
      setError(userID.validationMessage);
    end
    この if 文は、ユーザー ID が UserIDValidation プログラムによって有効と判断されたかどうかをチェックします。ユーザー ID が有効である場合、isValid フィールドは Y になっており、ページはセッション・オブジェクトを正常に更新します。ユーザー ID が無効である場合、UserIDValidation プログラムによって戻されたメッセージが、ページ上のエラー・メッセージに追加されます。

  4. ファイルを保存して閉じる。
  5. UpdateSession.jsp ページをサーバーで実行する。
  6. Web ブラウザーに UpdateSession.jsp ページが開かれたら、各フィールドに有効な情報を入力する。ただし、「Your personal user ID」フィールドには、5 文字未満のユーザー ID を入力します。
  7. Write to session object」ボタンをクリックする。

    入力したユーザー ID は妥当性検査プログラムで不適切と判断されるため、セッション・オブジェクトは更新されず、ページにエラー・メッセージが表示されます。ページは次のようになります。

  8. Web ブラウザー上の UpdateSession.jap ページの外観

  9. 有効なユーザー ID を入力して、再度「Write to session object」ボタンをクリックする。ページが正常に動作します。

これで、このチュートリアルは終了です。チュートリアルの要約に進んでください。

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.