連結鉤

連結鉤是進入點(類似觸發程式),可供指定時間執行的 Script 控制使用者在 Rational® ClearQuest® 環境中的工作方式。

連結鉤是以超級使用者專用權執行,因此不受一般存取控制或欄位行為限制的約束。 您可以使用連結鉤來設定及重設一般唯讀欄位中的值。 (您無法重設系統欄位,例如「歷程」欄位)。 必要欄位仍為必要的。 如需相關資訊,請參閱IBM Rational ClearQuest API 參考手冊動作和存取控制

支援四種連結鉤類型:

連結鉤的 Script 語言

您可以用 VBScript(適用於 Windows)及 Perl(適用於 UNIX 系統和 Windows)來撰寫連結鉤。依預設,在 Windows 上的連結鉤是以 VBScript 執行。 如需以適用於 Windows 的 Perl 執行連結鉤的相關資訊,請參閱Script 語言

您可以對欄位和動作連結鉤新增以 VBScript 或 Perl 撰寫的 Script。如果您要建立廣域 Script 或記錄 Script,必須使用 VBScript 或 Perl。

為了方便儲存和參照,您可以在相同綱目中同時撰寫 VBScript 和 Perl Script。 不過,綱目只能以指定的語言執行 Script (請參閱 Script 語言)。

在 Script 編輯器中撰寫或編輯 Script。 當您定義新 Script 時,設計工具會將該連結鉤的呼叫語法新增至 Script 編輯器視窗。無法編輯呼叫語法。 設計工具也會新增範例內文文字,您可在必要時編輯此文字。 (起始內文文字會註銷,除非您移除註解標記,否則它不會執行)。

設計工具為 VBScript 和 Perl 提供不同的 Script 編輯器,並在視窗的標題列中指出編輯器類型。 在撰寫程式碼之前,請驗證您使用正確的編輯器。

連結鉤 Script 的作業環境定義

撰寫 VBScript 和 Perl 連結鉤的程序已簡化,因為作業環境定義是一致的。 在連結鉤呼叫 VBScript 或 Perl Script 之前,Rational ClearQuest 軟體會建立 Session 物件,並登入該使用者。 因為所有連結鉤(包括廣域 Script 在內)都是從現行記錄的環境定義中執行,所以會提供您一個對應於該記錄的 Entity 物件。 (廣域 Script 共用與呼叫它的連結鉤相關聯的 Entity 物件)。

在 Script 內,您可以呼叫 Entity 方法而不必指定前導 ID。 例如,您可以用下列方式呼叫 Entity 的 GetSession 方法:

set curSession = GetSession 
 

當您以此方式呼叫方法時,Rational ClearQuest 軟體會假設您呼叫隱含的 Entity 物件的方法,該物件傳遞至連結鉤。 如果您想要明確地參照這個 Entity 物件,可使用記錄類型的名稱作為物件的 ID。 使用這個 ID 有助於釐清一次操作多個 Entity 物件的程式碼,如下例所示,它將一個實體標示為另一個實體的重複項:

set curSession = GetSession  
 idName = GetFieldValue("id").GetValue  
 set currentObj = curSession.GetEntity("defect", idName)  
 ' Mark the entity with ID="SAMPL00000031" as a duplicate of this entity.
 ' Use the action named "duplicate".  
 set dupEntityObj = curSession.GetEntity("defect", "SAMPL00000031") 
 curSession.MarkEntityAsDuplicate dupEntityObj, currentObj, "duplicate"

因為 Script 會影響欄位的行為,因此請審慎設計及測試連結鉤程式碼。 例如,如果連結鉤需要欄位包含某種值,則該欄位會變成必要的欄位,即使其行為未設定為 MANDATORY 也一樣。

連結鉤測試考量

若未正確撰寫,連結鉤程式碼可能會在執行時期產生難以察覺的錯誤。 若要測試連結鉤,請按一下設計工具 Script 編輯器中的連結鉤 > 編譯,以進行連結鉤程式碼的除錯。 綱目驗證程序不會捕捉連結鉤程式碼的錯誤,也不保證綱目能如您的預期運作。 在移入綱目之前,請以測試資料庫測試它,在將綱目變更套用至使用者資料庫之前,請先備份使用者資料庫。 如需相關資訊,請參閱以測試資料庫測試綱目

規劃連結鉤時,請考量下列問題:

抄寫環境中的連結鉤

在抄寫環境中執行的連結鉤的許多相關問題,與單一站台資料庫鎖定問題相同。 在單一站台或抄寫環境中,其連結鉤的功能測試也相同。 不過,在抄寫環境中執行某些 ClearQuest 連結鉤,可能與在單一站台環境中不同。 例如,在一個記錄動作的環境定義中更新其他記錄的連結鉤時,如果其他記錄並非在現行站台上受到主控而無法更改,則可能會發生錯誤。

每一個資料庫記錄只能在目前主控它的站台上更新(這是由該記錄的 ratl_mastership 欄位中的抄本站台名稱指示)。 在複式應用程式中,多個記錄可當成複式交易的一部分來更新。 在設計及測試抄寫環境的連結鉤時,這些原則應列入考量。

對於含有交互連結記錄的抄寫環境中的複式應用程式而言,綱目設計應該要能夠處理下列狀況:
  • 因為主控權的關係,母項記錄是不可更改的。例如,如果母項記錄並非在現行站台上受到主控,則它是不可更改的。
  • 母項記錄是可更改的(在現行站台上受到主控),但因為主控權的關係,其子層記錄是不可更改的(不在現行站台上受到主控)。

另請參閱資料庫鎖定驗證綱目

套件安裝的 Script

當您安裝套件時,可將欄位連結鉤或記錄 Script 新增至綱目中。 這些 Srcipt 是套件的一部分,而不是連結鉤程式碼的一部分。

您無法刪除或修改套件擁有的 Script;它們並不是綱目所擁有的程式碼的一部分。 因此,您為連結鉤程式碼所選擇的預設語言設定與實作套件所擁有的連結鉤的語言,兩者之間沒有任何關係。


意見