Update 13.03.2014 / [email protected]: Die Erfahrungen aus den in dieser Blog-Reihe vorgestellten Möglichkeiten haben wir mittlerweile in unsere Erweiterung des Team Foundation Servers TFS ASAP einfließen lassen. Einen Einblick in die Möglichkeiten in Bezug auf Zeiterfassung gibt der Blog-Post Zeiterfassung mit Team Foundation Server Teil 4 – mit TFS ASAP.
Im ersten Teil der Blogserie haben wir vorgestellt, wie weit man mit TFS-Boardmitteln in punkto Zeiterfassung kommen kann. In diesem Beitrag soll es darum gehen, was sich mit Anpassungen an den TFS daran noch verbessern lässt…
Was wir erreichen wollen…
Die Standardlösung aus dem ersten Teil hatte den Nachteil, dass die Erfassung der Zeiten immer nur am heutigen Tag erfolgte. Ein Benutzer konnte keine Korrektur für einen vorangegangen Tag buchen. Die Lösung dafür werden wir im folgenden skizzieren.
Welche Anpassungen nötig sind…
Um es vorweg zu nehmen: Die Lösung funktioniert im Gegensatz zu Teil 1 nicht ohne Erweiterungen am TFS – kommt aber ohne Clientinstallation aus. Es handelt sich also lediglich um serverseitige Anpassungen ab der TFS-Version 2012. Wir haben die Erweiterungen für eine größere Kundenzahl bereits als Plattform erstellt und bieten Sie im Rahmen unserer Dienstleistungen auch neuen Kunden an.
Zum einen muss der Work Item Type – hier der Task – angepasst werden. Wir haben die neuen Felder “Current Work” vom Typ Double und “Current Work Date” vom Typ DateTime hinzugefügt. Im Formular des Task ist zunächst nur das Feld “Current Work” zu sehen:
Abbildung: Eintragen des Aufwandes
Sobald der Benutzer etwas in dieses Feld einträgt, erscheint das Feld Current Work Date:
Abbildung: Sobald die Zeit eingetragen ist, kann das Buchungsdatum eingetragen werden
Hier kann der Benutzer eintragen für welchen Tag der Wert in Current Work gebucht werden soll. Ein negativer Wert in Current Work korrigiert einen vorher eingetragenen positiven Wert.
Nun müssen die Zeiten nur noch automatisch auf die Felder Completed Work und Remaining Work umgerechnet werden. Dies erfolgt durch eine Hintergrundlogik die im TFS-Event-Prozess für das Work Item Changed Event angestoßen wird. Wir verwenden hierzu nicht die WebService-Schnittstelle von TFS, da diese nicht zuverlässig ist, sondern die In-Process-Variante welche allerdings wohlbedacht umgesetzt werden sollte, um nicht TFS-Prozesse zu blockieren. Bitte Fragen Sie uns unter dem Stichwort “Automation Service” nach der (kostenpflichtigen) Lösung! Das Plugin welches hier zum Einsatz kommt, löscht entsprechend den Wert aus dem Feld Current Work, damit dieses für den nächsten Eintrag verwendet werden kann. Neben diesem Anwendungsfall lässt sich der Automation Service auch für andere Szenarien einsetzen.
Für die Auswertung der eingetragenen Zeiten dient ein konventioneller SQL Report, der im Work Item über das Steuerelement “WebPageControl” eingebettet wird. Damit vereinfacht sich die Auswertung und Nutzung (“Habe ich denn die Zeiten für gestern schon eingetragen?”). Ein ergänzender Report lässt sich als Übersicht für mehrere Work Items – z.B. alle der aktuellen Iteration – erstellen. Alternativ kann auch Excel (siehe Teil 1 der Blogserie) verwendet werden.
Abbildung: Time-Sheet Tab im Task Work Item
Ein Nachteil der wegen des Reports entsteht ist es, dass die Daten in der Tabelle nur alle 2 Stunden durch das Warehouse-Update aktualisiert werden. Man kann das Interval zwar verkürzen, doch das geht nicht beliebig kurz, da sonst andere Jobs blockiert werden könnten. Daher muss hier bei Bedarf z.B. ein eigener WebService her, der eine direkte Verbindung zu den operativen Datenbanken des TFS hat und somit auf die “Live-Daten” zugreift.
Obwohl die Lösung einige Erweiterungen des TFS benötigt, kommt Sie doch ohne redundante Datenhaltung aus. Wir bieten Ihnen auf Anfrage gerne Hilfestellung beim Nachbau bzw. der Übernahme der hier gezeigten Lösung an.
Wie Sie Hilfestellung für diese Lösung erhalten…
Bei Kontaktaufnahme senden wir Ihnen gerne ein unverbindliches Angebot zu: [email protected]
Hinweis: Bei dieser Unterstützung handelt es sich um eine kostenpflichtige Dienstleistung.
I came across your comments in the following post on Visual Studio:
https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2060101-tfs-needs-the-ability-to-track-hours-tied-to-a-wor
And I came here, but I can only read English, sad face. Do you have a translated version of your blog I can access? I’m really interested in using this addon you developed.
Thanks,
Billy
Hey guys, this is exactly what we are looking for, can you guys share with us how can we integrate this solution to our TFS? thank you.
Giang