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 需求管理 (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 服務,來取得模組階層的相關資訊。

意見