Sie sind auf Seite 1von 54

SDK-Entwicklerhandbuch

CaliberRM

Die Borland Software Corporation verfgt mglicherweise ber Patente und/oder anhngige Patentanmeldungen, die den Inhalt dieser Dokumentation betreffen. Durch die Bereitstellung dieses Dokuments erhalten Sie keine Lizenz fr diese Patente. Copyright 19972006 Borland Software Corporation und/oder ihre Tochtergesellschaften. Alle Marken- und Produktnamen von Borland sind Marken oder eingetragene Marken der Borland Software Corporation in den USA und anderen Lndern. Alle anderen Marken sind Eigentum der jeweiligen Inhaber. CRM06-SDKPG November 2006

Inhalt
Kapitel 1 Kapitel 4

Einfhrung
Kapitel 2

Traceability-Add-In fr CaliberRM erstellen


Einfhrung . . . . . . . . . . . . . . . . . . . Visual Basic.NET-Beispiel verwenden . . . . . Traceability-Add-In-Interfaces . . . . . . . . . VendorSession . . . . . . . . . . . . . . . VendorView . . . . . . . . . . . . . . . . . VendorObject . . . . . . . . . . . . . . . . Traceability-Add-In registrieren und aktivieren. . . . . . . . . . . . . . . . . . . . . .

41
41 41 42 42 44 44 46

Mit Visual Basic SDK-Anwendungen schreiben


Einfhrung . . . . . . . . . . . . . . . . . IDE einrichten . . . . . . . . . . . . . . . . CaliberRM-Bibliothek initialisieren . . . . . Verbindung zu einem CaliberRM-Server herstellen . . . . . . . . . . . . . . . . . Sitzungen verwenden . . . . . . . . . . . . CaliberRM-Objekte erstellen . . . . . . . . CaliberRM-Objekte ndern . . . . . . . . . CaliberRM-Objekte lschen. . . . . . . . . Anforderungen . . . . . . . . . . . . . . . Anforderungen erstellen . . . . . . . . . Attribute und Attributwerte . . . . . . . . Attributwerte auflisten . . . . . . . . . . Attributwerte einrichten . . . . . . . . . Anforderungsbeschreibungen . . . . . . Dokumentreferenzen . . . . . . . . . . Zustndigkeiten . . . . . . . . . . . . . Historie. . . . . . . . . . . . . . . . . . Diskussionen. . . . . . . . . . . . . . . Anforderungsbume . . . . . . . . . . . Abhngigkeit . . . . . . . . . . . . . . . . Abhngigkeiten abrufen . . . . . . . . . Abhngigkeiten zwischen Anforderungen erstellen . . . . . . . . . . . . . . . . Abhngigkeiten zu Software-Artefakten erstellen, die keine Anforderungen sind Abhngigkeiten lschen . . . . . . . . .

. . . . . 3 . . . . . 3 . . . . . 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . 6 . 7 . 7 . 8 . 8 . 8 . 9 . 11 . 13 . 14 . 16 . 16 . 17 . 20 . 21 . 24 . 24

Anhang A

CaliberRM-Objektmodell

47

. . . . . 25 . . . . . 26 . . . . . 26

Kapitel 3

Mit Java SDK-Anwendungen schreiben


Einfhrung . . . . . . . . . . . . . . . . . CaliberServer erstellen . . . . . . . . . . . Sitzungen verwenden . . . . . . . . . . . . CaliberRM Java SDK - Konventionen . . . . CaliberRM-Objekte erstellen . . . . . . . . CaliberRM-Objekte ndern . . . . . . . . . CaliberRM-Objekte lschen. . . . . . . . . Anforderungen . . . . . . . . . . . . . . . Anforderungsbume . . . . . . . . . . . Anforderungen erstellen . . . . . . . . . Anforderungsattribute . . . . . . . . . . Anforderungshistorie. . . . . . . . . . . Abhngigkeit . . . . . . . . . . . . . . . . Abhngigkeiten abrufen . . . . . . . . . Abhngigkeiten zwischen Anforderungen erstellen . . . . . . . . . . . . . . . . Abhngigkeiten zu Software-Artefakten erstellen, die keine Anforderungen sind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27
. 27 . 27 . 29 . 30 . 30 . 31 . 31 . 31 . 31 . 35 . 36 . 37 . 38 . 39

. . . . . 39 . . . . . 40

ii

Kapitel

Kapitel 1

Einfhrung

CaliberRM stellt ber das CaliberRM Software Development Kit (SDK) und das Traceability-Add-In-API hilfreiche Erweiterungsmglichkeiten bereit.

CaliberRM SDK
Mithilfe des CaliberRM SDK knnen Sie CaliberRM-Informationen, z. B. Projekte, Baselines, Anforderungen, Benutzer und Gruppen, erstellen, ndern und lschen. Das CaliberRM SDK ermglicht Ihnen den Zugriff auf alle Anforderungsdaten in CaliberRM mittels eines in Java oder einer anderen Sprache, die .Net oder COM untersttzt, geschriebenen Programms. Dieses Dokument bietet eine Einfhrung zu CaliberRM-APIs fr Visual Basic- und JavaProgrammierer. Hinweis: Eine detaillierte Dokumentation fr Programmierer im Javadoc-Format ist unter Programme\Borland\CaliberRM SDK <Version>\api\index.html verfgbar oder wenden Sie sich fr weitere Informationen an den Borland-Support. Wichtig: Wenn Ihre vorhandene SDK-Anwendung mit einem noch nicht auf diese Version aktualisierten Server eine Verbindung herstellen muss, drfen Sie Ihre Anwendung nicht mit dem in dieser Version enthaltenen SDK neu compilieren. Verwenden Sie beim Schreiben von SDK-Anwendungen immer die lteste SDK-Version, die auf einem der Server installiert ist, zu denen die Anwendung eine Verbindung herstellen soll. Sie mssen Ihre .NET/COM SDK-Anwendungen neu compilieren, um die in dieser Version enthaltene neue SDK-Funktionalitt (Sicherheitsprofile erstellen und zuweisen, Benutzer-LDAP DN erhalten/einstellen) zu verwenden. Die neu compilierte Anwendung ist kompatibel mit dieser Server-Version. Weitere Informationen zum Erstellen von SDK-Anwendungen finden Sie in diesem Handbuch in den Abschnitten Mit Visual Basic SDK-Anwendungen schreiben und Mit Java SDK-Anwendungen schreiben.

Ka pi te l 1: Ei n f hr un g

Traceability-Add-In-Technologie
CaliberRM bietet mit dem Traceability-Add-In eine einzigartige Mglichkeit zur Erweiterung Ihrer Informationen zu Abhngigkeiten mit beliebigen Tools von Drittherstellern. Sie knnen ein Traceability-Add-In erstellen, um einem externen Tool TraceabilityFunktionalitt zu bieten. So kann beispielsweise ein Traceability-Add-In fr Microsoft Project erstellt werden, mit dem Echtzeit-Abhngigkeiten von Anforderungen in CaliberRM auf Tasks in MS Project einfach definiert und verwaltet werden knnen. Sobald die Abhngigkeit generiert wurde, kann sie in der Abhngigkeitenmatrix und im Abhngigkeitendiagramm angezeigt und in der Document Factory ein Bericht dazu erstellt werden. Weitere Informationen zum Erstellen eines Traceability-Add-Ins finden Sie in diesem Handbuch im Abschnitt Traceability-Add-In fr CaliberRM erstellen.

Weitere Informationen
Wenn Sie Hilfe zum CaliberRM SDK bentigen, richten Sie Ihre Anfrage an die CaliberRM SDK-Newsgroup unter: news://newsgroups.borland.com/ borland.public.caliber-rm.sdk. Wenn Sie ein im CaliberRM SDK aufgetretenes Problem weiterleiten mchten, wenden Sie sich an den Support unter: http://support.borland.com/.

2 Ca lib erR M - S DK-En tw ickle r han db uch

Kapitel

Kapitel 2

Mit Visual Basic SDK-Anwendungen schreiben

Einfhrung
Dieses Kapitel bietet eine Einfhrung in das CaliberRM SDK (Software Development Kit) fr Visual Basic-Programmierer. Es enthlt die folgenden Informationen:

Beschreibung der Schritte, die zum Einrichten Ihrer IDE fr das CaliberRM SDK erforderlich sind Erluterungen zur Verwendung des SDK, um eine Verbindung zu einem CaliberRMServer herzustellen Anleitungen zum Erstellen, ndern und Lschen von CaliberRM-Informationen Eine bersicht zur Arbeit mit Anforderungsbumen, -attributen und -protokollen Eine Einfhrung in die Arbeit mit CaliberRM-Diskussionen Erluterungen zur Verwendung des SDK zum Anzeigen, Erstellen und Lschen von Abhngigkeiten

IDE einrichten
Damit Sie das CaliberRM SDK in Ihrem Projekt verwenden knnen, mssen Sie in Ihrer IDE eine Referenz auf die Objektbibliothek des SDK erstellen.

Visual Studio 6.0


1 Klicken Sie im Hauptmen auf Project (Projekt) > Reference... (Referenz).

Wenn Sie das SDK erfolgreich installiert haben, wird eine Referenz mit dem Namen CaliberRM library (CaliberRM-Bibliothek) in der Liste der verfgbaren Referenzen angezeigt.
2 Whlen Sie CaliberRM library (CaliberRM-Bibliothek) und klicken Sie auf OK, um

die nderungen zu speichern.

Ka pit el 2 : M i t V i sual Basic SDK -A nw end un ge n sch re ibe n

3 Wenn keine Referenz mit dem Namen CaliberRM library (CaliberRM-Bibliothek) in

der Liste der Referenzen angezeigt wird, klicken Sie auf Browse (Durchsuchen) und suchen Sie die CaliberRMSDK-DLL-Datei auf Ihrer Festplatte. (Die Bibliothek befindet sich in der Regel im Ordner Programme\Borland\CaliberRM SDK <Version>\api\lib. Der Dateiname der Bibliothek ist CaliberRMSDK<Version>.dll.)
4 Klicken Sie im Dialogfeld References (Referenzen) auf OK.

Visual Studio .NET 2003


1 Klicken Sie im Hauptmen auf Project (Projekt) > Add Reference... (Referenz

hinzufgen).
2 Klicken Sie auf das Register Browse (Durchsuchen) im Dialogfeld Add Reference

(Referenz hinzufgen).
3 Suchen Sie die CaliberRM SDK-Bibliothek auf Ihrer Festplatte und klicken Sie auf

Open (ffnen). (Die Bibliothek befindet sich in der Regel im Ordner Programme\ Borland\CaliberRM SDK <Version>\api\lib. Der Dateiname der Bibliothek ist CaliberRMSDK<Version>.dll.)
4 Klicken Sie im Dialogfeld Add Reference (Referenz hinzufgen) auf OK.

Visual Studio 2005


1 Klicken Sie im Hauptmen auf Project (Projekt) > Add Reference... (Referenz

hinzufgen).
2 Klicken Sie auf das Register Browse (Durchsuchen) im Dialogfeld Add Reference

(Referenz hinzufgen).
3 Suchen Sie die CaliberRM SDK-Bibliothek auf Ihrer Festplatte und klicken Sie auf

OK. (Die Bibliothek befindet sich in der Regel im Ordner Programme\Borland\ CaliberRM SDK <Version>\api\lib. Der Dateiname der Bibliothek ist CaliberRMSDK<Version>.dll.)
4 Klicken Sie im Dialogfeld Add Reference (Referenz hinzufgen) auf OK.

Fhren Sie die folgenden Schritte aus, um zu berprfen, ob die Referenz zu CaliberRM SDK richtig eingestellt ist:
1 Klicken Sie im Hauptmen auf Project (Projekt) > Test VBNET Properties (VBNET-

Eigenschaften testen).
2 Klicken Sie auf das Register References (Referenzen). Im Teilfenster References

(Referenzen) sollte CaliberRMSDK<Version>.NET angezeigt werden.

Sie knnen jetzt die CaliberRMSDK-Bibliothek in Ihrem Code verwenden. Stellen Sie sicher, dass Sie CaliberRM SDK-Klassen wie folgt in Ihren Code importieren:

Imports Starbase.CaliberRM.Interop

4 Ca lib erR M - S DK-En tw ickle r han db uch

CaliberRM-Bibliothek initialisieren
Sobald das COM SDK gestartet wurde, startet das SDK auch eine Java Virtual Machine (VM). Der Aufruf des Codes in diesem Abschnitt muss vor allen anderen SDK-Aufrufen erfolgen, da diese Optionen nicht mehr festgelegt werden knnen, wenn die VM bereits geladen wurde. COM-Anwendungen knnen die Objekte Initilizer und IStJavaVMInfo des SDK verwenden, z. B.:

