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 调用中封装所需参数。
  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"
}

将此文件复制到以下目录:$DOORSHOME$/addins/services/helloWorld.inc

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


反馈