上一主题: 事件流

下一主题: 注册组群的度量标准

注册

注册是一个过程,在此过程中业务逻辑针对要成为计算一部分的原始数据事件的集合向计算引擎提交请求。

注册过程可通过两种方式来处理;使用注册向导或使用业务逻辑中的 Dispatcher 对象手动处理。

使用注册向导是从可用选项中进行选择的简单过程。 您将可以使用在手动注册时可用的所有相同选项,但无法使用参数。 如果需要使用参数,则必须手动执行注册。 向导的基本流程要求您首先确定要执行的注册类型,然后设置应对其注册的资源类型和事件,最终确定要用于处理收集的事件的事件处理程序。

一旦注册完成,它们将在度量标准的“注册”选项卡中列出。 还请注意,一个度量标准可能有多个注册声明。

实际上,注册向导使用的功能与手动注册相同,下一部分将对所有这些选项进行讨论。

在业务逻辑中手动执行时,OnRegistration 事件处理程序处理公式的注册。 这必须在公式中实施,并且在触发注册引擎事件时触发。 在激活合同时,会触发一次注册事件,然后每当相关资源或更改集变为活动状态时,都会触发注册事件。 如果影响度量标准要接收的事件,则认为受影响的资源中的更改是相关的。 例如,如果注册由合同方执行 (RegisterByContractParty),这意味着其资源附加到度量标准的合同方的已定义类型的所有事件都属于计算的一部分。 在此类情况下,每次在该合同方中附加或分离新资源时,都会触发注册方法,以向引擎通知更改。

注册方法由作为参数传递给 OnRegistration 的 Dispatcher 对象提供。 不同的方法提供基于事件类型定义和任何资源分配条件(如资源组的资源,或特定类型的资源)定义筛选条件的不同方式。

强烈建议使用合同方和服务注册方法,因为这样更易于使用业务逻辑作为模块或模板。 这样做时,相关的合同方和服务取自关联的度量标准定义,而且,在将公式重用于不同合同和/或服务组件时,注册不需要更改。

另一种受欢迎的注册方法是 RegisterByResourceGroup,此方法在处理在逻辑上分组但可能不总是与合同方或服务关联的资源时很方便。 此处,资源到组的分配可由资源编录来管理(单个或通过更改集),甚至可由转换脚本自动更新。

通常,注册方法在设计阶段确定,并由定义的数据模型直接驱动。

注意:为了检查是否正确使用了 Dispatcher 对象,在 SLALOM 的语法检查期间还会调用 OnRegistration 函数。 因此,我们不应假设 OnLoad 在 OnRegistration 函数之前运行,也不应使用 Context 对象的一些属性,如 OnRegistration 事件处理程序中的“TimeUnit”、“IntervalLength”、“IsPeriod”、“CorrectionsApply”和“ExceptionsApply”。

注册方法还负责使事件与将根据事件的时间戳触发的过程关联起来。 定义的过程可以具有任何名称,但总是以 eventDetails 对象作为参数。 eventDetails 对象反映了接收的原始数据事件,并将所有事件详细信息都保留为数据字段,如以下注册中所示:

Sub OnRegistration(dispatcher)
dispatcher.RegisterByContractPartyAndService "OnMemUseEvent", "MemUse", "Server"
'the parameters of the method are: <procedure name>, <Event Type>, <Resource Type>
End Sub

上面的注册声明指出,“MemUse”事件类型的所有原始数据事件以及与“Server”资源类型关联的所有原始数据事件都将发送至业务逻辑中的“OnMemUseEvent”事件处理程序。

以下过程还必须在业务逻辑的开头定义:

Sub OnMemUseEvent(eventDetails)
 If InTimeSlot And eventDetails("MemoryUsage")>MaxMemoryUse Then
       MaxMsmoryUse = eventDetails("MemoryUsage)"
     End If
End Sub

通过引用 eventDetails 对象并使用“MemoryUsage”参数,该声明从传递到函数中的事件中提取 MemoryUsage 字段的值。 这些字段与事件类型中定义的字段相同,字段名称区分大小写。