了解短语


概述

任务

见于

Tivoli 更改管理的管理

概述

什么是短语?

在 Tivoli 更改管理中,规则定义短语由下列项组成:
组分 说明
Tivoli 更改管理数据库表的名称,此表包含在规则定义中要列入的字段(属性)。
属性 数据库字段,此字段包含在规则定义中要列入的数据。
运算符 <、>、=、<=、>= 和 <> 运算符之一,用来指定规则的选择标准。
用来确定规则中的选择的实际字段值。

例如,下列短语指定“状态标识”字段包含值“已完成”的所有 CHANGE 表记录:

更改:状态标识=已完成

请注意显示短语定义时,用冒号分隔表名称和属性。在“值”框中不要使用冒号。


任务

构造短语 可以使用下列运算符将单个短语组合起来并创建复合的规则短语定义。

使用“与”运算符按钮将两个短语链接起来。访问的数据必须与两个条件匹配。在插入第一个短语之后且在插入第二个短语之前选择“与”按钮。在下例中“与”运算符指定更改的状态为“已完成”且事件日期在 1999 年 3 月 31 日之前:

Change:Status_ID=completed AND Change_History:Event_Date < 03/31/99

使用“或”运算符按钮将两个短语链接起来。数据与两个短语中的一个匹配就行。在插入第一个短语之后且在插入第二个短语之前选择“或”。在下例中“或”运算符指定更改的状态为“已完成”或更改的事件日期在 1999 年 3 月 31 日之前:

Change:Status_ID=completed OR Change_History:Event_Date < 03/31/99

在插入短语前使用“非”运算符按钮将短语的“真”状态或“假”状态颠倒过来。例如,下列短语中的“非”运算符指定除处于“已完成”状态之外的所有更改。

NOT Change:Status_ID=Completed

它与下列短语等价:

Change_Status_ID<>completed

可以将“非”运算符与“和”和“或”运算符一起使用。下例指定处于“已完成”状态且事件日期大于或等于 1999 年 3 月 31 日的所有更改:

Change:Status_ID=completed AND NOT Change:Event_Date<03/31/99

  • 使用圆括号

使用圆括号按钮在列表中的短语和运算符之前、之后或之间插入圆括号。正如在数学语句中使用圆括号来控制计算的顺序一样,在这里使用圆括号来控制解释短语的顺序。

在下例中,使用圆括号来定义适用于两组更改的规则(这两组更改为:处于“已完成”状态、且事件日期在 1999 年 3 月 31 日之前的更改,以及处于“已保存”状态、且事件日期在 1999 年 3 月 31 日之后的更改):

(Change:Status_ID=completed AND Change_History:Event_Date<03/31/99) OR (Change:Status_ID=saved AND Change_History:Event_Date>03/31/99)

优化短语

Tivoli 更改管理在运行时间判定短语时,它使用下列逻辑:
  1. 如果所有连接是“与”(无“或”连接),则当第一个条件解析为“假”时,将退出判定例行程序并返回“假”作为总体条件。按从左到右的顺序判定条件。
  2. 如果所有连接是“或”(无“与”连接),则当第一个条件解析为“真”时,将退出判定例行程序并返回“真”作为总体条件。按从左到右的顺序判定条件。
  3. 如果在短语中使用了“与”和“或”连接,则必须判定整个短语,以确定总体的真/假解析结果。

使用此判定逻辑,可以优化规则短语的定义,这对运行时间性能有直接影响。如果某个短语有多个条件且连接都是“与”,则通过在此短语定义的左侧定义判定为“假”的几率最大的条件,可以节省原本用于判定其他条件的处理时间。

例如,假定:

  1. 定义规则短语来检测更改:状态标识为“已完成”、更改:成本大于 100、且更改:类别是软件的情况。

    要优化此短语的性能,应首先定义状态标识的判定,因为与所有更改事务相比,只有相对较少的状态标识判定为“已完成”。
  1. 根据您所处位置的不同,可以以任意顺序定义其余两个条件。但是如果假定大多数更改成本小于 100,且大多数更改属于软件类别,则根据这些假定,最佳规则定义是:

    Change:Status_ID = completed AND Change:Cost > 100 AND Change: Category = software
  2. 但是,如果定义此规则短语以检测以上任意条件时,则这些条件的定义顺序就正好颠倒过来。通过在规则短语中首先定义最有可能判定为真的条件,运用了早退出逻辑。

    Change:Category = software OR Change:Cost > 100 OR Change:Status_ID = completed