Unter gewissen Umständen kann es vorkommen, dass in der History eines Work Items ein Eintrag vorhanden ist, der “nur” die Veränderung der Revisionsnummer anzeigt (siehe Abbildung 1). Auf den ersten Blick wirkt dies etwas seltsam, da man dieses Attribut nicht manuell verändert und das Work Item dann abspeichert. Das muss noch kein Grund zur Verzweiflung sein, kann aber in einer produktiven Umgebung den Kontakt zum TFS Admin durchaus rechtfertigen.
Abbildung 1: History lediglich mit neuer Revision
Sollte man dieses Szenario vorfinden, handelt es sich sehr wahrscheinlich um eine Work Item Type Definition im Hintergrund, die im Laufe der Zeit weiterentwickelt worden ist. Im produktiven Umfeld mit einem stabilen Process Templates darf dieses Verhalten nicht vorkommen. Befindet man sich jedoch gerade in der Phase der Process Template Entwicklung, kann z.B. folgender Ablauf dazu führen, dass die History eines Work Items sich wie oben beschrieben darstellt:
Eine angepasste Work Item Type Definition wurde für ein bestimmtes Work Item verwendet (hier das Requirement). Diese Definition beinhaltet neben den Attributen, die das Process Template mitliefert, noch zusätzliche Felder. Im vorliegenden Beispiel das Feld “AIT.EnhancedDescriptionText”. In eines der zusätzlichen Felder wird ein Wert eingetragen oder verändert und das Work Item gespeichert. Danach sieht man in der Historie des Work Items zwei Felder, die sich verändert haben: Rev sowie das zusätzliche Feld (siehe nachfolgender Screenshot).
Abbildung 2: Vollständige History
Wird nun durch Weiterentwicklung des Process Templates das zusätzliche Feld wieder aus der Work Item Type Definition entfernt, bleibt es zunächst in der Datenbank erhalten und wird auch noch in der Historie korrekt angezeigt. Jedoch kann es sinnvoll sein, insbesondere solange man mit einer Umgebung noch nicht produktiv arbeitet, das Feld über das Kommandozeilenwerkzeug witadmin /deletefield vollständig zu entfernen. Dies ist hilfreich, um den Anwender, z.B. beim Erstellen einer Work Item Query nicht unnötige, nicht mehr verwendete Felder anzuzeigen und evtl. zu verwirren. Entfernen des Feldes bedeutet in dem Falle das Entfernen aus der Datenbank. Ist man einst diesen Schritt gegangen, kann der ehemalige Feldwert auch in der Historie eines Work Items nicht mehr angezeigt werden. Wenn die Änderung genau dieses Feldes die einzige Änderung in der spezifischen Work Item Revision war, erhält man das in der Abbildung 1 gezeigte Resultat.
Es zeigt auch, dass man mit dem Entfernen eines Feldes äußerst vorsichtig umgehen muss. Selbst beim Versuch, den einstigen Wert aus dem relationalen Warehouse auszulesen wird man feststellen, dass die Sicherheitsabfrage des Kommandozeilenwerkzeug witadmin /deletefield durchaus ernst gemeint ist. Wie der nachfolgende Screenshot zeigt, kann man den einstigen Feldwert auch der WorkItemHistoryView in der Datenbank nicht mehr entlocken.
Abbildung 3: Fehlerhafter Zugriff auf WorkItemHistoryView
Seien Sie also vorsichtig bei der Bearbeitung von Work Item Type Definitionen, besonders beim Entfernen von Feldern oder ganzen Work Item Typen aus der Datenbank. Testen Sie stets in einer Staging-Umgebung, bevor Sie Änderungen auf ein produktives System ausrollen. Gerne unterstützen wir Sie dabei. Kontaktieren Sie einfach unsere Experten.