度量值是信息载体,在监控上下文中通常是业绩度量。
度量值可用于定义关键业绩指标 (KPI) 的计算,针对业务目标对业绩进行度量。
度量值示例包括:流程的运行持续时间、分配给任务的用户名称、供应商的响应时间以及保险流程中的风险评估步骤成本。
例如,您创建名为
Order Cost 的度量值来衡量每个订单处理流程实例的订单成本。
一般来说,每次订单处理流程运行时均会生成一个不同的结果。例如,对于流程的三个实例,订单成本可能有以下值。
| 实例 |
订单成本 |
| 1 |
175.00 |
| 2 |
145.50 |
| 3 |
125.75 |
要查找多个流程订单成本的平均值、最大值、最小值或总值,请创建使用聚集函数(如平均或总计)并指向 Order
Cost 度量值的 KPI。您可以创建名为 Average
Order Cost 和 Total Order Cost 的 KPI。
可根据其他值来确定度量值,如入站事件的属性或计数器的值。还可根据一个或多个计算结果来确定。例如,如果有名为 Shipping Date 和 Order
Date 的两个度量值,这两个度量值均从入站事件属性中获取值,那么您还有一个 Shipping Duration 度量值,此值是 Shipping Date 减去 Order Date 的值,为您提供每个流程实例的发货期限。
度量值表达式
所有度量值均与一个或多个表达式相关联,这些表达式用于定义度量值如何获取其值。每个表达式还可拥有一个触发器。
出现以下任何事件时对度量值表达式进行求值:
- 触发器触发(如果有触发器)。
- 表达式中引用的入站事件出现。
如果度量值表达式引用了入站事件,那么仅当此入站事件出现时对表达式进行求值。度量值表达式至多可引用一个入站事件。
- 度量值表达式中引用的度量值或计数器进行更新。如果度量值表达式没有触发器,也没有引用入站事件,那么当表达式中引用的度量值或计数器更新时对表达式进行求值(即使更新不会产生新值)。
可能由于以下某种原因想要使用触发器:
- 不希望度量值频繁更新。
- 希望在计算度量值时对秒表值进行求值。
- 希望在计算度量值之前能够确保拥有全部所需值。
例如,如果您拥有由表达式
metric A / metric B 计算出的
metric C,那么要先确保
metric
B 不为 0,然后再更新表达式。还可能拥有跟踪某任务状态的度量值,且该度量值拥有不同的值(如
started 和
stopped),这些值在检测到报告任务状态更改的事件时通过触发器控制的表达式来设置。
度量值表达式可引用监控上下文中的其他度量值。还可使用事件附带的值。除系统定义的函数外,可在度量值计算中采用用户定义的 XML 路径语言 (XPath) 函数。
以下示例显示如何为名为 Time To Fulfill、Total Cost、Average Cost 和 Running Time 的度量值定义度量值表达式:
- Time To Fulfill: ShippingDate - OrderDate
- Total Cost: TotalCost + ItemCompletedEvent/extendedData/ItemCost
- Average Cost: if (itemCount gt 0) then totalCost div itemCount
else 0
- Running Time: current-time() - TimeProcessStarted
如果使用 Oracle 数据库和所需度量值对空字符串进行求值,会尝试在数据库列中存储 NULL 值,这将导致在运行时出现错误。如果要使用 Oracle 数据库,请确保值表达式不会对空字符串求值。