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 呼叫中。如果您提交對於 DXL 服務 URI 的 GET 要求,回應會包含作者所提供的 Script 說明資訊。 如果您以選用參數提交對於 DXL 服務 URI 的 PUT 要求,會呼叫這個服務。
  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"
}

helloWorld.inc 檔複製到 /addins/services 目錄中。 這個目錄的預設位置是 C:\Program Files (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services

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


意見