条件结构和元素
本节描述条件的结构以及可以包含的元素。
IssueFieldCondition 元素
利用项字段条件,您可以将更改包的审阅与更改包相关项中的字段值相关联。由此,如果某些指定字段具有指定值,您可以指定审阅者。IssueFieldCondition 表达式支持所有项字段。此外,在指定字段值时允许使用常规表达式。
IssueFieldCondition 元素有两个必须指定的属性:fieldNameoperator。此外,IssueFieldCondition 必须后跟 FieldValueUserFieldValueGroupFieldValue 中的一个元素。通过 fieldName 属性,您可以指定要在表达式中使用的字段名称。通过运算符属性,您可以指定在比较字段值时要使用的运算符。目前支持 EqualNotEqual 两个运算符。在常规表达式中,这些运算符分别表示“匹配”和“不匹配”。如果该字段值的类型是组 (用户),运算符 Equal 表示“是组中的用户”。所有比较均区分大小写。
如果字段值的类型是用户,IssueFieldCondition 元素后面必须后跟 UserFieldValue 元素。如果类型是组 (用户),IssueFieldCondition 元素后面必须后跟一个 GroupFieldValue。在所有其他情况下,IssueFieldCondition 元素后跟 FieldValue 元素。
FieldValue 元素包含可选属性 regularExpression,可以设置为 TrueFalse。因此在比较字段值时,您可以指定是否要使用常规表达式。默认值为 False;但是,如果您将属性值设置为 True,则指定的字段值可以是用于匹配实际字段值的常规表达式。
例如,条件“如果与我们正在审阅的更改包关联的项的项目字段值为 SI/GUI/Diff”,则写为:
<IssueFieldCondition fieldName="Project" operator="Equal">
<FieldValue>
SI/GUI/Diff
</FieldValue>
</IssueFieldCondition>
如果您想审阅所有 GUI 项目,这种情况下的条件将是“如果项的项目字段匹配 .*swing.*" 表达式”,写为:
<IssueFieldCondition fieldName="Project" operator="Equal">
<FieldValue regularExpression="True" >
.*swing.*
</FieldValue>
</IssueFieldCondition>
另一个示例是条件“如果项由组用户 Co-op 创建”,可以写为:
<IssueFieldCondition fieldName="Created User" operator="Equal">
<GroupFieldValue>
Co-op
</GroupFieldValue>
</IssueFieldCondition>
错误和消息
如果您指定一个 IssueFieldCondition 并且审阅的更改包没有与之关联的项,则默认为满足条件。如果项字段条件中指定的字段名称不存在,则记录错误;但仍视为满足条件。如果 FieldValue 使用常规表达式,但表达式格式错误并在匹配完成时导致异常,则记录错误并匹配表达式。
ChangePackageFieldCondition 元素
利用 ChangePackageFieldCondition 元素,您可以将更改包的审阅与更改包字段值相关联。以下字段有效:汇总、用户 (更改包创建者) 和说明。与 IssueFieldCondition 一样,ChangePackageFieldCondition 包含 fieldNameoperator 属性,并且两者具有相同的含义和限制。
如果您指定某个字段名称不受支持,则会记录一条消息;但视为不满足条件。
ChangePackageEntryFieldCondition 元素
目前,支持的更改包条目字段有:成员、项目、存档和变型。如果为 ChangePackageEntryFieldCondition 指定了任何其他字段,则忽略并记录消息,但视为不满足条件。
MemberAttributeCondition 元素
利用成员属性条件,您可以将更改包的审阅与属于更改包成员的用户定义的特定属性值相关联。这样您可以指定审阅者条目,以防更改包的任何成员具有带指定值的属性。指定值也可以是常规表达式,在这种情况下,任何带有给定名称的属性,如果其值与常规表达式模式匹配,都满足条件。MemberAttributeCondition 支持所有用户定义的成员属性。
MemberAttributeCondition 元素包含 attributeNameoperator 属性。利用 operator 属性,您可以在比较字段值时指定要使用的运算符。目前支持 EqualNotEqual 运算符。对于常规表达式,这些运算符分别表示“匹配”和“不匹配”。attributeName 属性指定要在条件中使用的成员属性的名称。MemberAttributeCondition 必须后跟一个具有可选属性 regularExpressionMemberAttributeValue 元素。利用此元素,您可以指定成员属性应具有的值;如果您使用的是常规表达式,则可以指定实际成员属性值应匹配的常规表达式模式。
审阅者元素
利用 Reviewers 元素,您可以指定要使用的枚举策略 (目前,仅支持 All 策略)、要使用的投票策略 (目前,仅 UnOrdered 受支持) 以及如何处理被拒绝的审阅。指定这些策略后,利用 Reviewers 元素可以指定单个 UserGroup 审阅者或指定用户或组审阅者应来自项字段。
UserExpressionGroupExpression 的情况下,如果没有与正在审阅的更改包相关联的项,则会记录一条消息;当没有审阅者并且项字段不是相应类型时,会记录一条出错消息,不返回审阅者。
所有直接从 UserGroup 标记获得的审阅者或从 Issue 字段解析的审阅者根据域进行验证。如果某个用户或组可在所有审阅者列表中找到,但无法在域中找到,则会记录错误并忽略审阅者。
审阅者规则
审阅者规则由可选条件和审阅者表达式组成。如果不存在审阅条件,则默认认为满足条件 (不存在),并且返回审阅者表达式中指定的所有审阅者。如果指定了条件,则根据提交的具体更改包及其相关项 (如有) 对其进行求值。如果满足条件,则返回审阅者表达式中的审阅者,否则不返回审阅者。
这对您有帮助吗?