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).
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.
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 ce fichier vers le répertoire suivant : $DOORSHOME$/addins/services/helloWorld.inc
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.