使用HOOK定制Schema是ClearQuest的最强大之处,了解Field
and Action Hooks的执行顺序,才能正确的使用Field Hook和Action Hook。以下根据ClearQuest的Administrator's
Guide中相关章节总结。
ClearQuest 按预定的时间和顺序运行action hooks。当打开一个record时,将有四个hook执行时机。
- 当触发Action时
- 当设定Field值时
- 当校验Record时
- 当提交Record时
当触发Action时
当用户触发一个Action时,ClearQuest按如下顺序运行以下hooks:
1. Action Access Control hook
在这里可检查用户的访问权限。当用户无权触发action时,中止action的处理。这种情况下,剩下的hooks将不再被处理。
2. Field Permission hook
这里决定各filed的行为,是必填,可选还是只读。
3. Action Initialization hook
这里可执行一些初始化任务,比如在ClearQuest正式执行action之前设定各field取值。
4. Field Default Value hook
为各自field设定初值(只对Submit action有效)
5. Field Validation hook
可在这里校验各field的内容。
6. Field Choice List hook
当某个field的Choice List中hook设定为Recalculate Choice List选项时将运行该hook。
当设定Field值时
当用户编辑一个record时,ClearQuest按如下顺序运行hooks:
1. Field Value Changed hook
当field取值改变时运行该hook
2. Field Validation hook
3. Field Choice List hook
当校验Record时
在提交变更到数据库之前,ClearQuest通过如下hooks来校验record。Hooks运行顺序如下:
1. Field Validation hook
2. Action Validation hook
当某Action 执行之后运行该hook
当提交Record时
提交阶段的hook的执行时机是在数据库根据当前record的变化更新之后,而非更新之前。所以我们不能使用提交阶段的hook来修改当前的record;这样的修改是无效的。
一般提交阶段hook用来处理当某action与另一个record属于同一数据库事务的情况。比如,当父级defect被处理后,把与之关联的duplicate
defect也处理完。
当ClearQuest校验完一个record,它把record提交至数据库,并按如下顺序执行hooks:
1. Action Commit hook
2. Action Notification hook 执行。例如,ClearQuest可能根据你设定的email规则发送email消息到某用户。
|