使用原生過濾器來擷取資料

原生過濾器可以與所有支援的資料來源搭配使用。由「報告資料服務配接器」解譯的原生過濾器可讓您使用資料來源格式來輸入過濾器。負責處理原生過濾器的是「報告資料服務配接器」,而不是 Rational® Publishing Engine,因此使用原生過濾器可改良 Rational Publishing Engine 的效能。

開始之前

如果您將 Rational Publishing Engine 與不支援「可報告的 REST」資料來源的產品整合在一起,則會提取整個資料集,且無法過濾。如果要驗證您的產品支援「可報告的 REST」資料來源,您可以先在原生資料來源中測試過濾器條件,再將它用於 Rational Publishing Engine 中。

請檢閱Reportable REST 第 1 版文件,取得定義「可報告的 REST 第 1 版」服務需求的相關資訊。

關於這項作業

「可報告的 REST」資料來源支援原生過濾器,它可支援過濾、排序和選取內容。原生過濾器會向資料來源要求一組資料,然後從 Rational Publishing Engine 範本過濾和精簡輸出資料。除非您為求精確而想測試過濾器,您不需要在作為資料來源的產品中建立過濾器,但是您可以從 Rational Publishing Engine 內建立過濾器,以便專門用於 Rational Publishing Engine 範本中。

在舊版 Rational Publishing Engine 中,您只能定義靜態過濾器。在您設計範本時,必須瞭解過濾器的意義,且在執行時期,您無法變更它們。

程序

  1. 在 Document Studio 中,選取含有要過濾之查詢的範本元素。
  2. 內容視圖中,選取資料標籤。
  3. 過濾器欄位中,按一下省略符號。
  4. 原生過濾器標籤中,展開變數
    註: 在使用對該資料來源的第一項查詢之前,可修改過濾器中使用的變數。
  5. 選取用於過濾的變數。
  6. 輸入語法 ${},來定義要過濾的查詢。 例如,您可以依產品名稱來過濾。可以有多個產品團隊使用這個範本,並在執行時期於文件規格中指定產品名稱。
    cq:Product{cq:Product"${productName}"
    註:
    • 自訂屬性無法用於原生過濾器中。
    • 如果您重新命名變數,Script 表示式或原生過濾器中並不會更新名稱,且會產生參照錯誤。在您重新命名變數時,請確定您也已在 Script 表示式和原生過濾器中修訂名稱。
    • 如果要擷取 Rational DOORS 資料,請使用 DXL Script 作為原生過濾器條件。如果要擷取 REST 資料,請使用 XPath 過濾器條件。
  7. 按一下確定

支援「可報告的 REST 第 1 版」語法的資料來源

在「可報告的 REST 第 1 版」原生過濾器中,您只需在方括弧 [] 之間輸入文字。過濾器的其餘部分由 Rational Publishing Engine 產生。

Design Management

Design Management 支援使用「可報告的 REST 第 1 版」資料來源中的原生過濾。 如需相關資訊,請參閱Reportable REST 第 1 版

IBM® Rational ClearCase

Rational ClearCase 配接器支援使用「可報告的 REST 第 1 版」資料來源中的原生過濾。 如需相關資訊,請參閱Reportable REST 第 1 版

IBM Rational ClearQuest

Rational ClearQuest 配接器支援使用「可報告的 REST 第 1 版」資料來源中的原生過濾。 如需相關資訊,請參閱Reportable REST 第 1 版

IBM Rational RequisitePro

下列的「可報告的 REST 第 1 版」原生過濾器範例使用 Stability='High' 來擷取 Rational RequisitePro PRRequirements 綱目。

範例

將過濾器表示式新增至 Appliances 之下的節點,以便只選取由特定製造商所製造的設備。
fields=Project/Requirements/PRRequirement[Stability = 'High']/(Stability|FullTag|Priority|Status)

IBM Rational Rhapsody

Rational Rhapsody 支援在原生過濾器中使用「可報告的 REST 第 1 版」資料來源。 如需相關資訊,請參閱Reportable REST 第 1 版

IBM Rational Team Concert

Rational Team Concert 支援在原生過濾器中使用「可報告的 REST 第 1 版」資料來源。如需相關資訊,請參閱 Jazz.net 上的 Reportable REST API

範例

projectArea/name="Rational Publishing Engine"  and target/name="1.2.1"
解析後的要求:
fields=workitem/workItem[projectArea/name="Rational Publishing Engine" and target.name="1.2.1"]/(@href|summary)

支援「可報告的 REST 第 2 版」語法的資料來源

關於這項作業

註:
  • 只有在需要時,才會對資料來源發出要求。例如,您可以使用條件,使得只有包含資料的元素才會顯示在輸出中。對儲存器元素的條件可以是 variable == "true"。如果不符合這個條件,表示沒有資料符合變數條件,也不會對資料來源發出要求。
  • 您可以在發出要求之前先計算原生過濾器。在發現查詢之處,就會計算原生過濾器,並使用該處的變數值。因此您可以在範本中執行計算,而這會影響原生過濾器。

IBM Rational ClearQuest

Rational ClearQuest 第 8 版支援從「可報告的 REST 第 2 版」資料來源進行原生過濾。 如需相關資訊,請參閱 Rational ClearQuest OSLC CM REST API

範例

變數過濾器範例:
cq:Product{cq:Product="${productName}") 
解析後的過濾器範例,其中 productNameRational Publishing Engine
cq:Product{cq:Product="Rational Publishing Engine")

支援專有 API 語法的資料來源

IBM Rational DOORS

Rational DOORS 支援專有 API,且過濾器是用「Rational DOORS 視圖」語法來表示。

範例

下列 Rational DOORS 原生過濾器範例是過濾「物件文字」屬性中含有 "Documentation" 單字的物件。
Attribute 'Object Text' contains 'Documentation' (case sensitive)
如果要針對 Rational DOORS 資料來源,產生原生過濾器文字,請執行下列動作:
  1. 開啟「Rational DOORS 模組」,然後按一下工具 > 過濾器 > 定義功能表項目
  2. 建立過濾器語法:
    1. 選取屬性標籤。
    2. 針對「屬性」,選取物件文字
    3. 針對「條件」,選取包含
    4. 針對「值」,輸入用於過濾的特定值。舉例來說,如果只想過濾其物件文字屬性中含有 Documentation 單字的那些物件,請輸入:Documentation
    5. 按一下新增。在「進階選項」區段中,會建立規則語法。
  3. 按一下說明,並複製完整說明。現在,您具有 Rational DOORS 過濾器,它是一個 DXL Script。
如果要將 Rational DOORS 過濾器新增至 Rational Publishing Engine 範本元素,請執行下列動作:
  1. 選取含有要過濾之查詢的範本元素。
  2. 內容標籤中,展開資料
  3. 過濾器欄位中,按一下省略符號。這時會開啟過濾器編輯器視窗。
  4. 原生過濾器標籤中,貼上 Rational DOORS 過濾器 (DXL Script),並按一下確定

IBM Rational Tau

Rational Tau 支援專有 API,且過濾器是以 OCL 查詢來表示。

範例

下列 Rational Tau 原生過濾器範例是過濾含有預先定義名稱的套件:
  • model.predefinedPackage represents the current schema element.
  • GetEntities(“predefinedPackage”).select(IsKindOf(“Package”) represents the underlying Rational Tau query.
  • select(HasPropertyWithValue("Name", "Predefined")) represents the native filter condition.
Rational Tau 查詢評估器所執行的查詢是:
GetEntities(“predefinedPackage”). select(IsKindOf(“Package”))
select(HasPropertyWithValue("Name", "Predefined"))

意見