文章
· 七月 13, 2023 阅读大约需 3 分钟

第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表

第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表

IRIS 提供了名为 Lookup() 的实用函数,以便可以轻松地从业务规则或 DTL 数据转换中执行表查找。此功能仅在创建至少一个查找表并用适当的数据填充后才起作用。

有关定义查找表的信息,请参阅配置产品中的定义数据查找表。

如果需要比管理门户提供的更直接的查找表操作,请在类中使用 Ens.Util.LookupTable。此类公开查找表以通过对象或 SQL 进行访问。此外,它还提供类方法来清除表、将数据导出为 XML 以及从 XML 导入数据。

Ens.Util.LookupTable提供以下字符串属性:

TableName

查找表的名称,最多 255 个字符。可以通过在 IRIS 门户中选择“互操作性”、“配置”和“数据查找表”,然后选择“打开”来查看命名空间中定义的查找表。

KeyName

查找表中条目的键,最多 255 个字符。这是互操作性 > 配置 > 数据查找表页面上键字段的值。

DataValue

查找表中与此键关联的值,最多 32000 个字符。这是互操作性 > 配置 > 数据查找表页面上的值字段中的值。

示例 SQL 查询是:

SELECT KeyName,DataValue FROM Ens_Util.LookupTable WHERE TableName = 'myTab'

Ens.Util.LookupTable还提供了以下类方法:

%ClearTable()

删除指定查找表的内容。

  do ##class(Ens.Util.LookupTable).%ClearTable("myTab")

%Import()

从指定的 XML 文件导入查找表数据。要成功导入,文件必须使用与此类的 %Export() 方法提供的相同的 XML 格式。

  do ##class(Ens.Util.LookupTable).%Import("myFile.xml")

%Export()

将查找表数据导出到指定的 XML 文件。如果该文件存在, IRIS 会用新数据覆盖它。如果该文件尚不存在, IRIS 将创建它。以下示例仅导出指定查找表 myTab 的内容:

  do ##class(Ens.Util.LookupTable).%Export("myFile.xml","myTab")

以下示例导出命名空间中所有查找表的内容:

  do ##class(Ens.Util.LookupTable).%Export("myFile.xml")

生成的 XML 文件类似于以下示例。请注意,所有表中的所有条目都显示为单个 <lookupTable> 元素内的同级 <entry> 元素。

<?xml version="1.0"?>
<lookupTable>
  <entry table="myOtherTab" key="myKeyA">aaaaaa</entry>
  <entry table="myOtherTab" key="myKeyB">bbbbbbbbb</entry>
  <entry table="myTab" key="myKey1">1111</entry>
  <entry table="myTab" key="myKey2">22222</entry>
  <entry table="myTab" key="myKey3">333333</entry>
</lookupTable>

对于每个 <entry>,表属性标识包含该条目的表。 key 属性给出了键的名称。 <entry> 元素的文本内容提供条目的值。

除了上述 XML 格式之外,还可以使用 SQL 导入向导导入列出表和键的逗号分隔值 (CSV) 文件。

定义自定义存档管理器

对于 IRIS,管理门户提供了一个名为 Archive Manager 的工具;这在管理制作中进行了描述。可以定义和使用自定义存档管理器。为此,请创建一个类,如下所示:

  • 可以使用 Ens.Archive.Manager作为超类。
  • 它必须定义DoArchive()方法,该方法具有以下签名:
ClassMethod DoArchive() As %Status

另一种选择是使用企业消息库,它使能够存档来自多个产品的消息。有关概述,请参阅定义企业消息库。

讨论 (0)1
登录或注册以继续