第六章 ObjectScript 标识符的规则和指南

文章目录

第六章 ObjectScript 标识符的规则和指南

例程名称和标签的规则

对于例程的名称或标签,ObjectScript 中适用以下规则:

  • 第一个字符必须是字母或百分号 (%)。
  • 如果例程名称以 % 开头,则使用 z 或 Z 作为其后的下一个字符。
  • 其余字符必须是字母或数字(有一个例外;请参阅下一个项目符号)。这些其他字符可能包括 ASCII 128 以上的任何字母字符。
  • 例程的名称可以包含一个或多个句点 (.) 字符,但不能作为第一个或最后一个字符。
  • 名称区分大小写。
  • 例程名称的前 255 个字符内必须是唯一的(在适当的上下文中)。
  • 标签的前 31 个字符内必须是唯一的(在适当的上下文中)。

请注意,某些 Z 和 %Z 例程名称是保留供使用的。

保留的例程名称使用

IRIS 保留以下例程名称供使用。这些例程并不存在,但是如果定义了它们,系统会在特定事件发生时自动调用它们。

  • ^ZWELCOME 例程旨在包含在终端启动时执行的自定义代码。请参阅使用终端。
  • ^ZAUTHENTICATE 和 ^ZAUTHORIZE 例程旨在包含用于身份验证和授权的自定义代码(以支持委托身份验证和委托授权)。对于这些例程, IRIS 提供了模板。请参阅使用委派授权和委派身份验证。
  • ^ZMIRROR 例程旨在包含在使用 IRIS 镜像时自定义故障转移行为的代码。请参阅高可用性指南。
  • ^%ZSTART 和 ^%ZSTOP 例程旨在包含在发生某些事件(例如用户登录时)时执行的自定义代码。这些例程不是预定义的。如果定义了它们,系统可以在这些事件发生时调用它们。请参阅使用 ^%ZSTART 和 ^%ZSTOP 例程自定义启动和停止行为。
  • ^%ZLANGV00 和其他名称以 ^%ZLANG 开头的例程旨在包含自定义变量、命令和函数。请参阅使用 `%ZLANG 例程扩展语言。
  • 如果使用 ^JCONVERT 例程,则 ^%ZJREAD 例程旨在包含操作日志文件的逻辑。请参阅日记。

类名规则

对于任何类,完整的类名具有以下形式:packagename.classname

类名的规则如下:

  • packagename(包名)和classname(短类名)必须以字母或百分号(%)开头。

如果包名称以 % 开头,请使用 z 或 Z 作为其后的下一个字符。

  • 包名可以包含句点。

如果是这样,则紧接在任何句点之后的字符必须是字母。

每个以句点分隔的包名称都被视为子包名称,并遵守唯一性规则。

  • 其余字符必须是字母或数字,包括 ASCII 128 以上的字母字符。
  • 包名和短类名必须是唯一的。同样,任何子包名称在父包名称中都必须是唯一的。

请注意,系统会保留定义每个类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。然而,两个标识符不能仅在大小写上不同。例如,出于唯一性的目的,标识符 id1 和 ID1 被认为是相同的。

  • 有长度限制:

包名称(包括所有句点)的前 189 个字符内必须是唯一的。

短类名称的前 60 个字符内必须是唯一的。

要避免的包、类和模式名称

对于持久类,请避免使用 SQL 保留字作为类的短名称。

如果使用 SQL 保留字作为类的短名称,则需要为该类指定 SqlTableName 关键字。另外,短类名和 SQL 表名之间的不匹配在以后阅读代码时需要更加小心。

避免使用以下包名称(取决于命名空间)。也不要使用它们作为模式名称。

  • 在任何命名空间中,请避免使用包名称 IRIS。这是保留供 InterSystems 使用的。

  • 在任何命名空间中,都应避免使用包名信息。这是一个映射到所有命名空间的系统包。

  • 在任何启用互操作性的命名空间中,请避免使用包名称 Ens、EnsLib、EnsPortal 和 CSPX。这些软件包在升级过程中被完全替换。如果在这些包中定义类,则需要在升级之前导出这些类,然后在升级后导入它们。

  • 在任何启用互操作性的命名空间中,避免以 Ens 开头的包名称(区分大小写)。有关更多信息,请参阅开发产品中的环境注意事项。

  • 在 HealthShare 命名空间中,避免使用包名称 HS、HSFHIR、HSMOD 和 SchemaMap

类成员命名规则

对于类成员,除非该项目的名称被分隔,否则该名称必须遵循以下规则:

  • 该名称必须以字母或百分号 (%) 开头。

对于映射到 SQL 的类成员,还有一个额外的考虑因素(例如,这包括持久类的大多数属性)。如果第一个字符是 %,则第二个字符必须是 Z 或 z。

  • 其余字符必须是字母或数字,包括 ASCII 128 以上的字母字符。

  • 成员名称必须是唯一的(在适当的上下文中)。

请注意,系统会保留定义类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。但是,两个类成员的名称不能仅大小写不同。例如,出于唯一性的目的,标识符 id1 和 ID1 被认为是相同的。

  • 方法或属性名称的前 180 个字符内必须是唯一的。
  • 属性名称和属性上的任何索引的组合长度不应超过 180 个字符。
  • 每个成员的全名(包括非限定成员名和全类名)必须小于或等于 220 个字符。
  • 强烈建议不要为两个成员提供相同的名称。这可能会产生意想不到的结果。

此外,成员名称可以被分隔。要创建分隔成员名称,请对名称的第一个和最后一个字符使用双引号。然后名称可以包含否则不允许的字符。例如:

java 复制代码
Property "My Property" As %String;

应避免使用的成员名称

对于持久类,避免使用 SQL 保留字作为成员的名称。

如果对这些名称之一使用 SQL 保留字,则必须执行额外的工作来指定如何将类映射到 SQL。例如,对于属性,需要指定 SqlFieldName 关键字。另外,类中的标识符与 SQL 中的标识符不匹配,以后阅读代码时需要更加小心。

有关 SQL 保留字的列表,请参阅保留字。请注意,此列表包含许多名称以 % 开头的项目,例如 %SQLUPPER 和 %FIND。此类项目是 SQL 的 InterSystems 扩展,并且可能会在未来版本中添加其他扩展。

IRISSYS 中的自定义项目

可以在 IRISSYS 数据库中创建项目。升级后,某些项目将被删除,除非它们遵循自定义项目的命名约定。

要将代码或数据添加到此数据库以便项目不被覆盖,请执行以下操作之一:

  • 转到 %SYS 命名空间并创建项目。对于此命名空间,默认例程数据库和默认全局数据库都是 IRISSYS。使用以下命名约定可以防止项目受到升级安装的影响:

    • 类:以 Z 或 z 开头的包
    • 例程:名称以 Z、z、%Z 或 %z 开头
    • 全局变量:名称以 ^Z、^z、^%Z 或 ^%z 开头
  • 在任何命名空间中,创建具有以下名称的项目:

  • 例程:名称以 %Z 或 %z 开头

  • 全局变量:名称以 ^%Z 或 ^%z 开头

由于任何名称空间中的标准映射,这些项目将写入 IRISSYS。

MAC 代码和包含文件不受升级影响。

相关推荐
风若飞2 小时前
Spring Ai 入门遇到问题1
java·后端·spring
Nuanyt2 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
黑马程序员毕设3 小时前
基于 Java 的餐饮点餐系统设计与应用报告
java·开发语言
SL_staff3 小时前
从文档工具到知识中枢:基于JVS数字底座构建企业级统一内容管理平台的技术实践
java·开源·全栈
SL_staff3 小时前
从‘连得上’到‘管得好’:JVS-IOT双引擎驱动设备运维闭环
java·物联网·产品
这个DBA有点耶4 小时前
信创场景下数据同步软件怎么选?对比开源CDC与原生闭环工具的结构性差异
数据库·mysql·架构
多客:duokelijie4 小时前
代练订单系统选型思路:跨品类游戏接入、订单分层管理、自动结算逻辑拆解!
数据库·mysql·微信小程序·前端框架·uni-app·php·持续部署
PingCAP4 小时前
平凯星辰上榜!2026 年胡润全球独角兽企业
数据库