' Das Initialisierer-Objekt ist fr das Laden der JVM zustndig. Dim objInitializer As New Initializer ' IStJavaVMInfo beschreibt eine JVM. Dim objStJavaVMInfo As IStJavaVMInfo ' Aktuelle VM vom Initialisierer abrufen... Set objStJavaVMInfo = objInitializer.JavaConfiguration.CurrentJavaVM ' Speicher-Flag auf maximal 1000 MB setzen... objStJavaVMInfo.Options = "-Xmx1000M"

Hinweis: Die Speicherkapazitt der meisten VMs ist auf 64 MB begrenzt. Dies lsst sich jedoch umgehen, indem ein maximales Speicher-Flag (Xmx) fr die VM gesetzt wird. Geben Sie die maximale Gre des Arbeitsspeicherzuweisungs-Pools in Bytes an. Dieser Wert muss ein Vielfaches von 1024 und grer als 2 MB sein. Fgen Sie den Buchstaben k bzw. K fr Kilobytes oder den Buchstaben m bzw. M fr Megabytes an. Der Standardwert ist 64 MB. Beispiel:

-Xmx83886080 -Xmx81920k -Xmx80m

Verringern Sie die Gre der JVM, wenn die Anwendung die JVM nicht starten kann und die Fehlermeldung Not enough space for object heap (Nicht gengend Arbeitsspeicher fr Objekt-Heap) angezeigt wird. Sie mssen in der Regel die Gre des Arbeitsspeichers fr die JVM an den auf Ihrem Computer verfgbaren Arbeitsspeicher anpassen.

Verbindung zu einem CaliberRM-Server herstellen


Der erste Schritt zur Verwendung des CaliberRM SDK besteht in der Regel darin, eine Verbindung zu einem CaliberRM-Server herzustellen. Zum Herstellen der Verbindung ist es erforderlich, eine Referenz auf ein CaliberServer-Objekt zu erzeugen. Das CaliberServer-Objekt baut die Verbindung zum CaliberRM-Server fr den CaliberRMBenutzer auf und verwaltet sie.

Ka pit el 2 : M i t V i sual Basic SDK -A nw end un ge n sch re ibe n

Im folgenden Code-Beispiel wird eine einfache Visual Basic-Anwendung erstellt, die eine Verbindung zum CaliberRM-Server herstellt:

' Objektvariablen fr die Caliber' Server-Factory, den Caliber-Server und die ' Sitzungsobjekte deklarieren. Dim objServerFact As CaliberServerFactory Dim objServer As CaliberServer Dim objSession As Session ' Den Server- und Server-Factory-Variablen ' Objektreferenzen zuweisen. Set objServerFact = New CaliberServerFactory Set objServer = objServerFact.Create(localhost) ' Der Sitzungsvariablen durch Anmelden beim Server ' eine Objektreferenz zuweisen. Set objSession = objServer.login(admin, admin)

Im oben genannten Beispiel erkennen Sie, dass das Erstellen einer CaliberRM-ServerReferenz zwei Schritte erfordert. Zuerst erstellen Sie die CaliberRM-Server-Factory:

Set objSrvrFctry = New CaliberServerFactory

Anschlieend erstellen Sie mithilfe der Server-Factory eine neue Server-Referenz:

Set objServer = objSrvrFctry.Create(localhost)

Sitzungen verwenden
Ein Session-Objekt stellt die Ansicht eines Benutzers auf CaliberRM dar und dient als Einstiegspunkt in das CaliberRM-Objektmodell. Im vorherigen Beispiel wurde durch die Anmeldung bei einem Caliber-Serverobjekt eine Sitzung erstellt. Im folgenden Code wird dieses Session-Objekt dazu verwendet, die Namen aller Projekte fr den Benutzer sichtbar zu machen.

' Eine Objektvariable fr ein Caliber-Projekt ' deklarieren. Dim objProject As Project 'Jedes Projekt der Sitzung durchlaufen. For Each objProject In objSession.Projects Debug.Print objProject.Name Next objProject

6 Ca lib erR M - S DK-En tw ickle r han db uch

CaliberRM-Objekte erstellen
Mit dem CaliberRM SDK knnen Sie die folgenden Objekte erstellen, ndern und lschen:

Projekte Baselines Benutzer Gruppen Abteilungen Anforderungen Anforderungstypen Sicherheitsprofile Glossare Glossarbegriffe Integrationen

So erstellen Sie CaliberRM-Informationen:


1 2 3

Erstellen Sie eine Factory, die das neue Objekt erzeugt. Rufen Sie die Create-Methode der Factory auf. Rufen Sie die Save-Methode des neuen Objekts auf.

Im folgenden Beispiel werden die zum Erstellen eines neuen User-Objekts erforderlichen Schritte beschrieben.

' Neue Factory erzeugen, die zum Erstellen neuer Benutzerobjekte ' verwendet wird. Set objUserFactory = New UserFactory ' Neues Benutzerobjekt erstellen. Set objNewUser = objUserFactory.Create(jdoe, objSession) ' Eigenschaften des neuen Benutzerobjekts einrichten. objNewUser.FirstName = John objNewUser.LastName = Doe ' Das neue Benutzerobjekt speichern. objNewUser.save

CaliberRM-Objekte ndern
So ndern Sie ein CaliberRM-Objekt:
1 2 3 4

Erstellen Sie eine Instanz eines CaliberRM-Objekts. Rufen Sie die Lock-Methode des Objekts auf. Legen Sie die Eigenschaften des Objekts fest. Rufen Sie die Save-Methode des Objekts auf.

In der nachfolgenden Abbildung sehen Sie ein Beispiel hierfr.

Ka pit el 2 : M i t V i sual Basic SDK -A nw end un ge n sch re ibe n

' Ein Gruppenobjekt abrufen. Set objGroup = objSession.Groups.Item(2) ' Die Gruppe sperren. objGroup.lock ' Die Gruppeneigenschaften ndern. objGroup.Name = Neuer Name objGroup.EmailAddress = Neue E-Mail-Adresse objGroup.Description = Neue Beschreibung ' Genderte Gruppe speichern. objGroup.save

CaliberRM-Objekte lschen
Sie knnen ein CaliberObject aus CaliberRM lschen, indem Sie seine RemoveMethode aufrufen. Beispiel:

Dim objRequirement As Requirement Set objRequirement = objSession.getRequirement(1) objRequirement.remove

Beachten Sie, dass durch die Remove-Methode die Anforderung nur aus der aktuellen Baseline gelscht wird. Aus vorhergehenden Baselines wird sie nicht gelscht.

Anforderungen
In diesem Abschnitt finden Sie detaillierte Beschreibungen zum Erstellen, ndern und Lschen von Anforderungen.

Anforderungen erstellen
SDK bietet zwei Mglichkeiten, neue Anforderungen zu erstellen. Erstens: Das Erstellen von Anforderungen auf der obersten Hierarchieebene des Anforderungsbaums eines Projekts. Zweitens: Das Erstellen einer Anforderung, die einer bereits vorhandenen Anforderung untergeordnet ist.

8 Ca lib erR M - S DK-En tw ickle r han db uch

Im foIgenden Beispiel wird die erste Methode (Create1) zum Erstellen einer neuen Anforderung verwendet.

' Das erste Projekt in der Projektsammlung der Sitzung abrufen Set objProject = objSession.Projects.Item(0) ' Den ersten Anforderungstyp im Projekt abrufen. Set objType = objProject.CurrentBaseline.RequirementTypes.Item(0) ' Eine Factory fr neue Anforderungsobjekte erstellen. Set reqFactory = New RequirementFactory ' Eine neue Anforderung erstellen. Set newRequirement = reqFactory.Create1( _ Neue Anforderung, _ objProject, _ objType, _ 0, _ objSession) newRequirement.save

Beachten Sie, dass im vorherigen Beispiel als 4. Parameter eine Null (0) an Create1 bergeben wurde. Dies ist die Indexposition im Anforderungsbaum des Projekts, an der diese neue Anforderung eingefgt wird. Das folgende Beispiel verdeutlicht, wie mit der zweiten create-Methode (Create2) eine der vorhandenen Anforderung untergeordnete Anforderung erstellt wird.

' Eine Factory fr neue Anforderungsobjekte erstellen. Set reqFactory = New RequirementFactory ' Eine Anforderung abrufen, die der neuen Anforderung ' bergeordnet ist. Set parentReq = objSession.getRequirement(1) ' Eine neue Anforderung, die parentReq untergeordnet ist Set newChildRequirement = reqFactory.Create2( _ Neue untergeordnete Anforderung, _ parentReq, _ 4, _ objSession)

Attribute und Attributwerte


CaliberRM ermglicht das Definieren von Anforderungen mit einer beliebigen Anzahl von benutzerdefinierten Attributen (UDA = User-Defined Attributes). Zudem enthalten alle Anforderungen ein Status- und ein Priority-Systemattribut. Auerdem verfgen Anforderungsobjekte im CaliberRM SDK ber die Eigenschaften Status, Priority und AttributeValues, die Status-, Priority- und UDA-Werte zurckgeben. Die Attribute-Objekte im CaliberRM SDK stellen einen CaliberRM-Attributtyp dar, whrend die AttributeValue-Objekte eine Instanz eines Typs reprsentieren.

Ka pit el 2 : M i t V i sual Basic SDK -A nw end un ge n sch re ibe n

In der folgenden Tabelle wird die Relation zwischen CaliberRM-Attributen und den Attribute- und AttributeValue-Objekten des SDK dargestellt: CaliberRM-Attribute
Einzeiliger Text Mehrzeiliges Textfeld Lange Ganzzahl Dauer Fliekommazahl Datum Boolescher Wert Mehrfachauswahlliste Liste fr die Einzelauswahl Gruppenliste fr die Mehrfachauswahl Liste fr die Einzelauswahl einer Gruppe Benutzerliste fr die Mehrfachauswahl Liste fr die Einzelauswahl eines Benutzers

SDK-Attribut
UDAText UDAInteger UDADuration UDAFloat UDADate UDABoolean UDAList

SDK-AttributeValue
UDATextValue UDAIntegerValue UDADurationValue UDAFloatValue UDADateValue UDABooleanValue UDAListValue

Das folgende Code-Beispiel zeigt, wie Attributobjekte von einem Anforderungstyp erstellt werden:

' Den ersten Anforderungstyp der Sitzung abrufen. Set objRequirementType = objSession.RequirementTypes.Item(0) ' Das erste benutzerdefinierte Register des Anforderungstyps ' abrufen Set objCustomTab = objRequirementType.CustomTabs.Item(0) ' Die Namen der Attribute ausgeben, die dem benutzerdefinierten ' Register zugeordnet sind Dim objAttribute As CaliberRM.Attribute For Each objAttribute In objCustomTab.attributes Debug.Print vbTab & vbTab & objAttribute.Name Next objAttribute

Auf dieselbe Weise knnen die AttributeValue-Objekte einer Anforderung erstellt werden. Im folgenden Beispiel wird dieselbe Liste wie im vorherigen Beispiel angezeigt und gleichzeitig der Wert hinzugefgt:

Dim objAttribValue As AttributeValue ' Alle Attributwerte durchlaufen For Each objAttribValue In objRequirement.AttributeValues ' Den Attributnamen und seinen Wert ausgeben Debug.Print _ objAttribValue.Attribute.Name _ & = _ & objAttribValue.Value Next objAttribValue

10 C alibe rR M - SDK -E ntw icklerha nd buch

Im folgenden Beispiel wird die AttributeValue-Attributeigenschaft verwendet, um den Namen abzurufen:

objAttribValue.Attribute.Name

Mit dieser Eigenschaft knnen Sie jederzeit den Typ eines Attributwerts abrufen. Das folgende Beispiel erlutert, wie Sie mit einem bestimmten Attribute- und AttributeValueTyp umgehen.

' Alle Attributwerte durchlaufen. For Each objAttribValue In objRequirement.AttributeValues ' Nach einem UDATextValue suchen. If TypeOf objAttribValue Is UDATextValue Then ' Den AttributeValue-Typ in einen UDATextValue-Typ ' umwandeln. Dim textValue As UDATextValue Set textValue = objAttribValue ' Den Attributtyp in einen UDAText-Typ umwandeln. Dim textAttribute As UDAText Set textAttribute = objAttribValue.Attribute ' Wertspezifische Informationen ausgeben. Debug.Print _ Der Wert von UDATextValue ist: _ & textValue.Value ' Werttypspezifische Informationen ausgeben. Debug.Print _ Die maximale Lnge dieses Werts kann betragen: _ & textAttribute.MaximumLength Debug.Print _ Die Mindestlnge dieses Werts kann betragen: _ & textAttribute.MinimumLength End If Next objAttribValue

