Servicios OSLC DXL para Rational DOORS

La implementación de IBM® Rational DOORS de la especificación OSLC Requirements Management (RM) versión 2 incluye un servicio que permite ejecutar scripts DXL de Rational DOORS utilizando el protocolo HTTP.

Una de las estrategias básica de la división de Rational es mejorar la integración de las herramientas de Rational y de las que no lo son. La tecnología de esta estrategia se base en OSCL (Open Services for Lifecycle Collaboration).

Puesto que el descubrimiento de servicios de OSLC es ampliable, es posible para los desarrolladores de Rational y de terceros el añadir servicios que no están disponibles actualmente en el estándar implementado o que se consideran demasiado especializados como para incluirlos en el estándar, y, por lo tanto, no se han planificado para próximas versiones del estándar. Para dar soporte al compromiso actual de ampliación, Rational DOORS presenta los servicios OSLC DXL que ayudarán a cubrir esta necesidad. La interfaz OSLC RM V2 expone un servicio que permite que los usuarios ejecuten scripts DXL de Rational DOORS a través de HTTP. Este servicio se basa en el concepto de una biblioteca de scripts DXL:
  1. El usuario busca el script OSLC DXL que necesita.
  2. El usuario llama a este script para empaquetar los parámetros necesarios en la llamada OSLC.
  3. El script se ejecuta en un servidor de interoperatividad.
  4. Los resultados se publican de vuelta.

Los scripts que están disponibles están totalmente bajo el control y la personalización del administrador de Rational DOORS, que puede decidir qué scripts DXL se exponen a través de la interfaz de servicio. El administrador puede bloquear la posibilidad de llamar a determinadas funciones que se podrían considerar de un posible riesgo de seguridad, como por ejemplo "runDXL".

Tenga en cuenta que no se dará soporte a algunos DXL como, por ejemplo, los widgets de interfaz de usuario.

Puesto que el descubrimiento de servicios está protegido mediante OAuth, los usuarios de esta funcionalidad también es necesario que se autentiquen en primer lugar con su nombre de usuario y contraseña.

Los pasos habituales para utilizar esta característica son:
  1. Crear un script DXL.
  2. Instalar este script DXL como un servicio.
  3. Localizar este servicio a través del descubrimiento de servicios.
  4. Llamar al servicio.
  5. Extraer el valor de retorno de la respuesta.

Ejemplo

Cree un archivo DXL denominado helloWorld.inc que incluya el siguiente 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 este archivo en el siguiente directorio: $DOORSHOME$/addins/services/helloWorld.inc

Inicie un cliente de Rational DOORS e inicie una sesión como administrador.

Para instalar el DXL, abra una ventana DXL y escriba el siguiente código DXL. Esto creará un servidor 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" 
}

A continuación, llame al servicio. El URI es similar al del ejemplo siguiente: http://servername:portnumber/dwa/rm/dxl/helloWorld

Configure tanto la cabecera accept como la cabecera content-type para la siguiente entrada: application/rdf+xml

La solicitud de contenido debería ser parecida a la del siguiente 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>

Los campos más importantes son los doors:arguments. Estos campos contienen todos los parámetros necesarios para que el script pueda funcionar. Si falta alguno o si están ordenados de forma incorrecta, la llamada fallará.

El contenido de la respuesta debería ser parecido al del siguiente 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>

El servicio no realiza ningún tipo de marshalling. Los argumentos se especifican en un formato de serie de texto, de la que el script DXL extrae valores y, a continuación, los convierte en los parámetros individuales esperados.


Comentarios