Manifest也许应该被翻译成“清单”, 字典上是这么解释的: 提供船舶及其货物和其他物品、乘客和船员的全面细节的文件,供海关官员使用,比如:飞机上的乘客或货物清单; 一辆货运列车的车厢清单。
在计算机语言中, Manifest可以是各种格式,用的最多的是xml和json,在IRIS中,manifest是xml格式的, 放在objectscript类的XDATA块里。
编写mainfest
IRIS用manifest来做配置。内部工具*%install*, 会读取manifest, 生成真正的objectscript代码来配置IRIS。我们来看个基本的例子。
基本用法
下面的User.Manifest.cls` ,它配置了IRIS的global buff, bbsize等等, 然后还创建了一个命名空间。
Include %occInclude
Class User.Manifest
{
ClassMethod setup(ByRef pVars, pLogLevel As %Integer = 3, pInstaller As %Installer.Installer, pLogger As %Installer.AbstractLogger) As %Status [ CodeMode = objectgenerator, Internal ]
{
Quit ##class(%Installer.Manifest).%Generate(%compiledclass, %code, "MyInstall")
}
XData MyInstall [ XMLNamespace = INSTALLER ]{
<Manifest>
<SystemSetting Name="Config.config.gmheap" Value="50000"/>
<SystemSetting Name="Config.config.locksiz" Value="5000000"/>
<SystemSetting Name="Config.config.routines" Value="256"/>
<SystemSetting Name="Config.config.globals8kb" Value="600"/>
<SystemSetting Name="Config.config.wijdir" Value="/cache/wij"/>
<SystemSetting Name="Config.Journal.CurrentDirectory" Value="/journal1"/>
<SystemSetting Name="Config.Journal.AlternateDirectory" Value="/journal2"/>
<SystemSetting Name="Config.Miscellaneous.EnableLongStrings" Value="1"/>
<Namespace Name="TUOTANTO" Create="yes" Code="TUOTANTO-R" Data="TUOTANTO-D">
<Configuration>
<Database Name="TUOTANTO-R" Create="yes" Dir="/cache/database/TUOTANTO-R"/>
<Database Name="TUOTANTO-D" Create="yes" Dir="/cache/database/TUOTANTO-D"/>
</Configuration>
</Namespace>
</Manifest>
}
}