Attributwerte auflisten
Es wurde bereits erwhnt, dass das UDAListValue-Objekt alle Listenattributwerte umfasst, die einer Anforderung zugeordnet werden knnen. In diesem Abschnitt wird anhand praktischer Beispiele verdeutlicht, wie ein UDAListValue-Objekt zum Anzeigen von Einfach- oder Mehrfachauswahllisten verwendet werden kann.

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

11

In diesem Beispiel werden Listeneintrge und der ausgewhlte Wert aus der Statusliste einer Anforderung angezeigt.

Private Sub Form_Load() ... Dim objRequirement As Requirement Set objRequirement = objSession.getRequirement(1) PrintList objRequirement.Status End Sub Private Sub PrintList(objListValue As UDAListValue) ' Die Listeneintrge ausgeben Debug.Print Listeneintrge: Dim listEntry As UDAListEntry For Each listEntry In objListValue.ListEntries Debug.Print listEntry.Object Next listEntry ' Den ausgewhlten Wert ausgeben Debug.Print Ausgewhlter Wert = & objListValue.selectedValue End Sub

Dieser Code kann so angepasst werden, dass er nur die Auswahl eines einzelnen Eintrags aus einer Liste untersttzt:

Private Sub PrintSSUserList(objReq As Requirement) Dim objAttribValue As CaliberRM.AttributeValue ' Alle Attribute durchlaufen, die der ' bereitgestellten Anforderung zugeordnet sind For Each objAttribValue In objReq.AttributeValues ' Nur Attribute des Typs ' Liste fr die Einzelauswahl eines Benutzers ' ausgeben. Set objAttribute = objAttribValue.Attribute If objAttribute.UITypeName = objAttribute.UI_NAME_SSUL Then ' Die Eintrge der Benutzerliste ausgeben Debug.Print Eintrge der Benutzerliste: Dim listEntry As UDAListEntry For Each listEntry In objAttribValue.ListEntries Debug.Print listEntry.Object.Name Next listEntry Debug.Print Ausgewhlten Wert: & _ objAttribValue.SelectedValue.Name End If Next objAttribValue End Sub

12 C alibe rR M - SDK -E ntw icklerha nd buch

Im obigen Beispiel erkennen Sie, dass aus einer Sammlung von Attributen eine Benutzerliste fr die Auswahl eines einzelnen Eintrags ausgewhlt wurde, indem die Eigenschaft UITypeName ihres Attributs mit der Konstanten UI_NAME_SSL verglichen wurde:

If objAttribute.UITypeName = objAttribute.UI_NAME_SSUL Then


Es kann jedoch auch ein Attribut aus der Sammlung nach Name ausgewhlt werden. Beispiel:

If objAttribute.Name = "My SSUL Attribute" Then


Das UDAListValue-Objekt kann auch Werte einer Mehrfachauswahlliste darstellen. Der folgende Code gibt beispielsweise die Eigenschaften Name und Selected des jeweiligen Elements einer Gruppenliste fr die Mehrfachauswahl wieder:

Dim listEntry As UDAListEntry For Each listEntry In objAttribValue.ListEntries ' Mit der 'Selected'-Eigenschaft des Listeneintrags kann ' ermittelt werden, ob die Gruppe ausgewhlt ist If listEntry.Selected Then Debug.Print listEntry.Object.Name & *** Selected ***" Else Debug.Print listEntry.Object.Name End If Next listEntry

Attributwerte einrichten
So ndern Sie die Attributwerte einer Anforderung:
1 Whlen Sie eine Anforderung aus. 2 Rufen Sie die Lock-Methode der Anforderung auf. 3 Legen Sie die Attributwerttypen (d. h. UDATextValue und UDAListValue) der

Anforderung fest.
4 ndern Sie die AttributeValue-Objekte der Anforderung basierend auf ihrem Typ. 5 Aktualisieren Sie die Anforderung, indem Sie ihre AttributeValue-Eigenschaft auf

den neuen Wert setzen.


6 Rufen Sie die Save-Methode der Anforderung auf.

In der nachfolgenden Abbildung sehen Sie ein Beispiel hierfr.

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

13

Set objRequirement = objSession.getRequirement(1) objRequirement.lock ' Alle Attributwerte der Anforderung durchlaufen. Dim objAttribValue As AttributeValue For Each objAttribValue In objRequirement.AttributeValues If TypeOf objAttribValue Is UDABooleanValue Then ' Wenn es sich um einen booleschen UDA-Wert handelt, den neuen ' Wert auf das Gegenteil des aktuellen Werts setzen. objAttribValue.Value = Not objAttribValue.Value ElseIf TypeOf objAttribValue Is UDATextValue Then ' Wenn es sich um einen UDA-Textwert handelt, den neuen ' Wert auf die aktuelle Zeit setzen. objAttribValue.Value = Time ElseIf TypeOf objAttribValue Is UDAIntegerValue Then ' Wenn es sich um einen UDA-Ganzzahlwert handelt, den ' Wert um eins hochsetzen. objAttribValue.Value = objAttribValue.Value + 1 ElseIf TypeOf objAttribValue Is UDAListValue Then If objAttribValue.MaximumSelections = 1 Then ' Wenn es sich um einen Wert fr die Einzelauswahl handelt, ' den augewhlten Index um 1 erhhen. objAttribValue.SelectedIndex = _ objAttribValue.SelectedIndex + 1 End If End If ' Das Anforderungsobjekt mit dem neuen Wert aktualisieren objRequirement.AttributeValue = objAttribValue Next objAttribValue ' Die genderte Anforderung speichern objRequirement.save UDA-Werte ndern

Anforderungsbeschreibungen
Die Beschreibung einer Anforderung kann in CaliberRM entweder ber einen TextString oder ein Element einer zugeordneten/gemeinsam genutzten Beschreibungsrelation erfolgen. Die Beschreibung einer Anforderung wird als gemeinsam genutzt bezeichnet, wenn sie von anderen Anforderungen verwendet wird. Die Beschreibung einer Anforderung wird als zugeordnet bezeichnet, wenn die Anforderung nicht die eigene Anforderungsbeschreibung verwendet.

14 C alibe rR M - SDK -E ntw icklerha nd buch

Das CaliberRM SDK stellt drei Klassen fr die mglichen Statuswerte einer Anforderungsbeschreibung zur Verfgung: RequirementDescription, RequirementDescriptionMapped und RequirementDescriptionShared. Alle Beschreibungsobjekte enthalten eine Text-Eigenschaft, die es Ihnen erlaubt, den Beschreibungstext abzurufen. Der folgende Code-Baustein kann daher fr alle Anforderungen verwendet werden:

Debug.Print req.Description.Text

Um die Beschreibung einer Anforderung zu ndern, setzen Sie einfach die Description-Eigenschaft der Anforderung auf das neue RequirementDescriptionoder RequirementDescriptionMapped-Objekt. Im folgenden Code-Beispiel wird eine einfache Textbeschreibung erstellt (Lock- und Save-Methodenaufrufe sollten aus Grnden der Klarheit vermieden werden):

' Eine Factory zum Erstellen der Beschreibung erzeugen. Dim descriptionFactory As New RequirementDescriptionFactory ' Ein neues Beschreibungsobjekt erstellen und damit die ' Beschreibungseigenschaft der Anforderung einrichten. req.Description = descriptionFactory.Create(Neue Beschreibung.)

Der folgende Code erstellt eine einfache HTML-Beschreibung fr die Anforderung.

' Eine Factory zum Erstellen der Beschreibung erzeugen. Dim descriptionFactory As New RequirementDescriptionFactory ' Ein neues Beschreibungsobjekt erstellen und damit die ' Beschreibungseigenschaft der Anforderung einrichten. req.Description = descriptionFactory.Create(<html><body>Neu <i><b>formatierte Beschreibung.</b></i></body></html>)

Im nchsten Beispiel wird die Beschreibung von Anforderung 1 Anforderung 2 zugeordnet.

Set req1 = objSession.getRequirement(1) Set req2 = objSession.getRequirement(2) ' Eine Factory zum Erstellen von zugeordneten Beschreibungen erzeugen. Dim mapDescriptionFactory As New RequirementDescriptionMappedFactory ' Eine neue zugeordnete Beschreibung erstellen und damit die ' Beschreibungseigenschaft der Anforderung einrichten. req1.Description = mapDescriptionFactory.Create(req2, objSession)

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

15

Dokumentreferenzen
Das CaliberRM SDK bietet drei Typen von Dokumentreferenzobjekten: FileReference, TextReference und WebReference. Sie knnen alle drei Referenzobjekte erstellen und sie zur DocumentReferences-Eigenschaft einer Anforderung hinzufgen. Im folgenden Beispiel wird eine Instanz dieser Objekte erstellt und die Anforderung mithilfe dieser Objekte gendert.

' Die vorhandene Referenzsammlung der Anforderung ' zuerst in eine bearbeitbare Sammlung kopieren. Dim colFactory As New CollectionFactory Set docRefs = colFactory.CreateByIStCollection(req.DocumentReferences) ' Eine Textreferenz erstellen und zur docRefs-Sammlung hinzufgen. Dim textRefFactory As New TextReferenceFactory docRefs.Add textRefFactory.Create("Textreferenz") ' Eine Webreferenz erstellen und zur docRefs-Sammlung hinzufgen. Dim webRefFactory As New WebReferenceFactory docRefs.Add webRefFactory.Create(www.microsoft.com) ' Eine Dateireferenz erstellen und zur docRefs-Sammlung hinzufgen. Dim fileRefFactory As New FileReferenceFactory docRefs.Add fileRefFactory.Create(C:\foo.txt) ' Referenzen einrichten und speichern. req.lock req.DocumentReferences = docRefs req.save

Im obigen Beispiel erkennen Sie, dass zuerst mithilfe der CreateByIStCollectionMethode von CollectionFactory eine neue Sammlung erstellt wurde. Dies ist erforderlich, da die DocumentReferences-Eigenschaft einer Anforderung schreibgeschtzt ist und daher nicht gendert werden kann.

Zustndigkeiten
In der Regel sind in CaliberRM der jeweiligen Anforderung mehrere Personen als zustndige Benutzer zugeordnet. Sie knnen diese Benutzer und deren Gruppen ber die Responsibilities-Eigenschaft der Anforderung abrufen, die aus einer Sammlung der GroupMemberAssignment-Objekte besteht.

16 C alibe rR M - SDK -E ntw icklerha nd buch

Der folgende Code hebt die Zuordnung aller Benutzer zu den Anforderungen, fr die sie zustndig sind, auf.

' Die GroupMemberAssignment-Objekte abrufen, ' die die Zustndigkeiten fr die Anforderung angeben. Dim gmaCollection As CaliberRM.Collection Set gmaCollection = req.responsibilities ' Alle GroupMemberAssignment-Objekte ' der Sammlung durchlaufen. Dim gma As GroupMemberAssignment For Each gma In gmaCollection 'Alle zugeordneten Mitglieder durchlaufen... Dim assignedMember As User For Each assignedMember In gma.AssignedMembers ' ... und die Zuordnung aufheben. gma.removeAssignedMember assignedMember Next assignedMember Next gma ' Anforderung sperren, Zustndigkeiten festlegen und speichern. req.lock req.responsibilities = gmaCollection req.save

Historie
Das CaliberRM SDK ermglicht den vollstndigen Zugriff auf die Datenstze der Anforderungshistorie. Um den Verlauf einer Anforderung abzurufen, rufen Sie die History-Eigenschaft eines beliebigen Anforderungsobjekts auf. Das folgende Beispiel veranschaulicht, wie mit diesen Objekten History-Revisionen angezeigt werden knnen:

Dim revision As HistoryRevision For Each revision In objReq.History.Revisions Debug.Print Hauptversion: & revision.Version.MajorVersion Debug.Print Nebenversion: & revision.Version.MinorVersion Debug.Print Datum: & Format(revision.OLEDate, d-mmm) Debug.Print Benutzername: & revision.UserName Debug.Print Kommentar: & revision.Comment Next revision

Dieses Beispiel soll nun so erweitert werden, dass es Informationen zu den einzelnen nderungen enthlt, die Revisionen umfassen. Der folgende Code durchluft alle HistoryChange-Objekte einer HistoryRevision, gibt den Namen des genderten Anforderungsfelds, den Typ der nderung sowie die alten und neuen Werte des Felds aus.

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

17

