Rational DOORS 的 OSLC DXL 服务

OSLC 需求管理 (RM) 规范 V2 的 IBM® Rational® DOORS® 实施包括支持您使用 HTTP 协议执行 Rational DOORS DXL 脚本的服务。

Rational 部门的一个主要策略是改善 Rational 和非 Rational 工具的集成。该策略的技术是基于生命周期协作开放服务 (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 请求,那么将调用服务。
  3. 脚本在互操作服务器上运行。
  4. 结果将被回发。

变得可用的脚本完全由 Rational DOORS 管理员进行控制和定制,该管理员可决定在整个服务接口中提供哪些 DXL 脚本。管理员可锁定调用某些可能被认为是潜在的安全风险(例如“runDXL”)的函数的能力。

请注意,将永不支持某些 DXL(例如用户界面窗口小部件)。

因为服务发现受 OAuth 的保护,因此还要求该功能的用户首先使用用户名和密码进行认证。

使用该功能的典型步骤为:
  1. 创建 DXL 脚本。
  2. 作为服务来安装该 DXL 脚本。
  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 客户机并以 Administrator 身份登录。

要安装 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 字段。这些字段包含脚本运行所需的所有参数。如果其中任何字段缺失或未正确排序,那么调用将失败。

响应内容将类似于以下代码:

<?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 脚本从字符串中抽取值,然后将这些值转换为期望的各个参数。


反馈