Dans IBM® Rational DOORS,
l'implémentation de la version 2 de la spécification OSLC Requirements Management
(RM) comprend un service que vous pouvez utiliser pour exécuter des scripts DXL
Rational DOORS
à l'aide du protocole HTTP.
Rational utilise
une technologie basée sur Open Services for Lifecycle Collaboration (OSLC)
pour assurer l'intégration avec les outils Rational
et non-Rational.
Rational DOORS complète
les fonctions OSLC standard avec un service OSLC DXL que vous pouvez utiliser
pour exécuter des scripts DXL
Rational DOORS
sur HTTP. Le service est basé sur le concept d'une bibliothèque
de scripts DXL. Le processus d'utilisation du service est le suivant :
- L'utilisateur recherche le script OSLC DXL requis.
- L'utilisateur appelle le script pour regrouper les paramètres obligatoires 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 optionnels
pour l'identificateur URI du service DXL, le service est appelé.
- Le script est exécuté sur un serveur d'interopérabilité.
- Les résultats sont envoyés.
Les scripts contrôlés et personnalisés par l'administrateur Rational DOORS,
qui peut décider quels scripts DXL sont exposés sur l'interface de service.
L'administrateur peut verrouiller la fonction d'appel de certaines fonctions
pouvant être considérées comme un risque potentiel pour la sécurité, par exemple "runDXL".
Certains DXL, tels que les widgets d'interface utilisateur, ne seront jamais pris
en charge.
Etant donné que la reconnaissance de service est protégée par OAuth,
si vous utilisez le service DXL OSLC, vous devez vous authentifier en saisissant
votre nom d'utilisateur et votre mot de passe.
La procédure type d'utilisation du service DXL OSLC
est la suivante :
- Création d'un script DXL.
- Installez le script DXL en tant que service.
- Localisez le service à l'aide de la reconnaissance de service.
- Appel du service.
- Extraction de la valeur de retour à partir de la réponse.
Exemple
- Créez un fichier DXL nommé helloWorld.inc contenant 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.version\lib\dxl\addins\services.
- Ouvrez 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. Un service nommé helloWorld est créé.
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"
}
- Appel du service. L'identificateur URI est similaire à l'exemple suivant : http://servername:portnumber/dwa/rm/dxl/helloWorld
- Définissez les en-têtes accept et content-type en saisissant
les éléments suivants : application/rdf+xml
- Vérifiez que le contenu de la requête ressemble au code suivant :
<?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>
- Pour transmettre des arguments au service, utilisez l'élément <doors:arguments>.
Saisissez une chaîne de texte représentant les arguments souhaités.
Le service DXL transforme cette chaîne en arguments requis par
la fonction DXL des services. L'exemple précédent présente un seul
paramètre, English, transmis à la fonction
getHelloString. Si une fonction DXL
prévoit deux paramètres, la requête ressemble à l'exemple suivant :
<doors:Arguments>
<doors:arguments>English,French</doors:arguments>
</doors:Arguments>
Le service DXL de réception divise la liste séparée par des virgules
en chaînes distinctes English et French.
- Si certains de vos arguments ne sont pas des chaînes, vous devez
les convertir au type approprié à l'aide du DXL. Par exemple,
si un argument est un entier, vous pouvez utiliser l'opération intOf
pour convertir la chaîne extraite de la liste séparée par des virgules
en valeur de type int. Ensuite, vous pouvez transmettre la valeur à la
méthode.
Le contenu de la réponse ressemble au code suivant :
<?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>
Le service n'assure 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.