Dim objChange As HistoryChange For Each objChange In revision.Changes Debug.Print Feldname: & objChange.FieldName Debug.Print Typ: & ChangeTypeToString(objChange.changeType) Debug.Print Alter Wert: & VariantToString(objChange.OldValue) Debug.Print Neuer Wert: & VariantToString(objChange.NewValue) Next objChange

Die Eigenschaften OldValue und NewValue eines Change-Objekts repsentieren den Wert eines Anforderungsfelds vor und nach der nderung. Damit Sie mit diesen Objekten arbeiten knnen, mssen Sie sie nach Typen trennen. Es gibt drei Objekttypen fr nderungen:

String: fr nderungen an Nicht-UDA-Textfeldern, z. B. den Namen oder die Beschreibung einer Anforderung. Attribut: fr nderungen an allen benutzerdefinierten Attributen und Systemattributen. Benutzer: fr nderungen am Eigentmerfeld einer Anforderung.

Die folgende Subroutine (die im vorherigen Beispiel zweimal aufgerufen wurde) trennt die Objekte OldValue und NewValue nach String, Attribut und Benutzer.

' Konvertiert den angegebenen Variant in einen String. Private Function VariantToString(ByVal vntValue As Object) As String ' Alle null-nderungen herausfiltern. If IsNull(vntValue) Then VariantToString = [NULL] ' Wenn es sich um einen String handelt, diesen zurckgeben. ElseIf VarType(vntValue) = vbString Then VariantToString = vntValue Else ' Den Variant-Typ auf ein Objekt eingrenzen. Dim objValue As Object objValue = vntValue ' Wenn es sich bei dem Objekt um ein CaliberObject handelt, ' dieses zurckgeben ' Attribut angeben... If TypeOf objValue Is CaliberObject Then VariantToString = objValue.Name ' nderungen an benutzerdefinierten Attributen und ' Systemattributen ausgeben. ElseIf TypeOf objValue Is AttributeValue Then VariantToString = UDAValueToString(objValue) Else VariantToString = End If End If End Function

18 C alibe rR M - SDK -E ntw icklerha nd buch

Beachten Sie, dass dieser Code zunchst einmal sicherstellt, dass der an diese Subroutine bergebene Variant-Wert nicht null ist. Ein Objekt, dessen nderungswert null ist, tritt in der Regel dann auf, wenn ein UDA zu dem Anforderungstyp hinzugefgt oder aus diesem entfernt wurde. Beachten Sie auerdem, dass der Handler fr AttributeValue-Objekte die Funktion UDAValueToString aufruft:

ElseIf TypeOf objValue Is AttributeValue Then VariantToString = UDAValueToString(objValue)


Die unten angezeigte Konvertierungsfunktion verdeutlicht, wie verschiedene Typen von AttributeValue-Objekten generisch verarbeitet werden knnen.

' Konvertiert AttributeValue (auch UDA-Wert genannt) in einen String. Function UDAValueToString(ByVal objValue As AttributeValue) As String ' Zuerst alle AttributeValue-Objekte verarbeiten, deren ' Value-Attribut problemlos in einen String konvertiert werden kann... If TypeOf objValue Is UDABooleanValue _ Or TypeOf objValue Is UDAFloatValue _ Or TypeOf objValue Is UDAIntegerValue _ Or TypeOf objValue Is UDATextValue Then UDAValueToString = objValue.Value ElseIf TypeOf objValue Is UDADateValue Then UDAValueToString = Format(objValue.OLEDate, d-mmm) ElseIf TypeOf objValue Is UDADurationValue Then UDAValueToString = objValue.Value _ & objValue.Attribute.GranularityText ElseIf TypeOf objValue Is UDAListValue Then UDAValueToString = Ausgewhlte Listeneintrge: For Each objListEntry In objValue.ListEntries If objListEntry.Selected = True Then UDAValueToString = UDAValueToString & _ VariantToString(objListEntry.Object) & _ , End If Next objListEntry End If End Function

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

19

Diskussionen
CaliberRM bietet Projektteams ber die Gruppendiskussionsfunktion die Mglichkeit, ein Feedback zu Anforderungen und Projekten zu erstellen. Darber hinaus ermglicht das CaliberRM SDK Programmierern, Diskussionen zu Anforderungen und Projekten anzuzeigen. Die folgende Subroutine ruft ein CaliberObject ab und zeigt die Informationen zu all seinen Diskussionsnachrichten an. Dazu wird die Discussion-Eigenschaft fr das angegebene CaliberObject verwendet. Beachten Sie, dass diese Subroutine abgebrochen wird, wenn es sich beim CaliberObject nicht um ein Anforderungs- oder Projektobjekt handelt, denn Diskussionen sind nur fr Anforderungen und Projekte verfgbar.

Private Sub PrintDiscussion(objCaliberObj As CaliberObject) ' Diskussionen sind nur fr Projekte und Anforderungen verfgbar. If Not TypeOf objCaliberObj Is Project _ And Not TypeOf objCaliberObj Is Requirement Then Exit Sub End If Dim objDiscussion As Discussion Set objDiscussion = objCaliberObj.Discussion Dim objMessage As DiscussionMessage For Each objMessage In objDiscussion.Messages intTab = objMessage.Depth * 5 Debug.Print Tab(intTab); Thema: & objMessage.Subject Debug.Print Tab(intTab); "Gelesen: & objMessage.Read Debug.Print Tab(intTabDepth); Datum: & _ Format(objMessage.OLEDate, d-mmm) Next objMessage End Sub

Das CaliberRM SDK bietet auerdem die Mglichkeit, Diskussionsnachrichten ber die postMessage-Methode des Diskussionsobjekts zu bergeben. Zudem knnen Sie auf Diskussionsnachrichten mithilfe der postReply-Methode der Diskussionsnachricht antworten. Das folgende Beispiel veranschaulicht die Verwendung dieser beiden Methoden.

' Die Diskussion einer Anforderung abrufen. Set objDiscussion = req.Discussion ' Eine Diskussionsnachricht verffentlichen. Set objMessage = objDiscussion.postMessage(Mein Thema, Meine Nachricht) ' Eine Antwort auf die neue Nachricht verffentlichen. objMessage.postReply Re: Mein Thema, Meine Antwort

20 C alibe rR M - SDK -E ntw icklerha nd buch

Anforderungsbume
In der Regel bestehen in einer CaliberRM-Baseline hierarchische Relationen zwischen Anforderungsgruppen. Zusammen ergeben diese Anforderungen einen Anforderungsbaum. Die Objekte RequirementTree und RequirementTreeNode bieten wertvolle Optionen fr den Einsatz dieser Bume. Die Knoten eines Anforderungsbaums knnen wie folgt durchlaufen werden:
1 Durch Abrufen eines RequirementTree-Objekts aus einer Baseline 2 Durch Zugriff auf die Root-Eigenschaft des Anforderungsbaums, um den

RequirementTreeNode-Stamm abzurufen.
3 Durch rekursiven Aufruf der Children-Eigenschaft von RequirementTreeNode.

Anhand des folgenden Codes werden die Schritte erlutert, die erforderlich sind, um die Informationen zu allen Knoten eines Anforderungsbaums auszugeben.

... ' Anforderungsbaum der Baseline abrufen... Dim objRequirementTree As RequirementTree Set objRequirementTree = objBaseline.RequirementTree ' Baum beginnend beim Stammknoten durchlaufen... TraverseTree objRequirementTree.Root End Sub ' Durchluft das Unterverzeichnis zuerst nach der angegebenen Knotentiefe ' und gibt Informationen zu den jeweiligen Knoten aus. Private Sub TraverseTree(ByVal parent As RequirementTreeNode) ' Die Informationen fr den bergeordneten Knoten ausgeben... Debug.Print _ String(parent.Level, vbTab) _ & parent.HierarchyNumber _ & _ & parent.Name _ & _ & parent.SerialNumberTag ' Diese Funktion rekursiv aufrufen fr alle untergeordneten Knoten... Dim child As RequirementTreeNode For Each child In parent.Children TraverseTree(child) Next child End Sub

Eine RequirementTreeNode-Klasse in einem Anforderungsbaum kann ein Projekt, einen Anforderungstyp oder einen Anforderungsknoten darstellen. Ein RequirementTreeNode-Objekt enthlt die Daten, die mindestens erforderlich sind, um das mit ihm verknpfte CaliberRM-Objekt darzustellen. Wenn ein Knoten beispielsweise mit einem Project-Objekt verknpft ist, knnen Sie den Namen und die IDNummer des Projekts ber RequirementTreeNode abrufen. Die Beschreibung und die Baseline des Projekts knnen jedoch nicht direkt abgerufen werden.

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

21

Das vollstndige mit einem RequirementTreeNode verknpfte Objekt kann mithilfe der AssociatedObjectID-Eigenschaft der RequirementTreeNode-Klasse abgerufen werden. Beispiel:

' Die ID des CaliberObjects abrufen, die der Knoten reprsentiert Dim id As CaliberObjectID Set id = objRequirementTreeNode.AssociatedObjectID ' CaliberObject abrufen, das der Knoten reprsentiert Dim co As CaliberObject Set co = objSession.get(id) ' Ein dem CaliberObject-Subtyp entsprechendes Attribut ausgeben... If TypeOf co Is Project Then ' Projektbeschreibung ausgeben Debug.Print co.Description ElseIf TypeOf co Is RequirementType Then ' Tagtyp ausgeben Debug.Print co.Tag ElseIf TypeOf co Is Requirement Then ' Anforderungsbeschreibung ausgeben Debug.Print co.Description.Text End If

Ein Anforderungsbaum kann mithilfe der Methoden addChild und insertChild der RequirementTreeNode-Klasse gendert werden. Im folgenden Beispiel wird mithilfe der addChild-Methode zum ersten Anforderungsknoten in einem Anforderungsbaum ein zweiter Anforderungsknoten hinzugefgt.

... ' Projektknoten abrufen. Ist immer der Stammknoten. Set objProjectNode = objRequirementTree.Root ' Den ersten Anforderungstypknoten unter dem Projektknoten abrufen. Set objTypeNode = objProjectNode.Children.Item(0) ' Erste und zweite Anforderung des Anforderungstyps abrufen. Set firstRequirementNode = objTypeNode.Children.Item(0) Set secondRequirementNode = objTypeNode.Children.Item(1) ' Zweite Anforderung ergnzen. firstRequirementNode.addChild secondRequirementNode ' nderungen im Baum speichern. objRequirementTree.save

Sie knnen Anforderungsbume auch mithilfe der Requirements-Sammlung der Baseline in Verbindung mit der ChildRequirements-Sammlung der Anforderung durchlaufen. Beachten Sie jedoch, dass bei dieser Methode bedeutend mehr Ressourcen erforderlich sind als bei der Verwendung der Klassen RequirementTree und RequirementTreeNode, da alle Anforderungsobjekte vom Remote-CaliberRMServer angefordert werden. Im folgenden Beispiel werden diese Sammlungen verwendet, um die ersten beiden Ebenen eines Anforderungsbaums anzuzeigen.

22 C alibe rR M - SDK -E ntw icklerha nd buch

' Variablen fr Projekt- und Baseline-Objekte deklarieren. Dim firstProject As Project Dim curBaseline As Baseline ' Projektvariable als Referenz auf das erste ' Projekt in der Projektsammlung der Sitzung festlegen. Set firstProject = objSession.Projects.Item(0) ' Baseline-Variable als Referenz auf ' die "aktuelle" Baseline im ersten Projekt festlegen. Set curBaseline = firstProject.CurrentBaseline ' Eine Variable deklarieren, die temporr die ' erste Ebene der Anforderungen im Baum enthlt Dim parentReq As Requirement ' Die erste Ebene der Anforderungen durchlaufen For Each parentReq In curBaseline.Requirements Debug.Print parentReq.Name Dim childReq As Requirement ' Alle Anforderungen durchlaufen, die ' der aktuellen Anforderung untergeordnet sind For Each childReq In parentReq.ChildRequirements log vbTab & childReq.Name Next childReq Next parentReq

Sie knnen die Informationen auch von der untergeordneten zur bergeordneten Anforderung durchlaufen, indem Sie die ParentRequirement-Eigenschaft des Anforderungsobjekts verwenden. Die folgende Prozedur gibt beispielsweise den Pfad von einer bestimmten Anforderung bis hin zur Stammanforderung in diesem Baum aus.

Private Sub PrintPathToRoot(ByVal objRequirement As Requirement) Do While Not objRequirement Is Nothing Debug.Print objRequirement.Name Set objRequirement = objRequirement.ParentRequirement Loop End Sub
Die CaliberRM-Anwendungen zeigen alle Anforderungen der obersten Baumebene nach Anforderungstyp gruppiert und sortiert an. Daher gibt die RequirementsEigenschaft eines Baseline-Objekts die Anforderungen auf diese Weise sortiert und gruppiert aus. Hinweis: Sie knnen das Projekt, die Baseline und den Typ einer Anforderung ermitteln, indem Sie auf ihre Projekt-, Baseline- oder Anforderungstyp-Eigenschaften zugreifen.

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

