Serviços OSLC DXL para Rational DOORS

No IBM® Rational DOORS, a implementação da versão 2 da especificação OSLC Requirements Management (RM) inclui um serviço que pode ser usado para executar scripts DXL do Rational DOORS usando protocolo HTTP.
O Rational usa tecnologia baseada em Open Services for Lifecycle Collaboration (OSLC) para fornecer integração com as ferramentas Rational e não Rational. O Rational DOORS complementa os recursos OSLC padrão com um serviço OSLC DXL que pode ser usado para executar scripts DXL do Rational DOORS por HTTP. O serviço é baseado no conceito de uma biblioteca de script DXL. O processo para usar o serviço é descrito a seguir:
  1. O usuário consulta o script OSLC DXL necessário.
  2. O usuário chama o script para criar o pacote dos 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, o serviço será chamado.
  3. O script é executado em um Interoperation Server.
  4. Os resultados são postados.

Os scripts que são controlados e customizados pelo administrador do Rational DOORS, que pode decidir quais scripts DXL são expostos em toda a interface de serviço. O administrador pode bloquear a capacidade de chamar determinadas funções que poderiam ser consideradas um risco de segurança potencial, como "runDXL".

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

Como a descoberta de serviço é protegida por OAuth, se você usar o serviço OSLC DXL, deverá autenticar-se digitando seu nome de usuário e senha.

As etapas típicas para usar o serviço OSLC DXL são descritas a seguir:
  1. Criar um script DXL.
  2. Instalar o script DXL como um serviço.
  3. Localizar o serviço por meio da descoberta de serviço.
  4. Chamar o serviço.
  5. Extrair o valor de retorno da resposta.

Exemplo

  1. Criar um arquivo DXL chamado helloWorld.inc que contenha este 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"
    }
  2. 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.
  3. Abra um cliente Rational DOORS e efetue login como administrador.
  4. Para instalar o DXL, abra uma janela DXL e insira o seguinte código DXL. Um serviço chamado helloWorld é criado.
    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" 
    }
  5. Chamar o serviço. O URI é como este exemplo: http://servername:portnumber/dwa/rm/dxl/helloWorld
  6. Configure os cabeçalhos accept e content-type para esta entrada: application/rdf+xml
  7. Certifique-se de que o conteúdo da solicitação seja como este 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>
  8. Para passar argumentos ao serviço, use o elemento <doors:arguments>. Insira uma sequência no texto do elemento que representa os argumentos necessários. O serviço DXL transforma essa sequência nos argumentos requeridos pela função DXL de serviços. O exemplo mais fácil mostra um único parâmetro, English, que é passado à função getHelloString. Se uma função DXL esperar dois parâmetros, a solicitação será semelhante a este exemplo:
    <doors:Arguments>
    <doors:arguments>English,French</doors:arguments>
    </doors:Arguments>
    O serviço DXL de recebimento divide a lista separada por vírgula em duas sequências English e French separadas.
  9. Se você tiver argumentos que não são do tipo sequência, deverá convertê-los no tipo apropriado usando DXL. Por exemplo, se um argumento for um número inteiro, será possível usar a operação intOf para converter a sequência que foi extraída da lista separada por vírgula em um valor do tipo int. Em seguida, será possível passar o valor no método.
    O conteúdo da resposta é semelhante a este 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>

O serviço não executa nenhuma serializaçã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