Rational DOORS 的 OSLC DXL 服務

OSLC Requirements Management (RM) 規格第 2 版的 IBM® Rational® DOORS® 實作包含一項可供利用 HTTP 通訊協定來執行 Rational DOORS DXL Script 的服務。

Rational 部門的其中一項主要策略,便是改進 Rational 與非 Rational 工具的整合。這項策略的技術,是以 Open Services for Lifecycle Collaboration (OSLC) 為基礎。

因為 OSLC 服務探索是可延伸的,所以 Rational 和協力廠商開發人員能夠新增目前不在實作標準中的服務,或是被視為太特殊而未包含在標準中,因而對於標準的將來版本也未加以規劃的服務。為了支援一直以來對於延伸的承諾,Rational DOORS 引進 OSLC DXL 服務來協助為這些隔閡搭起橋樑。 OSLC RM V2 介面公開一項可供使用者透過 HTTP 執行 Rational DOORS DXL Script 的服務。 這項服務是以 DXL Script 程式庫的概念為基礎: script library:
  1. 使用者查閱必要的 OSLC DXL Script。
  2. 使用者呼叫此 Script,將必要的參數包裝在 OSLC 呼叫中。
  3. Script 會在 Interop 伺服器上執行。
  4. 將結果往回公佈。

啟用的 Script 完全接受 Rational DOORS 管理者的控制和自訂,管理者可以決定要透過服務介面來公開哪些 DXL Script。 管理者可以鎖定呼叫特定函數的功能,而這項功能可能會被視為潛在的安全風險,如 "runDXL"。

請注意,特定的 DXL(如使用者介面小組件)將永遠不受支援。

由於服務探索受到 OAuth 的保護,所以這項功能的使用者也需要先利用使用者名稱和密碼來進行鑑別。

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

範例

建立一個包含下列程式碼,稱為 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"
}

請將這個檔案複製到下列目錄:$DOORSHOME$/addins/services/helloWorld.inc

請啟動 Rational DOORS 用戶端,以「管理者」身分登入。

如果要安裝 DXL,請開啟一個 DXL 視窗,輸入下列 DXL 程式碼。 這會建立一個稱為 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"
}

然後呼叫這項服務。URI 類似下列範例:http://servername:portnumber/dwa/rm/dxl/helloWorld

acceptcontent-type 標頭設為下列項目:application/rdf+xml

要求內容應該類似下列程式碼:

<?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>

最重要的欄位是 doors:arguments 欄位。 其中包含 Script 運作所需要的所有參數。 如果任何這些參數遺漏或不正確,呼叫就會失敗。

回應內容會類似下列程式碼:

<?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 會從其中擷取值,再將它們轉換成預期的個別參數。


意見