23

Abhngigkeit
In CaliberRM kann zwischen zwei Anforderungen und zwischen einer Anforderung und einem Objekt auerhalb von CaliberRM eine Abhngigkeit bestehen. Auerdem untersttzt das CaliberRM SDK das Erstellen, Lschen und ndern von Abhngigkeiten zwischen CaliberRM-Anforderungen und Software-Artefakten, die keine Anforderungen sind. Im Folgenden werden einige der wichtigsten Abhngigkeitsobjekte beschrieben.

Abhngigkeit: Stellt eine Abhngigkeit zwischen zwei CaliberRM-Objekten dar. Bei diesen Objekten kann es sich um Anforderungen oder externe CaliberRM-Objekte handeln. TraceManager: Stellt die Funktionalitt zum Erstellen, ndern und Lschen von Abhngigkeiten bereit. XGenericObjectManager: Stellt die Funktionalitt zum Erstellen von Abhngigkeiten zwischen Anforderungen und Software-Artefakten, die keine Anforderungen sind, bereit. VendorAddIn: Stellt eine Referenz auf ein Objekt dar, das zu einer anderen Anwendung gehrt. Diese Objekte werden von Software-Anbietern bereitgestellt, deren Anwendungen das CaliberRM-Traceability-Add-In-Modul implementieren.

Abhngigkeiten abrufen
Das CaliberRM SDK bietet die Mglichkeit, Abhngigkeiten auf vielen Ebenen des CaliberRM-Objektmodells abzurufen. Das Sitzungsobjekt hat beispielsweise eine Abhngigkeiten-Eigenschaft, mit der alle Abhngigkeitenzwischen allen CaliberRMObjekten abgerufen werden knnen, die fr den Benutzer verfgbar sind. Auerdem gibt die Abhngigkeiten-Eigenschaft eines Projektobjekts alle Abhngigkeiten zurck, die zu den im Projekt enthaltenen Anforderungen fhren oder von diesen ausgehen. Das Anforderungsobjekt stellt zwei Eigenschaften zur Verfgung, mit denen Abhngigkeiten abgerufen werden knnen: TracesFrom und TracesTo.

24 C alibe rR M - SDK -E ntw icklerha nd buch

Im folgenden Beispiel werden die Eigenschaften TracesTo und TracesFrom zum Ausgeben der Objektnamen verwendet, die mit einer Anforderung in Zusammenhang stehen.

Private Sub PrintTraces(objRequirement As Requirement) Dim objTrace As CaliberRM.Trace Debug.Print Objects tracing from & objRequirement.Name For Each objTrace In objRequirement.TracesFrom ' Diese Abhngigkeit verluft VON einem anderen Objekt ' zu dieser Anforderung. Debug.Print objTrace.FromObject.Name _ & vbTab _ & objTrace.Suspect Next objTrace Debug.Print Objects tracing to & objRequirement.Name For Each objTrace In objRequirement.TracesTo ' Diese Abhngigkeit fhrt von dieser Anforderung ' ZU einem anderen Objekt. Debug.Print objTrace.ToObject.Name _ & vbTab _ & objTrace.Suspect Next objTrace End Sub

Abhngigkeiten zwischen Anforderungen erstellen


Das TraceManager-Objekt ermglicht das Erstellen und ndern von Abhngigkeiten. Der erste Schritt zum Erstellen einer Abhngigkeit besteht darin, eine Referenz auf dieses Objekt abzurufen:

Dim objTraceManager As TraceManager Set objTraceManager = objSession.TraceManager


Sobald Sie einen TraceManager erstellt haben, knnen Sie damit Abhngigkeiten erstellen. Im folgenden Beispiel wird eine Abhngigkeit zwischen zwei Anforderungen erstellt.

Dim req1 As Requirement Set req1 = objSession.getRequirement(1) Dim req2 As Requirement Set req2 = objSession.getRequirement(2) objTraceManager.createTrace3 req1, req2, False

Ka pite l 2: M it Visu al B asic S DK-An we nd ung en schre ib en

25

Abhngigkeiten zu Software-Artefakten erstellen, die keine Anforderungen sind


Im vorherigen Beispiel wurde eine Abhngigkeit zwischen zwei Objekten (Anforderungen) erstellt, die sich innerhalb von CaliberRM befinden. Im folgenden Beispiel wird ber das XGenericObjectManager-Objekt eine Abhngigkeit zwischen einer Anforderung und einem Objekt auerhalb von CaliberRM erstellt.

... Dim req1 As Requirement Set req1 = objSession.getRequirement(1) Dim objIntegrationMgr As IntegrationManager Set objIntegrationMgr = objSession.IntegrationManager ' Eine Abhngigkeit von req1 auf das ABCObject erstellen, das von ' der ABCCorp bereitgestellt wird. objIntegrationMgr. createTrace2 _ req1, _ True, _ "ABCCorp", _ ABCObjectID ...

XGenericObjectManager umfasst auerdem eine Funktion, mit der Abhngigkeiten zwischen zwei externen VendorAddIn-Objekten erstellt werden knnen.

objIntegrationMgr. createTrace1 _ ABCCorp, _ ABCObjectID, _ XYZCorp, _ XYZObjectID

Abhngigkeiten lschen
Verwenden Sie die deleteTrace-Methode des TraceManager-Objekts, um eine Abhngigkeit zu lschen. Die folgende Subroutine zeigt, wie aus einer bestimmten Anforderung alle Abhngigkeiten gelscht werden knnen:

Private Sub DeleteTraces(objRequirement As Requirement) Dim objTraceManager As TraceManager Set objTraceManager = objSession.TraceManager Dim objTrace As Trace For Each objTrace In objRequirement.TracesFrom objTraceManager.deleteTrace objTrace Next objTrace End Sub
Weitere Informationen dazu, wie Sie Diagramme fr die Suche nach Objekten verwenden knnen, mit denen Sie arbeiten mchten, und Erluterungen, wie sich das Objekt in das CaliberRM-Objektmodell einpasst, finden Sie in Anhang A: CaliberRM-Objektmodelle.

26 C alibe rR M - SDK -E ntw icklerha nd buch

Kapitel

Kapitel 3

Mit Java SDK-Anwendungen schreiben

Einfhrung
In diesem Kapitel erhalten Sie eine Einfhrung in das CaliberRM SDK fr JavaEntwickler. Es enthlt die folgenden Informationen:

Erluterungen zur Verwendung des SDK, um eine Verbindung zu einem CaliberRMServer herzustellen Erluterungen zu den vom SDK verwendeten Konventionen Eine bersicht zur Arbeit mit Anforderungsbumen, -attributen und -protokollen Erluterungen zur Verwendung des SDK zum Anzeigen und Erstellen von Relationen zu Abhngigkeiten

CaliberServer erstellen
Alle Anwendungen, die das CaliberRM SDK verwenden, mssen zuerst eine Verbindung zu einem CaliberRM-Server herstellen. Zum Herstellen der Verbindung ist es erforderlich, eine neue Instanz der CaliberServer-Klasse zu erzeugen. Die CaliberServer-Klasse baut die Verbindung zum CaliberRM-Server fr den CaliberRM-Benutzer auf und verwaltet sie.

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

27

Das folgende Code-Beispiel zeigt eine Java-Anwendung, die eine Verbindung zu einem CaliberRM-Server herstellt.

import com.starbase.caliber.*; import com.starbase.caliber.server.*; public class ConnectionCreator { public static void main(String[] args) { CaliberServer server = new CaliberServer(foo); try{ Session session = server.login(admin, admin); } catch(RemoteServerException rse) { rse.printStackTrace(); } } }

Dieser Code enthlt die grundlegenden Schritte, die fr jede CaliberRM-Anwendung ausgefhrt werden mssen:

Importieren der relevanten CaliberRM-Packages Erstellen eines CaliberRM-Servers Anmelden beim CaliberRM-Server

In der ersten Zeile wird das CaliberRM-Haupt-Package importiert:

import com.starbase.caliber.*;

Dieses Package enthlt die Session-Klasse. Weitere Informationen zur Session-Klasse finden Sie unter Sitzungen verwenden auf Seite 29. In der zweiten Zeile wird das CaliberRM-Server-Package importiert:

import com.starbase.caliber.server.*;

Dieses Package enthlt die fr Server-Verbindungen, Transaktionen und Exceptions erforderlichen Klassen. Die CaliberServer-Klasse befindet sich in diesem Package. Im folgenden Code wird eine Instanz von CaliberServer erstellt, die fr die Kommunikation mit dem CaliberRM-Server verwendet wird, der sich auf dem Host foo befindet:

CaliberServer server = new CaliberServer(foo);

28 C alibe rR M - SDK -E ntw icklerha nd buch

Zum Schluss wird bei der Anmeldung bei CaliberServer ein neues Sitzungsobjekt erstellt:

try{ Session session = server.login("jdoe", "1234ABC"); } catch(RemoteServerException rse) { rse.printStackTrace(); }

Im oben genannten Beispiel lst die Login-Methode eine RemoteServerException aus, wenn die Anmeldung des Clients bei einem Remote-CaliberRM-Server nicht mglich ist. Eine Anmeldung schlgt in der Regel fehl, wenn eine falsche Benutzer-ID oder ein falsches Passwort an die Login-Methode bergeben wird. Weitere Informationen zur RemoteServerException finden Sie im Folgenden unter CaliberRM Java SDK - Konventionen. Hinweis: Sobald das Java SDK gestartet wurde, startet das SDK auch eine Java Virtual Machine (VM). Die Speicherkapazitt der meisten VMs ist auf 64 MB begrenzt. Dies lsst sich jedoch umgehen, indem ein maximales Speicher-Flag (Xmx) fr die VM gesetzt wird. Bei Anwendungen mit dem Java SDK kann dieses Flag ber die Befehlszeile angegeben werden, z. B.:

java -Xmx1000M com.company.SDKApp


Der Aufruf dieses Codes muss vor allen anderen SDK-Aufrufen erfolgen, da diese Optionen nicht mehr festgelegt werden knnen, wenn die VM bereits geladen wurde.

Sitzungen verwenden
Eine Sitzung stellt die Ansicht eines Benutzers auf einen CaliberRM-Server dar und dient als Einstiegspunkt in das CaliberRM-Objektmodell. Im folgenden Code wird die im vorhergehenden Beispiel erstellte Sitzung verwendet, um die Namen aller CaliberRMProjekte anzuzeigen, die fr den Benutzer verfgbar sind.

try{ Project[] arrayOfProjects = session.getProjects(); for(int i = 0; i < arrayOfProjects.length; i++) { System.out.println(arrayOfProjects[i].getName()); } } catch(RemoteServerException) { rse.printStackTrace(); }

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

29

CaliberRM Java SDK - Konventionen


Die beiden zuvor genannten Beispiele veranschaulichen verschiedene Konventionen des CaliberRM SDK. Erstens: Wann immer eine SDK-Methode zur Ausfhrung einer Operation von einem CaliberRM-Server abhngt, wird diese Methode als Auslser von RemoteServerException deklariert. Eine RemoteServerException dient der Exception, die vom Remote-Server ausgelst wird, als Wrapper. Sie knnen eine Meldung abrufen, die diese Exception beschreibt, indem Sie die getMessage-Methode der Exception aufrufen. Zweitens: Alle Methoden, die mehrere Objekte zurckgeben, geben diese Objekte in Arrays zurck. Auerdem werden im CaliberRM SDK die Benennungs-Standards der Core-Java-APIs befolgt. In der folgenden Tabelle werden diese Regeln erlutert. Gruppe
Getter/Setter-Methoden Boolesche-Methoden Ereignis-Listener-Schnittstelle Ereignis-Listener-Registrierung Ereignisbehandlungsmethoden Ereignisklassen

Regeln
getXxxxsetXxxx isXxxx XxxxListener addXxxxListener onXxxx XxxxEvent

Beispiele
getName() setName() isEstablished() isKeyReference() ServerConnectionListener ServerTransactionListener addServerConnectionListener addServerTransactionListener onConnectionEstablished onServerTransaction ServerTransactionEvent ServerConnectionEvent

CaliberRM-Objekte erstellen
Mit dem CaliberRM SDK knnen Sie die folgenden Objekte erstellen, ndern und lschen:

Projekte Baselines Benutzer Gruppen Abteilungen Anforderungen Anforderungstypen Sicherheitsprofile Glossare Glossarbegriffe Integrationen

