OSLC-DXL-Services für Rational DOORS

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:
  1. Der Benutzer sucht das erforderliche OSLC-DXL-Script.
  2. 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.
  3. Das Script wird auf einem Interoperation Server ausgeführt.
  4. 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:
  1. Erstellen eines DXL-Scripts.
  2. Installieren des DXL-Scripts als Service.
  3. Suchen des Service über die Serviceerkennung.
  4. Aufrufen des Service.
  5. Extrahieren des Rückgabewerts aus der Antwort.

Beispiel

  1. 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"
    }
  2. 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.
  3. Öffnen Sie einen Rational DOORS-Client und melden Sie sich als Administrator an.
  4. 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" 
    }
  5. Aufrufen des Service. Der URI entspricht in etwa dem folgenden Beispiel: http://Servername:Portnummer/dwa/rm/dxl/helloWorld
  6. Legen Sie sowohl für den Header accept als auch für den Header content-type den folgenden Eintrag fest: application/rdf+xml.
  7. Ü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>
  8. 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.
  9. 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.


Feedback