第三十七章 ObjectScript Productions -
2023-06-23 本文已影响0人
Cache技术分享
第三十七章 ObjectScript Productions - Defining Business Metrics - 定义多实例业务指标
定义多实例业务指标
要定义多实例业务度量,请执行以下操作:
- 遵循上一节中的说明,只是实现
OnCalculateMetrics()
的细节略有不同。 - 定义实例名称。为此,可以:
- 定义一组静态实例名。为此,请实现
OnGetInstances()
方法,为数组分配一个固定的名称列表。如果实例集是静态的,这种方法很有用。 - 动态定义实例名称。为此,添加一个
MetricInstances()
查询,从SQL
数据库的一列中获取名称列表。如果希望项目的数量或名称会随着时间的推移而改变,这种方法很有用。 - 结合这些方法。使用
MetricInstances()
查询获取初始列表,然后使用OnGetInstances()添
加或替换名称。(业务度量实例首先调用MetricInstances()
,然后调用OnGetInstances()
。
- 定义一组静态实例名。为此,请实现
- 在
OnCalculateMetrics()
的实现中,检查%Instance
属性的值,并将值分配给适合该实例的业务度量属性。 - 请记住以下原则:
- 实例名是字符串。
- 实例名必须唯一。
- 实例名称可能会在仪表板上显示给用户,因此请使用简洁、信息丰富且适当的名称。
- 尽量保持实例数量合理。成千上万个实例的计算成本可能很高,用户也很难理解。
定义一组静态实例名
若要定义一组静态实例名,请重写OnGetInstances()
方法。此方法通过引用传递一个数组。OnGetInstances()
方法必须使用序号作为下标用名称填充该数组,从1开始。下面是一个简单的例子:
/// Return an array of metric instances
ClassMethod OnGetInstances(ByRef pInstSet As %String) As %Status
{
Set pInstSet(1) = "Apple"
Set pInstSet(2) = "Banana"
Set pInstSet(3) = "Cherry"
Quit $$$OK
}
动态定义实例名
要动态定义实例名称集,请向业务度量类添加一个查询,如下所示:
- 该查询必须命名为
MetricInstances()
。 - 必须没有参数。
- 查询必须包含
SQL SELECT
语句。 - 查询返回的第一列返回实例名称。
例如:
/// Return current list of product names
Query MetricInstances() As %SQLQuery
{
SELECT ProductName FROM MyApplication.Product
}
为多实例指标中的属性分配值
要为多实例业务指标中的属性分配值,请实施 OnCalculateMetrics()
方法。在实施中,为每个实例设置适当的值。为此:
- 检查
%Instance
属性的值。此属性等于其中一个业务指标实例的名称。
( IRIS
自动按顺序一次处理一个实例。对于每个实例, IRIS 都会执行 OnCalculateMetrics()
实例方法。)
- 根据需要为该实例设置业务指标属性的值。
下面显示了一个例子:
Method OnCalculateMetrics() As %Status
{
// get product name
Set product = ..%Instance
// find recent sales using SQL
&SQL(SELECT SUM(Sales) INTO :sales
FROM MyApplication.Product
WHERE ProductName = :product)
// update sales metric
Set ..Sales = sales
Quit $$$OK
}
此示例在 SQL
查询中使用当前实例名称 (%Instance
) 来检索该实例的最新销售数据,然后将此数据写入该类当前实例的 Sales
属性。
注意:当您想要替换当前实例名称时,您也可以在类的其他地方使用 %Instance
属性。