字段和操作挂钩的执行顺序

字段和操作挂钩在预定的时间以预定的顺序运行。

打开记录时,会出现四个挂钩执行点:

操作开始时运行的挂钩

在将更改落实到数据库之前,或收到来自 ClearQuest Web 或 RCP 客户机的验证请求时,Rational ClearQuest 软件将按以下顺序运行挂钩来验证记录:

  1. 操作访问控制挂钩检查用户访问权,如果不允许用户启动,它就会停止操作处理。 在这种情况下,剩余挂钩将不会运行。

    可以修改对操作(包括可通过应用程序包添加到模式的操作)的访问控制。 然而,对基本操作的任何访问控制限制也适用于所有其他操作。 对于嵌套操作,不会运行访问控制挂钩。

  2. “字段许可权”挂钩确定每个字段是必填的、可选的还是只读的。
  3. “操作初始化”挂钩在操作开始之前执行诸如设置字段值之类的初始化任务。
  4. “字段缺省值”挂钩设置每个字段的值(仅限“提交”操作)。
  5. “字段验证”挂钩验证每个字段的内容,但未发生验证的导入操作除外。 “字段验证”挂钩不能验证不存在的值,如还未设置值的必填字段。
  6. 将针对所有使用重新计算选项列表选项的字段运行“字段选项列表”挂钩。 如果存在有依赖关系的字段并且在创建这些字段时选择了重新计算选项列表, 那么先会运行“字段验证”挂钩,然后会运行每个字段的“字段选项列表”挂钩,直到设置并验证了所有已更改的字段为止。

    如果“字段值已更改”挂钩调用 Entity 对象的 SetFieldValue 方法,那么该字段的 VALUE_CHANGED 挂钩会在 SetFieldValue 调用时运行。

嵌套操作

当正在执行嵌套操作时,某些挂钩不会运行,包括访问控制挂钩和所有通知挂钩的执行。 有关更多信息,请参阅 IBM Rational ClearQuest API Reference 中的操作和访问控制嵌套操作中的挂钩

设置字段值时运行的挂钩

当用户编辑记录时,挂钩按以下顺序运行:

  1. 将针对每个已更改的字段运行“字段值已更改”挂钩。

    如果设置了限于列表选项而用户输入了不允许的值,那么该字段就会标记为无效。仅当用户输入有效值时,才运行下一个挂钩。

    如果“字段值已更改”挂钩调用 SetFieldValue 方法来更改另一个字段的值,那么另一个字段的“字段值已更改”挂钩会立即运行。

  2. 将针对每个字段运行“字段验证”挂钩。
  3. 将针对每个使用重新计算选项列表选项的字段运行“字段选项列表”挂钩。

    如果将有依赖关系的字段与重新计算选项列表选项一起使用, 那么会先运行“字段验证”挂钩,然后会运行每个字段的“字段选项列表”挂钩,直到设置并验证了所有已更改的字段为止。

字段挂钩仅在用户启动“提交”操作时运行,除非字段被标记为包含有依赖关系的字段。 请参阅使用挂钩来检测 Web 会话

验证记录时运行的挂钩

在将更改落实到数据库之前,Rational ClearQuest 软件通过按照以下顺序运行挂钩来验证记录:

  1. 针对记录中的每个字段运行“字段验证”挂钩。
  2. 针对已执行的操作运行“操作验证”挂钩。

落实记录时运行的挂钩

“落实”挂钩在用对当前记录的更改更新数据库之后但在更新事务落实到数据库之前运行。 不能使用“落实”挂钩来修改当前记录(例如,不能通过“落实”挂钩来更改字段)。

尽管数据库中存在锁定而且这些锁定可能会阻止其他用户运行查询、创建新记录或修改现有记录, 但“落实”挂钩中的任务还是会完成。出于性能考虑,应该尽量减少“落实”挂钩中执行的任务。

“落实”挂钩仅用于针对其他记录执行的以下操作:您希望这些操作成为主操作所在的数据库事务的一部分(例如,在解决父缺陷后解决重复的缺陷)。 必须确保在正确的上下文中发出适当的调用。例如,请勿从“落实”挂钩调用还原,也不要从除“落实”挂钩外的任何操作调用落实

验证记录之后,通过按照以下顺序运行的挂钩将它落实到数据库:

  1. 运行“操作落实”挂钩。
  2. 将事务落实到数据库。
  3. 运行“操作通知”挂钩。例如,可以将电子邮件通知发送给各种用户。

有关更多信息,请参阅 IBM Rational ClearQuest API Reference 中的编辑现有记录


反馈