Rational DOORS 的 OSLC DXL 服務

您可以使用 OSLC DXL 服務,透過 HTTP 或 HTTPS 通訊協定來執行 IBM® Rational® DOORS® Script。
註: 範例含有利用「OSLC DXL 服務」公用程式將 DXL 檔案安裝成服務的步驟。Rational DOORS 9.6.1 版及更新版本會提供這個公用程式。如果要安裝 DXL 檔案,但是不使用這個公用程式, 請參閱舊版的說明文件

Rational 使用以 Open Services for Lifecycle Collaboration (OSLC) 為基礎的技術, 來改良與 Rational 應用程式和其他工具的整合。OSLC 服務探索可以延伸。因此, Rational 和協力廠商開發人員能夠新增目前實作標準未提供的服務, 或是新增被視為太特殊而未包含在現行或未來版本中的服務。

OSLC Requirements Management (RM) 規格第 2 版的 Rational DOORS 實作包含一個 API, 可讓您用來透過 HTTP 或 HTTPS 通訊協定來執行 Rational DOORS DXL Script。這個 API 可讓您安全可靠地存取和操作 Rational DOORS 資料,為整合帶來額外的價格。它是以 DXL Script 程式庫的概念為基礎。管理者使用「OSLC DXL 服務」使用者介面, 就能輕鬆新增、編輯和移除 DXL Script。

這些步驟說明 OSLC DXL 服務的使用程序:
  1. 查閱 OSLC DXL Script。
  2. 呼叫 Script,將必要的參數包裝在 OSLC 呼叫中。如果您提交對於 DXL 服務 URI 的 GET 要求,回應會包含作者所提供的 Script 說明資訊。 如果您以選用參數提交對於 DXL 服務 URI 的 PUT 要求,會執行服務。
  3. Script 會在交互作業伺服器上執行。
  4. 公佈結果。

Script 由 Rational DOORS 管理者控制和自訂, 管理者可以決定服務介面中要提供哪些 DXL Script。管理者可以鎖定呼叫特定函數的功能,而這項功能可能會被視為潛在的安全風險,如 "runDXL"。不支援某些 DXL(例如:使用者介面小組件)。

由於服務探索受 OAuth 保護,如果您使用 OSLC DXL 服務,您必須輸入使用者名稱與密碼以進行鑑別。

一般而言,OSLC DXL 服務的使用步驟如下:
  1. 建立 DXL Script。
  2. 將 DXL Script 安裝成服務。
  3. 透過服務探索找出服務。
  4. 呼叫這項服務。
  5. 從回應中擷取回覆值。

範例

  1. 建立一個名稱是 helloWorld.inc 的 DXL 檔案,且其中含有下列程式碼:
    void getHelloString(string language)
    {
    	string hello = null
    
    	if ("French" == language)
    	{
    		hello = "Bonjour le monde"
    	} 
    	else if ("Finnish" == language)
    	{
    		hello = "Hei maailma"
    	} 
    	else if ("Latin" == language)
    	{
    		hello = "Ave mundi"
    	}
    	else
    	{
    		hello = "Hello world"
    	}
    
    	setDxlServiceResult hello
        
    	print hello "\n"
    }
  2. helloWorld.inc 檔複製到 /addins/services 目錄中。 這個目錄的預設位置是 C:\Program Files\IBM\Rational\DOORS\9.version\lib\dxl\addins\services
  3. 開啟 Rational DOORS 用戶端,並以管理者身分登入。
  4. 如果要安裝 DXL, 請按一下檔案 > OSLC > DXL 服務
  5. 在「OSLC DXL 服務」視窗中,按一下新增
  6. 在「新增 OSLC DXL 服務」視窗中,輸入下列值:
    • 名稱helloWorld
    • 說明Hello world in several languages
    • DXL#include <addins/services/helloWorld.inc>
    • 函數名稱getHelloString
    會建立名稱是 helloWorld 的服務。
    OSLCDXLService os = null
    string err = null
    
    string dxlCode = "#include <addins/services/helloWorld.inc>\n"
    err = addOrUpdateOSLCDXLService("helloWorld", "Hello world in several languages", dxlCode, "getHelloString")
    if (!null err)
    { 
    	print err 
    }  
    else
    { 
    		print "Installed Service\n"
    }
  7. 呼叫這項服務。URI 類似下列範例:http://servername:portnumber/dwa/rm/dxl/helloWorld
  8. 接受內容類型標頭設為下列項目:application/rdf+xml
  9. 確定要求內容類似下列程式碼:
    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:doors="http://jazz.net/doors/xmlns/prod/jazz/doors/2.0/">
      <doors:Arguments>
      <doors:arguments>English</doors:arguments>
      </doors:Arguments>
    </rdf:RDF>
  10. 如果要傳遞引數給服務,請使用 <doors:arguments> 元素。在元素文字中輸入代表必要引數的字串。DXL 服務會將該字串轉換成服務 DXL 函數所需要的引數。先前的範例顯示單一參數 English,它會傳遞給 getHelloString 函數。如果 DXL 函數預期有兩個參數,則要求應類似下列範例:
    <doors:Arguments>
    <doors:arguments>English,French</doors:arguments>
    </doors:Arguments>
    接收端 DXL 服務會將逗點區隔清單分割成個別的 EnglishFrench 字串。
  11. 如果您的引數不是字串類型,必須使用 DXL 將它們轉換成適當的類型。舉例來說,如果引數是整數,您可以使用 intOf 運算,將擷取自逗點區隔清單的字串轉換成整數類型值。然後您就可以將值傳遞給方法。
    回應內容類似下列程式碼:
    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:doors="http://jazz.net/doors/xmlns/prod/jazz/doors/2.0/">
      <doors:DxlServiceResult rdf:about="http://my-desktop:8080/dwa/rm/dxl/helloWorld>
      <doors:result>Hello world</doors:result>
      </doors:DxlServiceResult>
    </rdf:RDF>

服務不會執行任何配置。以單一字串來指定引數。DXL Script 會先剖析和擷取字串中的值,再將它們轉換成預期的個別參數。

Rational DOORS 用戶端安裝架構含有範例檔。範例檔 hierarchy.dxl 顯示如何使用 OSLC DXL 服務, 來取得模組階層的相關資訊。

意見