除已知的 VBScript 语法外,业务逻辑公式可以包含如下所示的一些特殊过程:
在计算开始时调用一次。 可用于初始化全局变量。
每个跟踪期结束时调用一次。 跟踪期已经结束时,IsCompleteRecord 为 True;在进行中间计算时,IsCompleteRecord 为 False。
每个新跟踪期开始时调用一次。
将事件与用户定义的过程相关联的强制性过程。 在度量标准计算开始时计算引擎调用一次 OnRegistration。
通过使用 Dispatcher 对象的方法将事件与过程相关联,如下所示:
通过此属性,用户可了解 Onregistration 方法是随实际计算运行还是在基础架构处理期间运行。 此属性非常实用,因为有时客户在 OnRegistration 方法中使用了大量代码。 此代码对注册没有影响,但是只要资源结构发生了变化,就必须运行它(即,需要在 OnRegistration 方法内运行)。
用户通常保留一份资源结构映射,供计算使用。 由于资源结构是动态的,因此在资源结构更改时映射中的结构也应该更新。 每当资源结构更改时,就会调用注册函数。
然而,填充映射与注册目的无关。 意思是说,填充映射降低了 OnRegistration 函数的性能。 在运行时这并不显著,因为不经常发生。 但在基础架构处理期间,此过程会多次出现,从而导致明显的性能下降,没有任何好处。
实际上,仅在系统进行实际计算时才需要运行该代码。 通过“IsRuntimeMode”属性,客户可发现该代码是否需要运行。
在资源结构更改时必须运行的填充代码及所有其他初始化任务(但与实际注册无关)可以在单独函数中完成。
在以下两部分的示例 1 中,第一个例程 (OnRegistration(dispatcher)) 包含的代码与注册相关,必须保留在 OnRegistration 函数中。 第二个例程 (New) 包含的代码与注册无关,可放置在 New 函数中:
示例 1
Sub OnRegistration(dispatcher) Dim MyResource MyResource = Context.ClusterItem Dispatcher.RegisterByResource "OnEvent", "My Event Type", MyResource End Sub
Sub New Dim ThisResourceMap Set GlobalResourceVector= CreateObject("SlalomVector.Vector") Dim resource Set ThisResourceMap = Context.ResourcesOfResourceGroup(Context.ClusterItem) For Each resource In ThisResourceMap GlobalResourceVector.Add resource Next End Sub
示例 2
Sub OnRegistration(dispatcher) Dispatcher.RegisterByResource "OnEvent", "my event type", "my resource" Dim a For a = 1 to 1000000: next End Sub
此代码可能无缘无故就会对处理计算阶段的基础架构产生不利影响。
您可以改为使用以下代码:
Sub OnRegistration(dispatcher) Dispatcher.RegisterByResource "OnEvent", "my event type", "my resource" If (dispatcher.IsRuntimeMode) then Dim a For a = 1 to 1000000: next End If End Sub
注意:不再使用此方法。
此方法支持注册由特定度量标准发送的事件。 此方法接收以下参数:
在事件到达时要调用的方法的名称。
此注册接收的事件类型。
在其上发送事件的资源或资源组或者“Context.ClusterItem”的名称。 此参数可以包含空字符串 ("")。 在此情况下(包含空字符串),将对发送至所有资源(SendEvent 中)的事件执行注册。
此参数定义了当前度量标准注册是仅接收来自跟踪代理的度量标准事件(这种情况下应提供的值为“tracking”),还是接收来自所有代理的事件(当前度量标准的每个工作代理都从发送度量标准的相应代理接收事件。 例如,每小时代理接收来自每小时代理的事件,每日代理接收来自每日代理的事件,等等。这种情况下应提供的值为“equivalent”。 两个可能的值为“tracking”和“equivalent”。
要从其接收事件的度量标准的名称。
上述度量标准所属的合同的名称。 此参数是可选的 - 若未提供,则也不提供 ContractPartyName (请参阅下文)。 如果未指定这些参数,系统将假定 MetricName 属于当前合同。
上述合同所属的合同方的名称。 此参数是可选的。 如果未提供该参数,系统将假定 ContractName 与当前合同属于同一个合同方。
注意:“ProcedureName”=“MethodName”,“EventType=EventTypeName”
在进入时间段时调用。
在退出时间段时调用。
版权所有 © 2012 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |