method %OnExecute() as %Status
このメソッドで、必要に応じた任意のロジックを使用してクエリを定義します。次に %seriesCount、%seriesNames、および %data の各プロパティを設定します。
例
以下は、ハードコードされた値の単純な例を示しています。
Method %OnExecute() As %Status
{
Set ..%seriesCount=3
Set ..%seriesNames(1)="alpha"
Set ..%seriesNames(2)="beta"
Set ..%seriesNames(3)="gamma"
Set ..%data(1,"property1")=123
Set ..%data(1,"property2")=100000
Set ..%data(1,"property3")=1.234
Set ..%data(2,"property1")=456
Set ..%data(2,"property2")=200000
Set ..%data(2,"property3")=2.456
Set ..%data(3,"property1")=789
Set ..%data(3,"property2")=300000
Set ..%data(3,"property3")=3.789
Quit $$$OK
}
キャッシュ可能な KPI の定義
既定では、MDX クエリを使用する KPI は、(他のすべての MDX クエリと一緒に) キャッシュされます。このキャッシュは、目的に対して十分に最新である場合と最新ではない場合があります。すなわち、このセクションで説明するように、KPI を明示的にキャッシュすることもできます。
既定では、非 MDX KPI はキャッシュされません。
KPI を変更して結果がキャッシュされるようにするには、以下の変更を KPI クラスに適用します。
-
CACHEABLE クラス・パラメータを 1 に指定します。
-
%OnComputeKPICacheKey() メソッドを実装します。
Method %OnComputeKPICacheKey(Output pCacheKey As %String,
pQueryText As %String = "") As %Status
pQueryText は KPI クエリのテキスト、pCacheKey はキャッシュされた結果に関連付けられる一意のキーです。通常、これはクエリ・テキストのハッシュ化した値です。
-
%OnComputeKPITimestamp() メソッドを実装します。
Method %OnComputeKPITimestamp(ByRef pTimestamp As %String,
pSourceType As %String,
pQueryText As %String = "") As %Status
pSourceType はクエリ・タイプを示す文字列 ("mdx"、"sql"、または "manual")、pQueryText は KPI クエリのテキスト、pTimestamp は KPI のタイムスタンプです。
%OnComputeKPITimestamp() が、指定された KPI に対して、指定されたキーの KPI キャッシュに格納されている同じタイムスタンプを返す場合、システムはキャッシュされた値を使用します。それ以外の場合、システムは KPI を返します。
既定では、%OnComputeKPITimestamp() は分単位の精度のタイムスタンプを返します。これは、既定では、キャッシュは (最大) 1 分間保持されることを意味します。
指定された KPI のキャッシュをクリアするには、その %ClearKPICache() メソッドを呼び出します。
FORCECOMPUTE パラメータを指定すると、CACHEABLE が設定されている場合でも、KPI がキャッシュされないことに注意してください。
非同期 KPI の定義
プラグインを除けば、KPI は同期的に実行されます。
KPI を変更して非同期に実行されるようにするには、以下の変更を KPI クラスに適用します。
-
ASYNC クラス・パラメータに 1 を指定します。
-
さらに、KPI を変更して、その結果がキャッシュされるようにします。前のセクションを参照してください。
これは、システムに結果を格納する場所を用意するために必要です。
-
%OnCompute() 内で、必要に応じて %SetPercentComplete() を呼び出して、処理状態を通知します。詳細は、"完了状態の通知" を参照してください。