2017-01-12 3 views
1

Ich schreibe ein DXL-Skript, um Verlaufsinformationen von allen Objekten zu extrahieren und einige der Verlaufsparameter in andere Attribute (Spalten) im DOORS-Modul zu schreiben. Ich begann mit dem Beispielskript im DXL Reference Manual (rev 9.6, in der Nähe von Seite 333), das nur die Informationen in das DXL-Editor-Fenster druckt. Ich habe versucht, Code hinzuzufügen, um das Attribut _Reviewer zu schreiben - siehe unten. Der Code, wie er geschrieben wurde, betrachtet das aktuell ausgewählte Objekt und nicht das, zu dem der aktuelle h Verlauf gehört. Was ist die sicherste Variable, um in die Funktion print zu gelangen, damit ich auf das gewünschte Objekt zugreifen und auf sein _Reviewer Attribut schreiben kann?Wie Sie die Objekt- und Objektverlaufsinformationen in einer Schleife verfolgen

Antwort

1

Ich stelle mir vor, dass Sie das _Reviewer-Attribut nicht nur für ein Objekt, sondern für alle Objekte des Moduls festlegen möchten. Sie haben also eine Schleife über alle Objekte und für jedes Objekt haben Sie eine Schleife über jeden seiner Verlaufseinträge.

So würde die Hauptschleife wie sein

Module m = current 
string sHistoryAttributeName = "_Reviewer" 
if (null m) then {infoBox "Open this script from a module";halt) 
// […]add more code to check whether the attribute "_Reviewer" already exists in the current module and whether the module is open in edit mode 
Object o 
for o in entire m do { 
    if isDeleted(o) then continue // deleted objects are not of interest 
    // perhaps there are more objects that are not of interest. add relevant code here 
    if (!canModify o.sHistoryAttributeName) then {warn "cannot modify history entry for object " (identifier o) "\n"; continue} 
    Buffer bContentOfReview = create 
    History h 
    for h in o do { 
    bContentOfReview += getHistoryContent(h) "\n" 
    } 
    o.sHistoryAttributeName = sContentOfReview 
    delete bContentOfReview 
} 
save m 

und Ihre Funktion getHistoryContent auf Ihre Funktion void print (History h) wäre ähnlich, nur dass Sie eine Zeichenfolge anstelle des Druckens der Historieneintrag zurück. Etwas wie

Ein zusätzlicher Hinweis: Sie schrieb "in andere Attribute (Spalten)". Die obige Lösung ist für persistente Attribute. Statt dessen möchten Sie die Informationen in einer Ansicht als DXL-Layout-Spalte oder als DXL-Attribut anzeigen - beide Möglichkeiten haben den Vorteil, dass die Informationen mehr oder weniger immer aktuell sind, aber mit einem persistenten Attribut Informationen werden nur nach dem Ausführen des Skripts aktuell sein. Beachten Sie außerdem, dass dieser Ansatz nur die Änderungen seit der letzten Baseline angibt. Wenn Sie mehr benötigen, wird das Problem komplexer sein. Finden Sie in der Rational DXL Forum oder Google für komplexere Lösungen zeigen Historieneinträge

// Edit: entfernt Tippfehler in String-Verkettung verwenden Buffer insted

Verwandte Themen