Im folgenden Beispiel-Code finden Sie die zum Erstellen von CaliberRM-Objekten typischen Muster:

User newUser = new User("Neuer Benutzer", Sitzung); newUser.save();

30 C alibe rR M - SDK -E ntw icklerha nd buch

CaliberRM-Objekte ndern
So ndern Sie ein CaliberRM-Objekt:
1 2 3 4

Erstellen Sie eine Instanz eines CaliberRM-Objekts. Rufen Sie die Lock-Methode des Objekts auf. Legen Sie die Eigenschaften des Objekts fest. Rufen Sie die Save-Methode des Objekts auf.

Im folgenden Beispiel werden die zum ndern eines Gruppenobjekts erforderlichen Schritte beschrieben:

Group group = session.getGroups()[2]; group.lock(); group.setDescription("Neue Beschreibung"); group.setEmailAddress("neue@emailadresse.com"); group.save();

CaliberRM-Objekte lschen
Sie knnen ein CaliberObject aus CaliberRM lschen, indem Sie seine RemoveMethode aufrufen. Beispiel:

Requirement requirement = session.getRequirement(77); requirement.remove();

Beachten Sie, dass die remove-Methode die Anforderung nur aus der aktuellen Baseline lscht. Aus vorhergehenden Baselines wird sie nicht gelscht.

Anforderungen
In diesem Abschnitt des Dokuments werden die Grundlagen der Arbeit mit Anforderungsobjekten erlutert.

Anforderungsbume
In der Regel bestehen in einer CaliberRM-Baseline hierarchische Relationen zwischen Anforderungsgruppen. Zusammen ergeben diese Anforderungen einen Anforderungsbaum. Die Klassen RequirementTree und RequirementTreeNode bieten wertvolle Optionen fr den Einsatz dieser Bume. Die Knoten eines Anforderungsbaums knnen wie folgt durchlaufen werden:

Durch Erstellen eines RequirementTree-Objekts aus einer Baseline. Durch Aufrufen der getRoot-Methode von RequirementTree, um den RequirementTreeNode-Stamm abzurufen. Durch rekursiven Aufruf der getChildren-Methode von RequirementTreeNode.

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

31

Anhand des folgenden Codes werden die Schritte erlutert, die erforderlich sind, um die Informationen zu allen Knoten eines Anforderungsbaums auszugeben.

... // Baum der aktuellen Baseline abrufen. RequirementTree tree = currentBaseline.getRequirementTree(); // Stammknoten des Baums abrufen. RequirementTreeNode root = tree.getRoot(); TraverseTree(root); } public void TraverseTree(RequirementTreeNode parentNode) { // Die fr den aktuellen Knoten relevanten Informationen // ausgeben. PrintTreeNode(parentNode); // Die untergeordneten Knoten eines bergeordneten Elements // durchlaufen... RequirementTreeNode[] children = parentNode.getChildren(); for(int i = 0; i < children.length; i++) { TraverseTree(children[i]); } } private void PrintTreeNode(RequirementTreeNode node) { StringBuffer sb = new StringBuffer(); for(int i = 0; i < node.getLevel(); i++) { sb.append( ); } sb.append(node.getHierarchyNumber()); sb.append( ); sb.append(node.getName()); sb.append( ); sb.append(node.getSerialNumberTag()); System.out.println(sb); }

Die durch den Code erzeugte Ausgabe sieht etwa wie folgt aus:

X100 Droid 2016412 Business Requirements BR2016416 1 Operating Environment BR1 1.1 Temperature BR2 1.2 Humidity BR3 1.3 Radiation BR4 2 Continuous operation BR5 2.1 Recharge Time BR73 3 Startup time BR6

32 C alibe rR M - SDK -E ntw icklerha nd buch

Ein Anforderungsbaum kann mithilfe der Methoden getDepthFirstEnumeration und getBreadthFirstEnumeration der RequirementTreeNode-Klasse durchlaufen werden. Dies soll anhand eines Teils des oben genannten Codes unter Verwendung der Methode getDepthFirstEnumeration erlutert werden:

// Baum der aktuellen Baseline abrufen. RequirementTree tree = currentBaseline.getRequirementTree(); // Stammknoten des Baums abrufen. RequirementTreeNode root = tree.getRoot(); // Auflistung aller Knoten abrufen, die vom // Stamm abgeleitet werden. Enumeration nodes = root.getDepthFirstEnumeration(); // Alle Knoten durchlaufen... while(nodes.hasMoreElements()) { RequirementTreeNode node = (RequirementTreeNode)nodes.nextElement(); PrintTreeNode(node); }

Eine RequirementTreeNode-Klasse in einem Anforderungsbaum kann ein Projekt, einen Anforderungstyp oder eine Anforderung darstellen. Die ID des CaliberObject, das mit RequirementTreeNode verknpft ist, kann mit der Methode getAssociatedObjectID von RequirementTreeNode abgerufen werden. Beispiel:

// Die ID des mit dem Knoten verknpften CaliberObjects abrufen. CaliberObjectID coid = node.getAssociatedObjectID(); // CaliberObject mithilfe der CaliberObject-ID abrufen. CaliberObject co = session.get(coid); if(co instanceof Project) { // Projektspezifische Informationen ausgeben. Project p = (Project)co; System.out.println(p.getDescription()); } else if(co instanceof RequirementType) { // Typenspezifische Informationen ausgeben. RequirementType rt = (RequirementType)co; System.out.println(rt.getTag()); } else { // Anforderungsspezifische Informationen ausgeben. Requirement r = (Requirement)co; System.out.println(r.getStatus().getSelectedValue()); }

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

33

Ein Anforderungsbaum kann mithilfe der Methoden addChild und insertChild der RequirementTreeNode-Klasse gendert werden. Im folgenden Beispiel wird mithilfe der addChild-Methode zum ersten Anforderungsknoten in einem Anforderungsbaum ein zweiter Anforderungsknoten hinzugefgt.

RequirementTree tree = currentBaseline.getRequirementTree(); // Projektknoten abrufen. Ist immer der Stammknoten. RequirementTreeNode projectNode = tree.getRoot(); // Den ersten Anforderungstypknoten unter dem Projektknoten // abrufen. RequirementTreeNode typeNode = projectNode.getChildAt(0); // Die 1. und die 2. Anforderung unter dem Anforderungstyp abrufen. RequirementTreeNode requirementNode1 = typeNode.getChildAt(0); RequirementTreeNode requirementNode2 = typeNode.getChildAt(1); // Baum durch Hinzufgen eines zweiten Knotens ndern. requirementNode1.addChild(requirementNode2); // Die nderungen besttigen. tree.save();

Anforderungbume knnen auerdem mit der getRequirements-Methode der Baseline in Verbindung mit der getChildRequirements-Methode der Anforderung durchlaufen werden. Beachten Sie jedoch, dass bei dieser Methode bedeutend mehr Ressourcen erforderlich sind als bei der Verwendung der Klassen RequirementTree und RequirementTreeNode, da Sie alle Anforderungsobjekte vom Remote-CaliberRMServer anfordern. Im folgenden Beispiel werden diese Methoden verwendet, um die ersten beiden Ebenen eines Anforderungsbaums anzuzeigen.

