文章目录
- 第五十七章 开发Productions - ObjectScript Productions - 不常见的任务 - 以编程方式使用查找表
- `TableName`
- `KeyName`
- `DataValue`
- `%ClearTable()`
- `%Import()`
- `%Export()`
- 定义自定义存档管理器
第五十七章 开发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
另一种选择是使用企业消息库,它使能够存档来自多个产品的消息。有关概述,请参阅定义企业消息库。