Serviços OSLC DXL para Rational DOORS

A implementação do IBM® Rational DOORS da especificação do OSLC Requirements Management (RM) versão 2 inclui um serviço que permite que você execute scripts DXL do Rational DOORS usando o protocolo HTTP.

Uma das principais estratégias da divisão do Rational é melhorar a integração de ferramentas Rational e não Rational. A tecnologia para essa estratégia é baseada em Open Services for Lifecycle Collaboration (OSLC).

Como a descoberta de serviço OSLC é extensível, é possível para desenvolvedores do Rational e de terceiros incluírem serviços que não estão disponíveis atualmente no padrão implementado ou que são considerados muito especializados para inclusão no padrão e, portanto, não são planejados para versões futuras do padrão. Para suportar o compromisso contínuo com a extensibilidade, o Rational DOORS introduz os Serviços OSLC DXL para ajudar a construir essas diferenças. A interface OSLC RM V2 expõe um serviço que permite que os usuários executem scripts Rational DOORS DXL por HTTP. Esse serviço é baseado no conceito de uma biblioteca de scripts DXL:
  1. O usuário consulta o script OSLC DXL necessário.
  2. O usuário chama esse script para compactar os parâmetros necessários na chamada OSLC. Se você enviar uma solicitação GET para o URI do serviço DXL, a resposta conterá informações da ajuda sobre o script, conforme fornecido pelo autor. Se você enviar uma solicitação PUT com parâmetros opcionais para o URI do serviço DXL, isso chamará o serviço.
  3. O script é executado em um Interop Server.
  4. Os resultados são postados de volta.

Os scripts disponibilizados estão completamente sob controle e customização do administrador do Rational DOORS, que pode decidir que scripts DXL são expostos pela interface de serviço. O administrador pode bloquear a capacidade de chamada de certas funções que poderiam ser consideradas um risco de segurança potencial, como "runDXL".

Observe que certos DXL, como widgets de interface com o usuário, nunca serão suportados.

Como a descoberta de serviço é protegida por OAuth, os usuários dessa funcionalidade também precisam primeiro se autenticarem usando seu nome de usuário e senha.

As etapas típicas para uso desse recurso são:
  1. Criar um script DXL.
  2. Instalar esse script DXL como um serviço.
  3. Localizar esse serviço via descoberta de serviço.
  4. Chamar o serviço.
  5. Extrair o valor de retorno da resposta.

Exemplo

Crie um arquivo DXL denominado helloWorld.inc que contém o seguinte código:

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"
}

Copie o arquivo helloWorld.inc no diretório /addins/services. O local padrão desse diretório é C:\Program Files (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services.

Ative um cliente do Rational DOORS e efetue login como Administrador.

Para instalar o DXL, abra uma janela DXL e insira o seguinte código DXL. Este cria um serviço denominado 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" 
}

Em seguida, chame o serviço. A URI é semelhante ao seguinte exemplo: http://servername:portnumber/dwa/rm/dxl/helloWorld

Configure os cabeçalhos accept e content-type para a seguinte entrada: application/rdf+xml

O conteúdo da solicitação deve ser semelhante ao seguinte código:

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

Os campos mais importantes são os campos doors:arguments. Estes contêm todos os parâmetros necessários para o script para a função. Se algum destes estiver ausente ou ordenado incorretamente, a chamada falhará.

O conteúdo da resposta será semelhante ao seguinte código:

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

Nenhuma serialização é executada pelo serviço. Os argumentos são especificados em um formato de sequência, a partir do qual o script DXL extrai valores e, em seguida, converte-os nos parâmetros individuais esperados.


Feedback