TFS WorkItem Viewer

Logo

codingfreaks hat seine erste offizielle Visual-Studio-Extension released. Dieser Beitrag soll natürlich ein wenig Werbung machen, dient aber vor allem einer kleinen Vorstellung des Tools.

Download bei Visual Studio Gallery

Sinn und Zweck

Das Tool soll bei der täglichen Arbeit mit dem TFS unterstützen. Uns ist aufgefallen, dass der TFS derzeit vor allem noch eine Lücke bei komplexeren Team-Projekten aufweist. Wenn es nämlich darum geht, Abhängigkeiten und Beziehungen zwischen Work Items aufzuzeigen, patzten die TFS-eigenen Tools irgendwie immer. Innerhalb des TFS kann man ja Abhängigkeiten zwischen einzelnen Elementen herstellen. So kann man z.B. festlegen, dass eine Aufgabe der Nachfolger einer anderen sein soll.

Diese Abhängigkeiten sind natürlich extrem wichtig, weil die Benutzer nur so erkennen, ob sie mit einer Aufgabe beginnen können, weil eine Vorgängeraufgabe erledigt wurde.

Der TFS selbst bietet hierzu keine eigene Unterstützung an. Man kann nur in eine Aufgabe hineinsehen und dann in den Verknüfungen ermitteln, das eine Abhängigkeit besteht. Hier ein Beispiel für eine Aufgabe, die einen Nachfolger hat:

Abb. 1: WorkItems im TFS
Abb. 1: WorkItems im TFS

In Abb. 1 sieht man schön, dass z.B. im Task Board nichts von einer Abhängigkeit der beiden Aufgaben zu sehen ist und erst in den Link-Details der Aufgabe (gelb) diese Info textlich erscheint.

Unsere Extension

An dieser Stelle kommt unsere Extension ins Spiel. Wir haben erstmal mit einer möglichst simplen Version begonnen und beschlossen, immer die WorkItems einer bestimmten Iteration zu visualisieren. Das hat sich in unserem Alltag als häufigster Use Case herausgestellt. Meist möchte man entweder während des Groomings herausfinden, an welcher Stelle eine neue Aufgabe einzuhängen ist oder man möchte während des Sprints herausbekommen, ob man nun etwas tun kann, oder nicht.

Als Ausgabeformat bietet sich auf den ersten Blick DGML an. Visual Studio kann aus diesem XML-Format automatisch interaktive Workflow-artige Diagramme inkl. Abhängigkeiten darstellen. Visual Studio selbst nutzt das an immer mehr Stellen, wie z.B. Dependency Graphs.

Der Nachteil an diesem Ansatz ist der, dass es bislang keinen Viewer außerhalb des Visual Studio gibt und man die Visualisierung also nicht z.B. im TFS ablegen und dann über Web Access ansehen kann. Es mehren sich die Signale, dass MS hier nachbessern und externe Viewer anbieten will. Entschieden ist das aber noch nicht.

Unser Beispiel aus Abb. 1 würde jedenfalls so als DGML gerendert werden:

Abb. 2: TFS WorkItem Viewer in Aktion
Abb. 2: TFS WorkItem Viewer in Aktion

Als kleines Schmankerl kann unser Tool erledigt WorkItems gleich mit einem Häkchen versehen und anders colorieren. Die Farben werden derzeit übrigens noch per Zufallsgenerator erzeugt und können daher noch abweichen. Das schöne am DGML-Viewer ist hier, dass über Strg + F auch innerhalb des Dokumentes gesucht werden kann.

Wir haben uns dazu entschieden, die Extension als Erweiterung des Team Explorers vorzunehmen und nicht den einfachen Weg zu gehen und das Ganze einfach so ins VS zu hängen. Das hat uns nach einigem Hin und Her auch zum in unseren Augen besten Ergebnis gebracht. Da wir hier Work Items darstellen wollen, haben wir die Team Explorer-Seite „Work Items“ um eine Section erweitert:

Abb. 3: Neue Section im Team Explorer
Abb. 3: Neue Section im Team Explorer

Fazit

Wir nutzen das Tool bereits intern und kommen recht gut damit zurecht. Eigentlich ist der TFS WorkItem Viewer nur ein Abfall-Produkt aus einem unserer eigenen Projekte, in dem der Leidensdruck groß genug war. Wir haben noch einiges an Arbeit reinzustecken. Gerade die nicht sehr intuitive API des TFS, das krude COM-basierte Extension-API und das entnervende Fehlverhalten des Visual Studio beim Debuggen von Extensions werden bestimmt noch den ein oder anderen Artikel nach sich ziehen. Als Erfahrung gerade auch für das Deployment von Extensions war es aber auf jeden Fall schon mal ein cooles Ding.

3 Replies to “TFS WorkItem Viewer”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.