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).
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.
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.