Services OSLC DXL pour Rational DOORS

L'implémentation IBM® Rational DOORS de la spécification d'OSLC Requirements Management (RM) version 2 inclut un service permettant d'exécuter des scripts Rational DOORS DXL à l'aide du protocole HTTP.

L'une des principales stratégies de la division Rational consiste à améliorer l'intégration des outils Rational et non Rational. La technologie au service de cette stratégie est basée sur la norme OSLC (Open Services for Lifecycle Collaboration).

Parce que la reconnaissance de service OSLC est extensible, il est possible pour les développeurs Rational et tiers d'ajouter des services qui ne sont pas actuellement disponibles dans la norme mise en oeuvre, ou qui sont considérés comme trop spécialisés pour être inclus dans la norme et, de ce fait, non planifiés pour des versions futures de la norme. Pour prendre en charge l'engagement actuel d'extensibilité, Rational DOORS introduit le concept de Service OSLC DXL pour aider à combler ces manques. L'interface OSLC RM V2 expose un service permettent aux utilisateurs d'exécuter des scripts Rational DOORS DXL via HTTP. Ce service est basé sur le concept d'une bibliothèque de scripts DXL :
  1. L'utilisateur recherche le script OSLC DXL requis.
  2. L'utilisateur appelle ce script pour créer un package des paramètres requis dans l'appel OSLC. Si vous soumettez une requête GET pour l'identificateur URI du service DXL, la réponse contient des informations d'aide sur le script, comme indiqué par l'auteur. Si vous soumettez une requête PUT avec des paramètres facultatifs pour l'identificateur URI du service DXL, le service est appelé.
  3. Le script est exécuté sur un serveur Interop.
  4. Les résultats sont renvoyés.

Les scripts mis à disposition sont entièrement sous le contrôle de l'administrateur Rational DOORS et sont soumis à sa personnalisation. Cet administrateur peut même décider des scripts DXL qui sont exposés dans l'ensemble de l'interface de service. L'administrateur peut verrouiller la possibilité d'appeler certaines fonctions qui pourraient être considérées comme des risques potentiels pour la sécurité, par exemple "runDXL".

Notez que certains DXL, tels que des widgets d'interface utilisateur, ne seront jamais pris en charge.

La reconnaissance de service étant protégée par OAuth, les utilisateurs de cette fonctionnalité doivent d'abord s'authentifier avec leur nom d'utilisateur et leur mot de passe.

Etapes classiques d'utilisation de cette fonction :
  1. Création d'un script DXL.
  2. Installation du script DXL en tant que service.
  3. Localisation du service via la reconnaissance de service.
  4. Appel du service.
  5. Extraction de la valeur de retour à partir de la réponse.

Exemple

Créez un fichier DXL nommé helloWorld.inc qui contient le code suivant :

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

Copiez le fichier helloWorld.inc dans le répertoire /addins/services. L'emplacement par défaut de ce répertoire est C:\Program Files (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services.

Lancez un client Rational DOORS et connectez-vous en tant qu'administrateur.

Pour installer DXL, ouvrez une fenêtre DXL et entrez le code DXL suivant. Ce code entraînera la création d'un service nommé "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" 
}

Appelez ensuite ce service. L'identificateur URI est similaire à celui de l'exemple suivant : http://servername:portnumber/dwa/rm/dxl/helloWorld

Définissez les en-têtes accept (accepter) et content-type (type-contenu) sur l'entrée suivante : application/rdf+xml

Le contenu de la demande doit être similaire au code ci-dessous :

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

Les zones les plus importantes sont les zones doors:arguments. En effet, ces dernières contiennent tous les paramètres nécessaires au bon fonctionnement du script. Si ne serait-ce qu'une seule d'elles est manquante ou ordonnée de façon incorrecte, l'appel échouera.

Le contenu de la réponse sera similaire au code ci-dessous :

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

Ce service n'effectue aucune conversion de paramètres. Les arguments sont spécifiés au format chaîne, à partir duquel le script DXL extrait les valeurs puis les convertit selon les paramètres individuels attendus.


Commentaires en retour