每个度量标准都具有跟踪期定义。 跟踪期是度量标准必须输出服务水平结果的期间,应将该结果与定义的目标进行比较。 为跟踪期生成的结果为业务结果,换句话说,它是提供商承诺提供的特定服务水平目标的契约结果。 针对每个期间的每个业务逻辑实例被称为“代理”,它与和每个度量标准关联的粒度直接相关。
例如,如果为度量标准定义的跟踪期为一个月,则将执行该度量标准以提供每月结果。
为了提供向下钻取功能以方便用户能在每月结果中深入查看每天结果,度量标准必须具有应按其计算的其他时间单位定义。 时间单位在度量标准的“常规详细信息”部分内的“粒度”选项卡中定义。
对于在度量标准的“粒度”选项卡中定义的每个时间单位和跟踪期,会有单独的业务逻辑实例由引擎执行。 每个实例都将执行同一业务逻辑代码,但对于每个实例,将会在不同的时间点触发 OnPeriodStart 和 OnPeriodEnd。 对于每日实例,将在每日开始和结束时触发。 对于每个时间单位,将根据时间单位的开始和结束点触发。
将执行每个业务逻辑实例,以便生成相关的时间单位结果。 此外,每个期间的结果必须考虑任何例外。 对于定义了例外但未考虑例外的任何期间,必须允许用户选择是否查看考虑或未考虑例外的服务水平结果。 由于此要求,每个度量标准都将可能具有由引擎执行的十四个代理(实例),其中两个代理用于业务结果,剩下十二个可用于另外六个运营期间。

这表示粒度定义对计算引擎的性能具有很大影响,因为不同的代理都会针对每个期间进行计算。 因此,在整体或部分不需要向下钻取功能的情况下,建议关闭一些代理。 特别是在采用低粒度(如每小时结果)时,影响尤其大。 它对于组群的度量标准也会产生巨大影响,因为引擎会对遇到的每个群项执行上面的全部计算。 实际上,它会将每个群项视为新的度量标准。 例如,在计算跨由 50 个项组成的资源组的度量标准时,与计算同一非组群的度量标准相比,引擎需要完成的工作量多 49 倍。
例如,如果将度量标准设置为计算数天内的解决时间,则每小时结果毫无意义,应在“粒度”选项卡上取消选中该选项,以避免引擎执行不必要的计算。
Context 对象的 TimeUnit 属性(即业务逻辑中的 context.TimeUnit)将返回当前执行的代理的时间单位,可能返回的值为:HOUR、DAY、WEEK、MONTH、QUARTER、YEAR。
例如,对于每日代理,Context.TimeUnit 将返回“DAY”。
对于计算跟踪期时间单位的代理,Context 对象的 IsTrackingPeriod 属性将返回 True。 请务必注意,度量标准的“粒度”选项卡中显示的代理是在度量标准跟踪期代理的基础上增加的一些代理。 因此,即使对于具有每月跟踪期的度量标准,您也可以关闭每月代理,它仍会计算每月服务水平,但仅作为“业务结果”(非运营结果)。

如上所述,各种代理通常都会执行同一业务逻辑代码,但某些情况下可能也需要应用略微不同的逻辑。
例如,针对每月计算时,结果应为每月各自的停机次数,如下所示:

深入查看每日结果时,可能需要查看累积停机时间,即每日结果为从该月开始到当日的所有天数内的结果总和。 应将此方法应用到比单月小的所有时间单位,如下所示:

两个时间单位之间的差异在于,对于计算跟踪期的代理,在每个期间开始时,停机次数将初始化为 0;对于每日代理,该计数仅在每月第一天进行一次初始化。
下面是 OnPeriodStart 事件处理程序:
Sub OnPeriodStart(time)
If InStr(“MONTH,QUARTER,YEAR”, Context.TimeUnit) > 0 _
Or (Context.TimeUnit = “DAY” And Day(time) = 1) _
Or (Context.TimeUnit = “HOUR” And Day(time) = 1 And Hour(time) = 0) Then
DownTimeCounter = 0
End If
End Sub
当关联引擎标识度量标准的最终定期结果不再有效并因此必须重新计算结果时,会执行重新计算。
重新计算可能是由以下原因导致的:
最高效的注册方法是按合同方和服务进行注册。 按合同方和服务组织资源是一种表示系统中数据层和业务层之间逻辑关系的方式。 用于不同合同或不同服务时,通过这些实体注册资源将无需对公式进行任何更改。 度量标准的当前上下文标识了合同和服务,也就定义了相关合同方和关联服务。 在此类型的注册中定义的业务逻辑公式便于重复使用,因为注册时不需要对这些公式做任何更改。
| 版权所有 © 2012 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |