Bei IBM® Rational DOORS
umfasst die Implementierung von Version 2 der OSLC-RM-Spezifikation (RM = Requirements Management)
einen Service, den Sie für die Ausführung von Rational DOORS-DXL-Scripts
mit dem HTTP-Protokoll verwenden können.
Rational arbeitet für die Integration mit
Rational- und Nicht-Rational-Tools mit einer
auf Open Services for Lifecycle Collaboration (OSLC) basierenden Technologie.
Rational DOORS
ergänzt die OSLC-Standardfunktionalität um einen OSLC-DXL-Service, den Sie für die Ausführung von
Rational DOORS-DXL-Scripts
über HTTP verwenden können. Der Service basiert auf dem
Konzept einer DXL-Scriptbibliothek. Um den Service nutzen zu können, ist der folgende Prozess erforderlich:
- Der Benutzer sucht das erforderliche OSLC-DXL-Script.
- Der Benutzer ruft das Script auf, um die erforderlichen Parameter
im OSLC-Aufruf zu verpacken. Wenn Sie eine GET-Anforderung für den DXL-Service-URI übergeben, enthält die Antwort Hilfeinformationen zum Script, wie der
Autor sie angegeben hat. Wenn Sie eine PUT-Anforderung mit optionalen Parametern
für den DXL-Service-URI übergeben, wird der Service dadurch aufgerufen.
- Das Script wird auf einem Interoperation Server ausgeführt.
- Die Ergebnisse werden gemeldet.
Die Scripts werden vom Rational DOORS-Administrator
gesteuert und angepasst, der darüber entscheiden kann, welche DXL-Scripts in der Serviceschnittstelle
verfügbar gemacht werden.
Der Administrator kann die Möglichkeit zum Aufrufen bestimmter
Funktionen sperren, die als potenzielles Sicherheitsrisiko betrachtet werden
könnten, z. B. 'runDXL'.
Bestimmte DXL-Scripts, z. B.
Benutzerschnittstellenwidgets, werden in keinem Fall unterstützt.
Da die Serviceerkennung durch OAuth geschützt ist,
müssen Sie sich bei der Verwendung des OSLC-DXL-Service durch Eingabe Ihres Benutzernamens und
Ihres Kennworts authentifizieren.
Für die Verwendung des OSLC-DXL-Service
sind die folgenden Standardschritte durchzuführen:
- Erstellen eines DXL-Scripts.
- Installieren des DXL-Scripts als Service.
- Suchen des Service über die Serviceerkennung.
- Aufrufen des Service.
- Extrahieren des Rückgabewerts aus der Antwort.
Beispiel
- Erstellen einer DXL-Datei mit dem Namen helloWorld.inc, die den
folgenden Code enthält:
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"
}
- Kopieren Sie die Datei helloWorld.inc
in das Verzeichnis /addins/services.
Der Standardspeicherort
dieses Verzeichnisses lautet C:\Programme (x86)\IBM\Rational\DOORS\9.5\lib\dxl\addins\services.
- Öffnen Sie einen Rational DOORS-Client und melden Sie sich als Administrator an.
- Um die DXL zu installieren, öffnen Sie ein DXL-Fenster und geben Sie den folgenden DXL-Code ein. Es wird
ein Service mit dem Namen 'helloWorld' erstellt.
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"
}
- Aufrufen des Service. Der URI entspricht in etwa dem folgenden Beispiel:
http://Servername:Portnummer/dwa/rm/dxl/helloWorld
- Legen Sie sowohl für den Header accept als auch für den Header content-type den folgenden Eintrag fest:
application/rdf+xml.
- Überprüfen Sie, ob der Anforderungsinhalt dem folgenden Code gleicht:
<?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>
- Verwenden Sie das Element <doors:arguments>, um Argumente an den Service zu übergeben.
Geben Sie für den Elementtext eine Zeichenfolge ein, die die erforderlichen Argumente darstellt.
Der DXL-Service setzt diese Zeichenfolge in die Argumente um, die für die
DXL-Servicefunktion erforderlich sind. In dem vorherigen Beispiel wird
ein einzelner Parameter gezeigt (English), der an die Funktion
getHelloString übergeben wird. Wenn eine DXL-Funktion
zwei Parameter erwartet, sieht die Anforderung wie im folgenden Beispiel aus:
<doors:Arguments>
<doors:arguments>English,French</doors:arguments>
</doors:Arguments>
Der empfangende DXL-Service teilt die durch Kommas getrennte Liste
in die beiden separaten Zeichenfolgen English und French auf.
- Bei Argumenten, die nicht vom Datentyp 'string' sind, müssen Sie sie mithilfe von
DXL in den entsprechenden Typ konvertieren. Beispiel:
Wenn ein Argument vom Datentyp 'integer' ist, können Sie mithilfe der Operation intOf
den Datentyp 'string', der aus der durch Kommas getrennten Liste extrahiert wurde,
in den Typwert 'integer' konvertieren. Anschließend können Sie den Wert an die Methode
übergeben.
Der Inhalt der Antwort gleicht dem folgenden Code:
<?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>
Mit dem Service kann kein Marshalling durchgeführt werden. Argumente sind im Zeichenfolgeformat angegeben, aus dem das DXL-Script Werte extrahiert und diese dann in die erwarteten einzelnen Parameter konvertiert.