解析规则
提交更改包时,服务器首先查阅策略文件,以确定审阅者列表。然后,服务器获取在 ChangePackageReviewers.xml 文件中指定的审阅者。该文件被解析一次,规则得到缓存,并且只针对不同的更改包重新求值。如果 XML 文件自上次解析后已被修改,则服务器重新解析规则,再次缓存并在对更改包条件和审阅者求值时使用新规则。用于解析审阅者规则的 XML 解析器是一个验证解析器。任何有关格式错误的 XML 表达式的解析错误都会与被解析文件的确切路径、以及 XML 文件中获取错误的确切行一起记录。此外,还会记录有关 XML 文件中语法错误的描述性出错消息。然后,您可以在不重新启动服务器的情况下更正错误。从 XML 规则文件获得的所有审阅者都会与从策略文件中获得的审阅者合并,并删除重复项。此外,所有已解析的审阅者都针对底层域进行了验证。审阅者列表与正在审阅的更改包一起存储,并用于更改包审阅流程。审阅者列表一经确定即无法更改,除非被拒并重新提交,此时会确定新的审阅者列表。
示例:解析规则
Lisa 必须审阅更改包,该更改包的项具有 SI/GUI/Diff 项目,并且 DevManager 组的一个成员必须审阅实习生做出的所有更改。如果项目与更改包相关联,并且未启用工作流和文档功能,则会报告错误,提交失败。如果更改包没有关联项,则条件的求值结果为 true。
审阅者规则如下所示:
<ReviewerRules>
<ReviewerRule>
<Condition>
<And>
<IssueFieldCondition fieldName="Project" operator="Equal">
<FieldValue>
SI/GUI/Diff
</FieldValue>
</IssueFieldValue>
</And>
</Condition>
<reviewerExpression>
<Reviewers>
<User name="lzurch"/>
</Reviewers>
</reviewerExpression>
</ReviewerRule>
<ReviewerRule>
<Condition>
<And>
<ChangePackageFieldCondition fieldName="user" operator="Equal">
<GroupFieldValue>
Coop
</GroupFieldValue>
</And>
</Condition>
<reviewerExpression>
<Reviewers>
<Group name="DevManager"/>
</Reviewers>
</reviewerExpression>
</ReviewerRule>
</ReviewerRules>
所有更改包都必须通过与项相关联的自定义 Reviewer 字段的值进行审阅。'issue.field[Reviewer]' 表达式的求值结果为审阅者,并且不是条件的一部分。利用此“全局”规则,PTC RV&S 可以有效决定更改包的审阅者。PTC RV&S 中的可编辑性和可见性规则可以控制允许谁更改 Reviewer 字段。
例如:
<ReviewerRules>
<ReviewerRule>
<reviewerExpression>
<Reviewers>
<UserExpression>
<IssueField name="Reviewer"/>
</UserExpression>
</Reviewers>
</reviewerExpression>
</ReviewerRule>
</ReviewerRules>