Servicios OSLC DXL para Rational DOORS

En IBM® Rational DOORS, la implementación de la versión 2 de la especificación OSLC Requirements Management (RM) incluye un servicio que puede utilizar para ejecutar scripts DXL de Rational DOORS utilizando el protocolo HTTP.
Rational utiliza tecnología basada en OSLC (Open Services for Lifecycle Collaboration) para la integración con herramientas Rational y no Rational. Rational DOORS complementa las funciones estándar de OSLC con un servicio OSLC DXL que se puede utilizar para ejecutar scripts DXL de Rational DOORS en HTTP. El servicio se basa en el concepto de una biblioteca de scripts DXL. Este es el proceso que se debe seguir para utilizar el servicio:
  1. El usuario busca el script OSLC DXL que necesita.
  2. El usuario llama al script para empaquetar los parámetros necesarios en la llamada OSLC. Si envía una solicitud GET para el URI del servicio DXL, la respuesta contiene información de ayuda sobre el script, proporcionada por el autor. Si envía una solicitud PUT con parámetros opcionales para el URI de servicio DXL, se invoca el servicio.
  3. El script se ejecuta en un servidor de interoperatividad.
  4. Los resultados se publican.

El administrador de Rational DOORS controla y personaliza los scripts y puede decidir qué scripts DXL se exponen en 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".

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, si utiliza el servicio OSLC DXL debe autenticarse con su nombre de usuario y contraseña.

Estos son los pasos típicos para utilizar el servicio OSLC DXL:
  1. Crear un script DXL.
  2. Instalar este script DXL como un servicio.
  3. Localizar el servicio a través del descubrimiento de servicios.
  4. Llamar al servicio.
  5. Extraer el valor de retorno de la respuesta.

Ejemplo

  1. Cree un archivo DXL denominado helloWorld.inc que contenga 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 el archivo helloWorld.inc al directorio /addins/services. La ubicación predeterminada de este directorio es C:\Archivos de programa (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services.
  3. Abra un cliente de Rational DOORS e inicie una sesión como administrador.
  4. Para instalar el DXL, abra una ventana DXL y escriba el siguiente código DXL. Se creará un servicio 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" 
    }
  5. Llamar al servicio. El URI es similar a este ejemplo: http://nombreservidor:númeropuerto/dwa/rm/dxl/helloWorld
  6. Configure tanto la cabecera accept como la cabecera content-type para esta entrada: application/rdf+xml
  7. Compruebe que el contenido de la solicitud sea como el código siguiente:
    <?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 pasar argumentos al servicio, utilice el elemento <doors:arguments>. Escriba una serie en el texto del elemento que represente los argumentos necesarios. El servicio DXL transforma dicha serie en los argumentos necesarios para la función de los servicios DXL. El ejemplo anterior muestra un parámetro, English, que se pasa a la función getHelloString. Si una función DXL espera dos parámetros, la solicitud tiene el aspecto del ejemplo siguiente:
    <doors:Arguments>
    <doors:arguments>English,French</doors:arguments>
    </doors:Arguments>
    El servicio DXL receptor divide la lista separada por comas en series diferentes para English y French.
  9. Si hay algún argumento que no sea del tipo correcto de serie, debe convertirlo al tipo apropiado mediante DXL. Por ejemplo, si un argumento es un número entero, puede utilizar la operación intOf para convertir la serie extraída de la lista separada por comas en un valor de tipo int. A continuación, puede pasar el valor al método.
    El contenido de la respuesta será similar 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>

El servicio no realiza ninguna ordenación. 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