练习 3.6:调用远程逻辑

在此教程中,您已经编写了 EGL 代码并在 Web 应用程序服务器上运行了此代码。在其它情况下,您可能需要使用以另一种语言编写的代码或在另一个平台上运行的代码。EGL call 语句将控制权转移另外一个程序,该程序可以用另一种语言编写,并且可以在调用 EGL 代码之外的平台上运行该程序。

在此练习中,将创建一个外部 EGL 程序,它验证输入到 UpdateSession.jsp 页面中的用户标识。此外部程序可以是用 EGL 编写的并在 Web 应用程序所在的服务器上运行,也可以是用另外一种语言编写的并在另一个平台上运行。此外部程序执行的服务器端验证比在上一个练习中使用的验证要复杂一些。

有关 EGL call 语句的更多信息,请参阅帮助主题 call

创建共享的记录

在此部分中,将创建一个存放有关用户标识的信息的 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
    此代码创建一个具有三个字段的简单 EGL 记录部件。一个字段存放用户标识本身,另外一个字段存放指示该用户标识是否有效的一个字符,最后一个字段存放来自于验证器函数的成功或错误消息的字符串。
  10. 保存该文件。
  11. 通过按 Ctrl + G 或右键单击代码并从弹出菜单中单击生成来生成文件。
  12. 关闭该文件。

创建远程程序

  1. 再次单击 data 包。
  2. 单击文件 > 新建 > 其它
  3. 新建窗口中,展开 EGL 然后单击程序
  4. 单击下一步
  5. EGL 源文件名字段中,输入以下文本作为新 EGL 源文件的名称:

    UserIDValidation

  6. 选择创建为被调用程序复选框。
  7. 单击基本 - 创建基本程序

    “新建 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. 关闭该文件。

调用远程程序

既然已经创建了存放用户标识的记录以及可以对用户标识进行评估的外部程序,最后一步就是设置 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 记录中用户标识的值指定给该变量。
    call data.UserIDValidation userID;
    此代码调用 userIDValidation 程序并将 userID 变量传递给它。该程序验证用户标识并返回更新了 validationMessageisValid 字段的 userID 变量。
    if (userID.isValid == "Y")
      setsessionAttr("sess",userSession);
      forward to "ViewSession"
    else
      setError(userID.validationMessage);
    end
    此 if 语句通过 UserIDValidation 程序来检查用户标识是否有效。如果用户标识是有效的,则字段 isValid 设置为 Y,页面就会正常更新会话对象。如果用户标识无效,则就会将 UserIDValidation 程序返回的消息添加到页面上的错误消息。

  4. 保存并关闭该文件。
  5. 在服务器上运行 UpdateSession.jsp 页面。
  6. 当 UpdateSession.jsp 页面在 Web 浏览器中打开时,在每个字段中输入有效的信息,但在 Your personal user ID 字段中输入不足 5 个字符的用户标识。
  7. 单击写至会话对象按钮。

    您输入的用户标识不能通过验证程序,因此不会更新会话对象,而页面会显示错误消息。该页面看起来应如下所示:

  8. Web 浏览器中 UpdateSession.jap 页面的外观

  9. 输入有效的用户标识,然后再次单击写至会话对象按钮。页面将正常工作。

这是此教程中的最后一个练习。请继续查看教程总结

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.