try{ // Standard-Baseline/Aktuelle Baseline abrufen Baseline defaultBaseline = project.getDefaultBaseline(); // Erste Ebene der Anforderungen im Anforderungsbaum // der Baseline abrufen. Requirement[] topLvlReqs = defaultBaseline.getRequirements(); // Die erste Ebene der Anforderungen durchlaufen for(int i; i < topLvlReqs.length; i++) { Requirement req = topLvlReqs [i]; System.out.println(req.getName()); // Untergeordnete Elemente der aktuellen Anforderung abrufen Requirement[] childReqs = req.getChildRequirements(); // Untergeordnete Elemente durchlaufen. for(int j; j < childReqs.length; j++) { Requirement childReq = childReqs[j]; System.out.println(\t + childReq.getName()); } } }

34 C alibe rR M - SDK -E ntw icklerha nd buch

Sie knnen die Informationen auch von der untergeordneten zur bergeordneten Anforderung durchlaufen, indem Sie die getParentRequirement-Methode der Anforderung aufrufen. Der folgende Code gibt beispielsweise den Pfad von einer Anforderung bis hin zur Stammanforderung in diesem Baum aus.

try{ // Die neueste Version der Anforderung mithilfe der // ID-Nummer 10 abrufen. Requirement req = session.getRequirement( 10 ); while(req != null) { System.out.println(req.getName()); req = req.getParent(); } } catch(RemoteServerException) { rse.printStackTrace(); }

Die CaliberRM-Anwendungen zeigen alle Anforderungen der obersten Baumebene nach Anforderungstyp gruppiert und sortiert an. Daher gibt die getRequirementsMethode eines Baseline-Objekts die Anforderungen auf diese Weise sortiert und gruppiert aus. Hinweis: Sie knnen das Projekt, die Baseline und den Typ einer Anforderung ermitteln, indem Sie die Methoden getProject, getBaseline bzw. getRequirementType aufrufen.

Anforderungen erstellen
Das CaliberRM SDK enthlt zwei Konstruktoren fr Anforderungsobjekte. Der erste Konstruktor ermglicht das Erstellen von Anforderungen auf der hchsten Ebene des Anforderungsbaums eines Projekts und der zweite das Erzeugen von untergeordneten Elementen einer vorhandenen Anforderung. Das folgende Beispiel erlutert, wie mit dem ersten Konstruktor eine neue Anforderung erstellt werden kann.

// Erstes Projekt der Sitzung abrufen. Project project = session.getProjects()[0]; // Aktuelle Baseline des Projekts abrufen.. Baseline currentBaseline = project.getCurrentBaseline(); // Den ersten Anforderungstyp der Baseline abrufen. RequirementType type = currentBaseline.getRequirementTypes()[0]; // Neue Anforderung erstellen. Requirement newRequirement = new Requirement( Neue Anforderung, project, type, 0, session); // Neue Anforderung speichern. newRequirement.save();

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

35

Das nchste Beispiel verdeutlicht, wie mit dem zweiten Konstruktor eine der vorhandenen Anforderung untergeordnete Anforderung erstellt wird. Diese neue Anforderung erhlt den Namen Untergeordnete Anforderung. Sie ist das vierte untergeordnete Element in der Hierarchie der bergeordneten Anforderung.

// Eine Anforderung abrufen, die der neuen Anforderung untergeordnet ist. Requirement parentReq = session.getRequirement(125); // Neue Anforderung mithilfe der bergeordneten Anforderung erstellen. Requirement newRequirement = new Requirement( Untergeordnete Anforderung, parentReq, 3, session); // Neue Anforderung speichern. newRequirement.save();

Anforderungsattribute
CaliberRM ermglicht das Definieren von Anforderungen mit einer beliebigen Anzahl von benutzerdefinierten Attributen (UDA = User-Defined Attributes). Zudem enthalten alle Anforderungen die Systemattribute Status und Priority. Im CaliberRM SDK stellt das Anforderungsobjekt eine getAttributeValues-Methode zum Abrufen seiner UDA-Werte und eine getStatus- und getPriority-Methode zum Abrufen der Systemattributwerte bereit. Der folgende Code gibt beispielsweise den ausgewhlten Wert eines Anforderungsstatus als Instanz der AttributeValueUnterklasse UDAListValue aus:

UDAListValue status = requirement.getStatus(); Object selectedValue = status.getSelectedValue(); System.out.print("Ausgewhlter Wert: " + selectedValue);

Sie knnen den Vorgabewert fr ein Attribut auch mithilfe der Methode getAttributeType( ) ermitteln. Beispiel:

// Entsprechenden Attributtyp abrufen. UDAList attributeType = status.getAttributeType(); // Vorgabewertobjekt fr den Attributtyp abrufen. UDAListValue defaultValue = attributeType.getDefaultValue(); // Ausgewhlten Wert aus der UDAListValue-Vorgabe abrufen Object selectedDefaultValue = defaultValue.getSelectedValue(); System.out.print(Standardwert: + selectedDefaultValue);
Beachten Sie, dass jede AttributeValue-Unterklasse mit einer einzelnen AttributeUnterklasse verknpft ist. Daher gibt die getAttributeType-Methode von UDABooleanValue eine Instanz von UDABoolean und die getAttributeValueMethode von UDATextValue eine Instanz von UDAText zurck.

36 C alibe rR M - SDK -E ntw icklerha nd buch

Die folgende Tabelle stellt die Relation zwischen den AttributeValue- und AttributeKlassen des SDK und den CaliberRM-Attributtypen dar. AttributeValueUnterklassen
UDATextValue UDAIntegerValue UDADurationValue UDAFloatValue UDADateValue UDABooleanValue UDAListValue

Attribut-Unterklassen
UDAText UDAInteger UDADuration UDAFloat UDADate UDABoolean UDAList

Attributtypen der Anwendung


Einzeiliger Text Mehrzeiliges Textfeld Lange Ganzzahl Dauer Fliekommazahl Datum Boolescher Wert Mehrfachauswahlliste Liste fr die Einzelauswahl Gruppenliste fr die Mehrfachauswahl Liste fr die Einzelauswahl einer Gruppe Benutzerliste fr die Mehrfachauswahl Liste fr die Einzelauswahl eines Benutzers

Anforderungshistorie
Das CaliberRM SDK ermglicht den vollstndigen Zugriff auf die Datenstze der Anforderungshistorie. Um den Verlauf einer Anforderung abzurufen, knnen Sie die getHistory-Methode fr eine beliebige Anforderungsinstanz verwenden. Das folgende Klassen-Diagramm stellt die Relation zwischen den Klassen Requirement, History, HistoryRevision und HistoryChange dar.

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

37

Das folgende Beispiel erlutert, wie diese Klassen zum Anzeigen von Historieninformationen verwendet werden knnen:

// Historie eines Anforderungsobjekts abrufen History history = req.getHistory(); // Revisionen mit Historien abrufen, aus denen die Historie besteht HistoryRevision[] revisions = history.getRevisions(); for(int i = 0; i < revisions.length; i++) { Revision revision = revisions[i]; System.out.println(Revision: + revision.getVersion()); System.out.println(Datum: + revision.getDate()); System.out.println(Benutzer: + revision.getUserName()); System.out.println(Kommentar: + revision.getComment()); // nderungen abrufen, die die Revision enthlt HistoryChange[] changes = revision.getChanges(); For(int j = 0; j < changes.length; j++) { Change change = changes[j]; System.out.println( \tField: + change.getFieldName()); System.out.println( \tOld Value: + change.getOldValue()); System.out.println( \tNew Value: + change.getNewValue()); } }

Abhngigkeit
In CaliberRM kann zwischen zwei Anforderungen oder zwischen einer Anforderung und einem Objekt auerhalb von CaliberRM eine Abhngigkeit bestehen. Auerdem untersttzt das CaliberRM SDK das Erstellen, Lschen und ndern von Abhngigkeiten von CaliberRM-Anforderungen und Software-Artefakten, die keine Anforderungen sind. Im Folgenden werden einige der wichtigsten Abhngigkeitsklassen beschrieben.

Trace: Stellt eine Abhngigkeit zwischen einer Anforderung und einem anderen CaliberRM-Objekt dar. Bei diesem CaliberRM-Objekt kann es sich um eine Anforderung oder um ein Objekt auerhalb von CaliberRM handeln. TraceManager: Stellt die Funktionalitt zum Erstellen, ndern und Lschen von Abhngigkeiten bereit. ExternalObject: Eine abstrakte Basis-Klasse, die alle Objekte auerhalb von CaliberRM darstellt. File: Stellt ein Objekt eines Dateisystems dar. SCMFile: Stellt ein Objekt dar, das von einem Management-Tool zur QuelltextKonfiguration verwaltet wird. Sowohl die File- als auch die SCMFile-Klasse finden Sie unter com.starbase.caliber.external.file. XGenericObjectManager: Stellt die Funktionalitt zum Erstellen von Abhngigkeiten zwischen Anforderungen und Software-Artefakten, die keine Anforderungen sind, bereit. VendorAddIn: Stellt eine Referenz auf ein Objekt dar, das zu einer anderen Anwendung gehrt.

38 C alibe rR M - SDK -E ntw icklerha nd buch

Abhngigkeiten abrufen
Abhngigkeiten knnen auf vielen Ebenen der CaliberRM-Objekthierarchie abgerufen werden. Die Session-Klasse umfasst die getTraces-Methode, die alle fr die Sitzung verfgbaren Abhngigkeiten zurckgibt. Auerdem gibt die getTraces-Methode der Projektklasse alle Abhngigkeiten wieder, die zu den im Projekt enthaltenen Anforderungen fhren oder von diesen ausgehen. Die Anforderungsklasse bietet zwei Mglichkeiten, die Informationen zu den Abhngigkeiten abzurufen: getTracesFrom und getTracesTo. Im folgenden Beispiel werden diese Methoden verwendet, um die Namen der Objekte auszugeben, die mit einer Anforderung verbunden sind.

try{ // In der nchsten Zeile wird die neueste Version // einer Anforderung mit der ID-Nummer 1 abgerufen. Requirement requirement = session.getRequirement(1); Trace[] tracesTo = requirement.getTracesTo(); for(int i = 0; i < tracesTo.length; i++) { // Die folgende Abhngigkeit AB dieser Anforderung // zu einem anderen Objekt. Trace trace = tracesTo[i]; CaliberObject obj = trace.getToObject(); System.out.println(obj.getName()); } Trace[] tracesFrom = requirement.getTracesFrom(); for(int i = 0; i < tracesFrom.length; i++) { // Die folgende Abhngigkeit verluft von einem anderen // Objekt ZU dieser Anforderung. Trace trace = tracesFrom[i]; CaliberObject obj = trace.getFromObject(); System.out.println(obj.getName()); } } catch(RemoteServerException) { rse.printStackTrace(); }

Abhngigkeiten zwischen Anforderungen erstellen


Die Klasse TraceManager ermglicht das Erstellen und ndern von Abhngigkeiten. Um eine Instanz von TraceManager zu erstellen, mssen Sie die getManagerMethode der Sitzung aufrufen. Das folgende Beispiel zeigt, wie Sie eine Instanz von TraceManager erstellen:

TraceManager traceMgr; traceMgr = (TraceManager)session.getManager(Trace.class);

Ka pite l 3: M it Ja va S DK-An we nd ung en schre ib en

39

Sobald Sie einen TraceManager erstellt haben, knnen Sie damit Abhngigkeiten erstellen. Im folgenden Beispiel wird eine Abhngigkeit zwischen zwei Anforderungen erstellt.

Requirement req1 = session.getRequirement(1); Requirement req2 = session.getRequirement(2); // In der folgenden Zeile wird eine Abhngigkeit von req1 zu req2 erstellt. TraceMgr.createTrace(req1, req2, false);

Abhngigkeiten zu Software-Artefakten erstellen, die keine Anforderungen sind


Im vorherigen Beispiel wurde eine Abhngigkeit zwischen zwei Objekten (Anforderungen) erstellt, die sich innerhalb von CaliberRM befinden. In diesem Beispiel wird gezeigt, wie Sie eine Abhngigkeit fr ein Objekt erstellen, das sich auerhalb von CaliberRM befindet.

Class clazz = File.class; XGenericObjectManager extGenObjMgr = (XGenericObjectManager)session.getManager(clazz); Requirement req1 = session.getRequirement(1); // In der folgenden Zeile wird ein File-Objekt im Caliber-System // und eine Abhngigkeit von req1 zur neuen Datei erstellt. File f = extGenObjMgr.createFileTrace( Req1, true, foo.txt, C:\\temp\\);
Um eine Referenz auf ein externes Objekt zu erstellen, mssen Sie zuerst eine Referenz auf den entsprechenden Objekt-Manager abrufen. Sie knnen eine Instanz von CaliberObjectManager erstellen, indem Sie wie zuvor beschrieben die getManager-Methode eines Sitzungsobjekts abrufen. Im oben dargestellten Beispiel erstellen Sie eine Instanz von com.starbase.caliber.xgeneric.XGenericObjectManager (verwaltet die meisten Objekte auerhalb von CaliberRM):

Class clazz = File.class; FileManager fileMgr = (FileManager)session.getManager(clazz);

Beachten Sie, dass die createFileTrace-Methode als ersten Parameter eine Referenz auf eine Anforderung erfordert:

File f = fileMgr.createFileTrace( Req1, ...


Grund dafr ist, dass eine Referenz auf ein externes Objekt nur dann in CaliberRM mglich ist, wenn es Teil einer Abhngigkeit ist, die eine Anforderung enthlt. Wenn diese Relation entfernt wird, wird auch die Referenz gelscht. Die einzigen Ausnahmen zu dieser Regel sind Mercury TestDirector- und Select Enterprise-Objekte, die zu CaliberRM hinzugefgt oder aus dem Programm entfernt werden knnen, ohne dass sie mit einer Anforderung verknpft sein mssen.

40 C alibe rR M - SDK -E ntw icklerha nd buch

Kapitel

Kapitel 4

Traceability-Add-In fr CaliberRM erstellen

Einfhrung
Am einfachsten knnen Sie Ihren Benutzern eine benutzerdefinierte Lsung fr CaliberRM anbieten, indem Sie ein Traceability-Add-In entwickeln und verteilen. Das Add-In stellt Objekte fr CaliberRM bereit. Diese Objekte werden ber die CaliberRMBenutzeroberflche angezeigt und ermglichen Benutzern, Abhngigkeiten fr Anforderungen zu erstellen. Mit dem Add-In knnen Sie beispielsweise Microsoft Project-Vorgnge, Objekte aus einem Design- oder Test-Tool anzeigen. In diesem Dokument wird erlutert, wie Sie mit einem Microsoft Visual Basic.NETProjektbeispiel ein Traceability-Add-In fr CaliberRM erstellen knnen. Beispieldateien sind unter Programme\Borland\CaliberRM\Samples\Addins\ verfgbar.

Visual Basic.NET-Beispiel verwenden


Die CaliberRM-Installation umfasst mehrere Beispieldateien, die Sie in Visual Basic.NET zum Erstellen eines Traceability-Add-Ins fr CaliberRM verwenden knnen. Hinweis: Sie sollten alle GUIDs in den Traceability-Add-In-Dateien und in der Datei Assembly.Info.vb ndern. Das Beispielprojekt befindet sich standardmig unter Programme\Borland\CaliberRM\ Samples\Addins\HelloWorld2 VB.NET. Die folgenden Dateien werden angezeigt:

AssemblyInfo.vb HelloWorld2_VBNet.sln HelloWorld2_VBNet.vbproj HelloWorld2_VBNet.vbproj.user Icon1.ico Icon2.ico

K a p i t e l 4 : Tr a c e a b i l i t y - A d d -I n f r C a l i b e r R M e rs t e l l e n

41

Icon3.ico Icon4.ico Icon5.ico VendorObject.vb VendorSession.vb VendorView.vb

So erstellen Sie ein neues Traceability-Add-In:


1 Erstellen Sie mithilfe der Class Library-Vorlage (Klassenbibliothek-Vorlage) ein

Visual Basic-Projekt.
2 Kopieren Sie die Dateien VendorSession.vb, VendorView.vb und

VendorObject.vb in das Verzeichnis Ihres neuen VB-Projekts. Fgen Sie anschlieend mithilfe der Option zum Hinzufgen eines vorhandenen Elements Dateien zum Projekt hinzu.
3 ndern Sie alle COM GUIDs-Werte in den neu hinzugefgten Dateien mit dem

CreateGUID-Tool (im Men unter Tools->CreateGUID), das sich in VS.NET befindet.


4 Erzeugen Sie anschlieend Ihr neues Projekt. VS.NET registriert die neu erzeugte

DLL am Ende des Builds. Sie knnen die DLL auf anderen Rechnern registrieren, indem Sie regasm (.NET Assembly-Registrierungs-Tool) in eine beliebige Befehlszeile eingeben.
5 Ihr Traceability-Add-In kann jetzt verwendet werden. Sie knnen jetzt die Eigen-

schaften und Methoden implementieren, die im Interface erforderlich sind.

Traceability-Add-In-Interfaces
Um ein Add-In zu erstellen, mssen Sie die Eigenschaften und Funktionen von drei Klassen mit Werten versehen: VendorSession, VendorView und VendorObject. Im Folgenden finden Sie eine detaillierte Beschreibung dieser Klassen und ihrer Prozeduren.

VendorSession
Die VendorSession-Klasse stellt den Kontext fr den Austausch zwischen den CaliberRM-Clients und Ihrem Add-In bereit. Daraus folgt, dass VendorSession die einzige Klasse ist, die als public deklariert werden muss.

Public ReadOnly Property SupportsViewBuilding() As Boolean


Wenn Ihr Add-In zulsst, dass Benutzer benutzerdefinierte Ansichten dynamisch erzeugen knnen, sollte diese Eigenschaft auf true gesetzt werden. Wenn Sie beispielsweise eine Integration mit einer Datenbank erzeugen, knnen Sie mehrere Datenansichten basierend auf der entsprechenden Abfrage darstellen. Wenn Sie aber ein Add-In erstellen, das nur Standardansichten untersttzt, sollte diese Eigenschaft auf false gesetzt werden. Weitere Informationen zu GetVendorViews finden Sie auf Seite 43 .

Public WriteOnly Property ConfigFilePath() As String


Mit der ConfigFilePath-Eigenschaft legt CaliberRM den Pfad der von Ihrem Add-InServer verwendeten Konfigurationsdatei fest. Sie mssen diese Konfigurationsdatei angeben, wenn Sie ein Add-In beim CaliberRM-Administrator registrieren. Weitere Informationen dazu, wie Sie ein neues Traceability-Add-In aktivieren, finden Sie unter Traceability-Add-In registrieren und aktivieren auf Seite 46.

42 C alibe rR M - SDK -E ntw icklerha nd buch

Sobald diese Konfigurationsdatei eingerichtet ist, wird sie von CaliberRM verwaltet und (ber die ConfigFilePath-Eigenschaft) direkt nach der Initialisierung der VendorSessionKlasse an Ihre Integration bergeben.

Public Property SilentMode() As Boolean


Diese Eigenschaft wird von CaliberRM verwendet, um anzugeben, dass ein Add-In im Hintergrund ausgefhrt werden soll. In diesem Zustand darf Ihr Add-In KEINE Dialogfelder zur Benutzereingabe anzeigen. Wenn CaliberRM diese Eigenschaft erhlt, wird ein Add-In im Hintergrund ausgefhrt. Hinweis: Durch das Ausfhren im Hintergrund knnen mithilfe von Datamart-Berichten auerhalb der Arbeitszeiten Berichte generiert werden. Wenn Ihr CaliberRM-Server Projekte enthlt, in denen Sie Abhngigkeiten zu Ihrem Traceability-Add-In erstellt haben, wird Datamart bei der Bearbeitung seiner Aufgaben nach Anmeldeinformationen suchen. Wenn das Add-In im Hintergrund ausgefhrt wird, sollte jedoch kein Anmeldedialogfeld angezeigt werden. Borland empfiehlt, die Informationen zur Benutzerauthentifizierung in einer Datei oder der Registrierung fr Ihr Add-In zu speichern, sodass diese Informationen nicht mehr ber ein Anmeldedialogfeld abgefragt werden mssen.

Public ReadOnly Property InterfaceVersion() As Integer


Diese Eigenschaft stellt die von einem Add-In implementierte Version des TraceabilityAdd-In-Interfaces bereit. CaliberRM untersttzt derzeit Version 2.0 dieses Interfaces, deswegen sollte diese Eigenschaft immer 2 sein.

Public Function GetVendorViews(ByVal BuildView As Boolean) As Collection


Diese Funktion stellt eine Sammlung der VendorView-Objekte fr CaliberRM bereit. Jede dieser Ansichten wird als Register im Fenster nderung an Abhngigkeit von CaliberRM angezeigt.

Wenn das Fenster nderung an Abhngigkeit initialisiert wird, ruft CaliberRM die GetVendorViews-Methode des Add-Ins auf, deren BuildView-Parameter auf false gesetzt ist, was bedeutet, dass CaliberRM die ursprngliche Ansicht (oder Standardansicht) anfordert. Wenn das Add-In das dynamische Erzeugen von Ansichten untersttzt (siehe Public ReadOnly Property SupportsViewBuilding() As Boolean auf Seite 42), ist der Schalter Ansicht erzeugen aktiviert. Wenn ein Benutzer auf den Schalter Ansicht erzeugen klickt, ruft CaliberRM die GetVendorViews-Methode auf, deren BuildView-Parameter auf true gesetzt ist. Das Add-In kann ein Dialogfeld anzeigen, in dem der Benutzer dazu aufgefordert wird, Ansichtsparameter anzugeben. Zurckgegebene Ansichten werden in vorhandene Ansichtsregister eingefgt.

K a p i t e l 4 : Tr a c e a b i l i t y - A d d -I n f r C a l i b e r R M e rs t e l l e n

43

Public Function GetVendorObject(ID As String) As VendorObject


Mithilfe der GetVendorObject-Funktion ruft CaliberRM ein einzelnes VendorObject ab.

VendorView
Wie zuvor beschrieben, stellt ein Traceability-Add-In mehrere VendorView-Objekte ber die GetVendorViews-Methode der VendorSession-Klasse bereit. Umgekehrt stellt jedes VendorView-Objekt mehrere Vendor-Objekte bereit, die im Register Ansicht des Fensters nderungen an Abhngigkeiten von CaliberRM angezeigt werden.

Public ReadOnly Property ViewName() As String


Diese Eigenschaft stellt den Namen der Ansicht bereit.

Public ReadOnly Property IsList() As Boolean


CaliberRM kann eine Sammlung von Add-In-Objekten als Baum oder als Liste anzeigen. Wenn diese Eigenschaft auf true gesetzt ist, zeigt CaliberRM die Objekte der Ansicht als Liste an. Ist dies nicht der Fall, zeigt CaliberRM die Objekte der Ansicht als Baum an.

Public ReadOnly Property VendorObjects() As Collection


Diese Eigenschaft stellt die Objekte bereit, aus denen die Ansicht besteht. Wenn diese Ansicht einen Objektbaum darstellt (d. h. IsList = false), sollte diese Objektsammlung die erste Knotenebene im Baum darstellen.

VendorObject
Die VendorObject-Klasse steht fr ein einzelnes Objekt, das von Ihrem Add-In freigelegt wird. CaliberRM ruft diese Objekte als Member einer VendorView- oder ber die GetVendorObject-Methode von VendorSession ab.

Public ReadOnly Property ID() As String


Die ID-Eigenschaft ist ein eindeutige Bezeichner fr ein Objekt in CaliberRM. Daher verwendet CaliberRM diese ID zum Aufrufen der GetVendorObject-Methode der VendorSession-Klasse.

Public ReadOnly Property ObjectName() As String


Die ObjectName-Eigenschaft stellt den Namen der VendorObject-Klasse bereit.

Public ReadOnly Property ShortObjectName() As String


Diese Eigenschaft stellt einen Kurznamen fr das Objekt in CaliberRM bereit. CaliberRM krzt den Objektnamen, wenn er mehr als 16 Zeichen enthlt.

Public ReadOnly Property Icon() As Long


Diese Eigenschaft stellt ein Windows-Symbol fr das Objekt bereit.

Public ReadOnly Property Traceable() As Boolean


In der Traceable-Eigenschaft wird festgelegt, ob CaliberRM Benutzern das Erstellen einer Voraussetzung fr ein Vendor-Objekt ermglicht oder nicht.

44 C alibe rR M - SDK -E ntw icklerha nd buch

Public ReadOnly Property HasChildren() As Boolean


Diese Eigenschaft legt fest, ob das Vendor-Objekt untergeordnete Elemente enthlt. CaliberRM berprft diese Eigenschaft nur dann, wenn VendorObject als Objektbaum bereitgestellt wird (weitere Informationen finden Sie in den Erluterungen zur IsListEigenschaft der VendorView-Klasse). Wenn diese Eigenschaft auf true gesetzt ist, zeigt CaliberRM das Symbol im entsprechenden Objektbaum neben dem Objekt an.

Public ReadOnly Property Children() As Collection


Diese Eigenschaft stellt die untergeordneten Elemente eines VendorObject in CaliberRM bereit. CaliberRM ruft diese Methode auf, wenn die HasChildren-Eigenschaft true ist und der Benutzer VendorObject in einem Baum erweitert hat.

Public ReadOnly Property Operations() As Variant


Jedes Vendor-Objekt kann ber die Operations-Eigenschaft eine oder mehrere Operationen fr CaliberRM-Benutzer bereitstellen. Diese Eigenschaft sollte mehrere Strings zurckgeben, die auf dieses Objekt ausfhrbare Operationen enthalten. Wenn Ihr Vendor-Objekt beispielsweise eine Datei reprsentiert, sollten ffnen und Eigenschaften als Operationen ausgewhlt werden knnen.

Public Sub DoOperation(Operation As String)


Wenn ein Benutzer in CaliberRM mit der rechten Maustaste auf ein Vendor-Objekt klickt, fragt CaliberRM die Operations-Eigenschaft ab und zeigt ein Popup-Men mit den zurckgegebenen Strings an. Sobald ein Benutzer den Meneintrag fr eine Operation auswhlt, ruft CaliberRM die DoOperation-Methode der VendorObjectKlasse auf und bergibt den Namen der ausgewhlten Operation.

Public Sub OnTraceCreated(RequirementID As Integer)


Diese Methode wird von CaliberRM aufgerufen, wenn eine Abhngigkeit zwischen einer CaliberRM-Anforderung und dem Vendor-Objekt erstellt wird.

Public Sub OnTraceDeleted(RequirementID As Integer)


Diese Methode wird von CaliberRM aufgerufen, wenn eine Abhngigkeit zwischen einer CaliberRM-Anforderung und dem Vendor-Objekt gelscht wird.

Public Sub OnStatusChange(RequirementID As Integer, MadeSuspect As Boolean)


Diese Methode wird von CaliberRM aufgerufen, wenn der suspect-Status einer Abhngigkeit zwischen einer CaliberRM-Anforderung und den VendorObjectnderungen aufgerufen wird.

K a p i t e l 4 : Tr a c e a b i l i t y - A d d -I n f r C a l i b e r R M e rs t e l l e n

45

Traceability-Add-In registrieren und aktivieren


Sobald Sie Ihr Add-In kodiert und compiliert haben, sollten Sie es fr ein spezifisches Projekt auf einem CaliberRM-Server registrieren und aktivieren sowie auf allen CaliberRM-Client-Computern zum Einsatz bereitstellen. So registrieren und aktivieren Sie Ihr Add-In:
1 ffnen Sie CaliberRM Administrator auf einem CaliberRM-Server-Computer und

whlen Sie im linken Fenster ein Projekt aus.


2 Whlen Sie im rechten Fenster das Register External Traceability (Externe

Abhngigkeit).
3 Klicken Sie auf den Schalter New (Neu). Das Dialogfeld New Integration (Neue

Integration) wird angezeigt.


4 Geben Sie den Add-In-Namen (dieser Name wird im Register nderungen an

Abhngigkeiten angezeigt) und den Bibliotheksnamen ein (dieser Name wird in Visual Basic im Feld Projektname des Dialogfelds mit den Projekteigenschaften angezeigt) und whlen Sie ein Symbol aus. Sie knnen auch den Speicherort einer Konfigurationsdatei angeben, die von Ihrem Add-In verwendet wird. CaliberRM verteilt diese Datei automatisch auf allen Clients, die Ihre Integration verwenden (Weitere Informationen finden Sie unter VendorSession's ConfigFilePath auf Seite 43.)
5 Klicken Sie auf OK, um die neue Integration zu erstellen. Die neue Integration wird

fr alle CaliberRM-Projekte zum Listenfeld Disabled Integration(s) (Deaktivierte Integrationen) hinzugefgt.


6 Um die Integration zu aktivieren, whlen Sie sie im Listenfeld Disabled

Integration(s) (Deaktivierte Integrationen) aus und klicken Sie auf den Schalter Move Left (Nach links).
7 Klicken Sie auf File > Save Changes (Datei > nderungen speichern). Ihr Add-In ist

nun auf dem CaliberRM-Server registriert und aktiviert.


8 Stellen Sie Ihr Add-In auf allen CaliberRM-Client-Rechnern zum Einsatz bereit, wenn

Benutzer Abhngigkeiten zwischen Anforderungen und Ihren Add-In-Objekten erstellen mssen. Sie knnen entweder ein Installationsprogramm verwenden oder die erforderlichen Dateien manuell verteilen und registrieren. Sie haben auch die Mglichkeit, das Anmeldeskript zu verwenden.

46 C alibe rR M - SDK -E ntw icklerha nd buch

Anhang

Anhang A

CaliberRM-Objektmodell

Mithilfe dieser Diagramme knnen Sie nach dem Objekt suchen, mit dem Sie arbeiten mchten, und erkennen, wie sich das Objekt das CaliberRM-Gesamt-Objektmodell einfgt. Die folgende Tabelle zeigt, wie Objekte und Sammlungen in den Diagrammen dargestellt werden:

Stellt ein Objekt dar.

Stellt eine Objektsammlung dar.

Bedeutet, dass das Diagramm an anderer Stelle eine vollstndige Ansicht der Objekthierarchie enthlt.

A nh ang A: C alibe r RM-Ob j ektm ode ll

47

CaliberRM-Objektmodell

48 C alibe rR M - SDK -E ntw icklerha nd buch

A nh ang A: C alibe r RM-Ob j ektm ode ll

49

50 C alibe rR M - SDK -E ntw icklerha nd buch