代理模式

代理模式是一个符号空间,它定义了在其中所定义资源名称的唯一作用域。 这些资源包括消息流和其他可选资源,例如 ESQL 文件, Java™ 文件和映射文件。

代理模式被定义为从项目源目录到流名称的相对路径。

您可以创建新的代理模式以在同一 集成项目中提供单独的符号空间。 代理模式作为项目中的文件夹或子目录实现,并提供该项目中的组织结构。 您也可以使用项目引用将单个代理模式的作用域扩大到多个项目中,以创建应用程序符号空间,该符号空间提供与该应用程序套件关联的所有资源的作用域。

如果您在类别方式下创建新的代理模式,那么空模式在 "应用程序开发" 视图中不可见。 要在 "应用程序开发" 视图中显示空模式,请单击工具栏上的 隐藏类别 "隐藏类别" 工具栏图标

代理模式名称必须为字符串,以 Unicode 字符开始,随后为零或更多的 Unicode 字符或数字,以及下划线。 您可以使用句点向名称提供结构,例如:Stock.Common. 在项目目录中创建一个目录以表示模式,并且如果模式是使用句点结构化的,那么将定义更多子目录。 例如,代理程序模式Stock.Common导致目录 普通 位于目录 库存 中的 集成项目 目录内。

如果在项目的缺省代理模式中创建资源(例如,消息流),将在代表该项目的目录内创建与那个资源相关联的文件或多个文件。 如果在另一个代理模式中创建资源,将在模式目录内创建文件。

例如,如果您在 集成项目 Project1中的缺省模式中创建消息流,那么其关联文件将存储在 Project1 目录中。 如果您在以下项中创建另一个消息流:Stock.Common项目 Project1中的代理模式,其关联文件将在目录 Project1\Stock\Common中创建。

由于每个代理模式表示一个唯一的名称作用域,因此可以创建两个消息流,这两个消息流在两个代理模式中共享相同的名称。 代理模式确保了这两个消息流被识别为分离的资源。 尽管这两个消息流有相同的名称,但仍被认为是唯一的。

如果将消息流从一个项目移动到另一个,如果保存了代理模式,可以继续在原先项目内使用消息流。 如果这样做,必须通过添加目标项目来为原先的项目更新相关的项目列表。 但是,如果没有保存代理模式,因为模式名称是被完全地限定的消息流名称的一部分,所以流成为一个不相同的流,而且不再由其他项目识别。 该操作导致链接被终止,您必须手动地校正。 有关在移动消息流后更正错误的更多信息,请参阅 移动消息流或子流

请勿通过在文件系统中移动其关联文件来移动资源; 您必须使用 IBM® 集成工具箱 来移动资源,以确保所有引用都已更正以反映新组织。

当您在代理模式中创建函数、过程和常量时,以下作用域和复用条件适用。

函数
  • 函数可本地复用,并可以被模块作用域子例程调用或在同一模式中映射。
  • 函数可全局复用,并可以被 ESQL 中的其他函数或过程调用,或在同一项目或其他项目中定义的任何模式中映射文件。
过程
  • 过程可本地复用,并可以从同一模式中的 ESQL 文件中的模块作用域子例程调用。
  • 过程可全局复用,并可以被同一或不同项目中定义的任何模式中的 ESQL 文件中的其他函数或过程调用。

过程不能在映射文件中使用。

常量
  • 常量可本地复用,并可以在 ESQL 中定义的地方或在同一代理模式中的映射文件中使用。
  • 常量不可全局复用;您不能使用在其他模式中声明的常量。

如果要全局复用函数或过程:

  • 指定函数或过程的路径:
    • 如果要在 ESQL 文件中复用函数或过程,请提供标准引用或包含定义该路径的 PATH 语句。

      如果定义了路径,请在函数编码所在的 ESQL 文件中(而不是在任何 MODULE 中)编码 PATH 语句。

    • 如果要在映射文件中复用函数,请执行下列其中一个步骤:
      • 在组合表达式编辑器中限制函数。
      • 在“大纲”视图中选择组织模式引用。 这会检测相关 PATH 并自动更新引用。
      • 在“大纲”视图中选择修改模式引用。 然后,您可以选择定义函数的模式。
      (您不能在映射文件中复用过程。)
  • 在定义和使用函数和过程项目之间设置引用。