Rational DOORS の OSLC DXL サービス

OSLC Requirements Management (RM) 仕様バージョン 2 の IBM® Rational® DOORS® 実装環境には、HTTP プロトコルを 使用して Rational DOORS DXL スクリプトを実行できるようにするサービスが組み込まれています。

Rational 分割の 主な戦略の 1 つは、Rational ツールと非 Rational ツールの統合を向上させることです。 この戦略のテクノロジーは、Open Services for Lifecycle Collaboration (OSLC) に基づいています。

OSLC サービス・ディスカバリーは拡張可能であるため、実装された標準では現在使用できないサービスや、標準に組み込むには特殊すぎるとみなされるため標準の将来のバージョンでも計画されないサービスを、Rational やサード・パーティーの開発者が追加できます。 拡張性に対する継続的コミットメントをサポートするために、Rational DOORS には、これらのギャップを埋めるために役立つ OSLC DXL サービスが導入されました。 OSLC RM V2 インターフェースでは、ユーザーが HTTP 経由で Rational DOORS DXL スクリプトを実行できるようにする サービスが公開されます。 このサービスは、DXL スクリプト・ライブラリーの概念に基づいています。
  1. ユーザーが、必要な OSLC DXL スクリプトを探します。
  2. ユーザーが、このスクリプトを呼び出して必須パラメーターを OSLC コールに組み込みます。 DXL サービス URI の GET 要求を送信すると、応答に、作成者によって提供されたスクリプトのヘルプ情報が含まれます。DXL サービス URI の PUT 要求を、オプション・パラメーターを付加して送信すると、これにより DXL サービスが起動されます。
  3. スクリプトが相互協調処理サーバーで実行されます。
  4. 結果が返されます。

使用可能になった スクリプトは、Rational DOORS 管理者によって 完全に制御およびカスタマイズされます。 管理者は、サービス・インターフェース全体で公開される DXL スクリプトを決定できます。 管理者は、「runDXL」など、潜在的なセキュリティー・リスクとみなされる可能性のある特定の機能を呼び出す機能をロックアウトできます。

ユーザー・インターフェース・ウィジェットなど、特定の DXL はサポートされないことに注意してください。

サービス・ディスカバリーは OAuth によって保護されているため、この機能を使用するユーザーもユーザー名とパスワードを使用して 最初に認証を行う必要があります。

この機能を使用する通常の手順は次のようになります。
  1. DXL スクリプトを作成します。
  2. この DXL スクリプトをサービスとしてインストールします。
  3. サービス・ディスカバリーを使用して、このサービスを見つけます。
  4. このサービスを呼び出します。
  5. 応答から戻り値を抽出します。

以下のコードを含む DXL ファイル helloWorld.inc を作成します。

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

accept および content-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 フィールドです。 このフィールドには、スクリプトが機能するために必要なすべてのパラメーターが含まれています。 これらのいずれかが欠けていたり、順序が正しくないと、呼び出しは失敗します。

応答の内容は、以下のコードのようなものになります。

<?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 スクリプトはそこから値を抽出し、必要な個々のパラメーターに変換します。


フィードバック