欄位和動作連結鉤的執行順序

欄位和動作連結鉤是在預先決定的時間並以預先決定的順序執行。

當記錄開啟時,有四個連結鉤執行點:

當動作開始時執行的連結鉤

當使用者起始動作時,連結鉤會依下列順序執行:

  1. 動作存取控制連結鉤會檢查使用者存取權,如果不允許使用者起始它,就會停止該動作的處理。 在此情況下,剩餘連結鉤不會執行。

    您可以修改動作的存取控制,包括可透過套用套件而新增至綱目的動作。 不過,對基本動作所加諸的任何存取控制限制適用於所有其他動作。 對於巢狀動作,不會執行存取控制連結鉤。

  2. 「欄位權限」連結鉤決定每一個欄位為必要的、選用的或唯讀。
  3. 「動作起始設定」連結鉤執行起始設定作業,例如在動作開始之前設定欄位值。
  4. 「欄位預設值」連結鉤設定每一個欄位的值(僅限「提交」動作)。
  5. 除了不會發生驗證的匯入動作之外,「欄位驗證」連結鉤會驗證每一個欄位的內容。 「欄位驗證」連結鉤無法驗證不存在的值,例如未設定值的必要輸入欄位。
  6. 「欄位選項清單」連結鉤對每一個使用重新計算選項清單選項的欄位執行。如果有相依欄位,且當您建立欄位時選取了重新計算選項清單,則會執行「欄位驗證」連結鉤,然後對每一個欄位執行「欄位選項清單」連結鉤,直到所有變更的欄位都已經設定及驗證為止。

    如果「欄位值已經變更」連結鉤呼叫 Entity 物件的 SetFieldValue 方法,該欄位的 VALUE_CHANGED 連結鉤會在 SetFieldValue 呼叫時執行。

巢狀動作

當巢狀動作正在進行時,某些連結鉤不會執行,包括存取控制連結鉤和所有通知連結鉤的執行。 如需相關資訊,請參閱 IBM Rational ClearQuest API 參考手冊 中的動作和存取控制巢狀動作中的連結鉤

欄位值設定時執行的連結鉤

當使用者編輯記錄時,連結鉤會依下列順序執行:

  1. 「欄位值已經變更」連結鉤會對每一個變更的欄位執行。

    如果已經設定限制至清單選項,且使用者輸入不允許的值,則會將該欄位標示為無效。 唯有當使用者輸入有效值時,才會執行下一個連結鉤。

    如果「欄位值已經變更」連結鉤呼叫 SetFieldValue 方法來變更另一個欄位的值,則另一個欄位的「欄位值已經變更」連結鉤會立即執行。

  2. 「欄位驗證」連結鉤會對每一個欄位執行。
  3. 「欄位選項清單」連結鉤對每一個使用重新計算選項清單選項的欄位執行。

    如果您使用相依欄位並選取重新計算選項清單,則會先執行「欄位驗證」連結鉤,然後對每一個欄位執行「欄位選項清單」連結鉤,直到所有變更的欄位都已經設定及驗證為止。

除非欄位已標示為具有相依欄位,否則,只有在使用者開始「提交」動作時,欄位連結鉤才會執行。 請參閱使用連結鉤來偵測 Web 階段作業

驗證記錄時執行的連結鉤

在資料庫中確定變更之前,Rational ClearQuest 軟體會依下列順序執行連結鉤來驗證記錄:

  1. 「欄位驗證」連結鉤會對記錄中的每一個欄位執行。
  2. 「動作驗證」連結鉤會對已執行的動作執行。

確定記錄時執行的連結鉤

在以現行記錄的變更更新資料庫之後,但是在資料庫中確定更新交易之前,會執行「確定」連結鉤。 您無法使用「確定」連結鉤來修改現行記錄(例如,您無法從「確定」連結鉤變更欄位)。

「確定」連結鉤中的工作是在資料庫中含有鎖定時完成的,而那些鎖定可能會防止其他使用者執行查詢、建立新記錄或修改現有的記錄。 基於效能的原因,最好將「確定」連結鉤所執行的工作減至最少。

只針對其他記錄的動作執行「確定」連結鉤,您希望這些記錄成為與主要動作相同的資料庫交易的一部分(例如,在解決母項問題報告時解決重複的問題報告)。 您必須確定自己在正確的環境定義中放置適當的呼叫。 例如,您不要從「確定」連結鉤呼叫回復,也不要從「確定」連結鉤以外的任何動作呼叫確定

在驗證記錄之後,會透過依下列順序執行的連結鉤,在資料庫中進行確定:

  1. 「動作確定」連結鉤執行。
  2. 在資料庫中確定交易。
  3. 「動作通知」連結鉤執行。例如,電子郵件通知可能傳送給不同使用者。

如需相關資訊,請參閱 IBM Rational ClearQuest API 參考手冊 中的編輯現有的記錄


意見