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
41
41 41 42 42 44 44 46
. . . . . 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
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/.
Kapitel
Kapitel 2
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.
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
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.
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.
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
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
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:
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.
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:
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
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
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.
' 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:
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.
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)
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
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.
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
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:
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
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.
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.)
' 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>)
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)
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.
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.
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
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:
' 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
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
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.
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.
' 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.
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.
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
Dim req1 As Requirement Set req1 = objSession.getRequirement(1) Dim req2 As Requirement Set req2 = objSession.getRequirement(2) objTraceManager.createTrace3 req1, req2, False
25
... 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.
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.
Kapitel
Kapitel 3
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.
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
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:
Zum Schluss wird bei der Anmeldung bei CaliberServer ein neues Sitzungsobjekt erstellt:
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.:
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(); }
29
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:
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:
CaliberRM-Objekte lschen
Sie knnen ein CaliberObject aus CaliberRM lschen, indem Sie seine RemoveMethode aufrufen. Beispiel:
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.
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
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()); }
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()); } } }
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();
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.
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
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.
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.
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(); }
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);
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):
Beachten Sie, dass die createFileTrace-Methode als ersten Parameter eine Referenz auf eine Anforderung erfordert:
Kapitel
Kapitel 4
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.
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
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
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-
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.
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.
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
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.
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.
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
Abhngigkeit).
3 Klicken Sie auf den Schalter New (Neu). Das Dialogfeld New Integration (Neue
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
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
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.
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:
Bedeutet, dass das Diagramm an anderer Stelle eine vollstndige Ansicht der Objekthierarchie enthlt.
47
CaliberRM-Objektmodell
49