第二十一章 调用Callout Library函数 - 使用$Z

2024-01-11  本文已影响0人  Cache技术分享

第二十一章 调用Callout Library函数 - 使用$ZF(-6)接口封装库函数

使用$ZF(-6)接口封装库函数

$ZF(-6) 接口编写一个示例非常简单,其工作方式与 $ZF(-5) 接口的示例类似(请参阅前面的“使用 $ZF(-5) 通过系统 ID 访问库”在本章中),但这并不能证明使用 $ZF(-6) 的优点。相反,本节将介绍 ObjectScript 类,这些类允许最终用户执行完全相同的任务,而无需了解有关标注库的内容或位置的任何信息。

$ZF(-5) 示例调用Calloutinputlibrary.dlloutputlibrary.dll 中的函数来处理一些实验数据并生成可用于绘制图形的二维数组。本节中的示例使用以下 ObjectScript 代码执行相同的任务:

ObjectScriptUser.SystemIndex

Class User.SystemIndex Extends %Persistent
{
/// Defines system index table entries for the User.GraphData libraries
ClassMethod InitGraphData() As %Status
{
 // For each library, delete any existing system index entry and add a new one
    set sc = $ZF(-4,4,..#InputLibraryID)
    set sc = $ZF(-4,5,..#InputLibraryID,"c:\intersystems\iris\bin\inputlibrary.dll")
    set sc = $ZF(-4,4,..#OutputLibraryID)
    set sc = $ZF(-4,5,..#OutputLibraryID,"c:\intersystems\iris\bin\outputlibrary.dll")
    quit 0
}

Parameter InputLibraryID = 100;
Parameter OutputLibraryID = 200;
}

User.GraphData 类允许最终用户调用库函数,而无需了解有关实际 Callout 库的任何信息。

ObjectScriptUser.GraphData

Class User.GraphData Extends %Persistent
{
/// Gets library IDs and updates the system index table for both libraries.
Method Init() As %Status
{
    set InLibID = ##class(User.GraphDataIndex).%GetParameter("InputLibraryID")
    set OutLibID = ##class(User.GraphDataIndex).%GetParameter("OutputLibraryID")
    quit ##class(User.SystemIndex).InitGraphData()
}
Property InLibID As %Integer [Private];
Property OutLibID As %Integer [Private];

/// Calls function "FormatData" in library "inputlibrary.dll"
Method FormatData(rawdata As %Double) As %String
{
    quit $ZF(-6,..InLibID,1,rawdata)
}
/// Calls function "RefineData" in library "outputlibrary.dll"
Method RefineData(midvalue As %String) As %String
{
    quit $ZF(-6,..OutLibID,1,midvalue)
}
/// Calls function "PlotGraph" in library "outputlibrary.dll"
Method PlotGraph(datapoint As %String, xvalue As %Integer) As %String
{
    quit $ZF(-6,..OutLibID,2,datapoint,xvalue)
}
/// Unloads both libraries
Method Unload() As %String
{
    set sc = $ZF(-4,4,..InLibID)   // unload "inputlibrary.dll"
    set sc = $ZF(-4,4,..OutLibID)   // unload "outputlibrary.dll"
    quit 0
}
}

以下示例演示了最终用户如何使用 User.GraphData 中的方法。 GetGraph() 方法使用 Callout 库执行与 $ZF(-5) 接口示例中的 GraphSomeData() 方法完全相同的任务(请参阅前面的“使用 $ZF(-5) 通过系统 ID访问库”)本章),但它不直接调用任何$ZF` 函数:

上一篇下一篇

猜你喜欢

热点阅读