Will, not really…
I work for a rather large organization and I wanted an easy way for power users of team system to deploy event handlers for the Team Foundation Server events. Essentially they create an assembly with as many EventHandler classes as they like and they can upload their assembly through an administration system, which in turn executes any handlers that exist on the system for any events.
The Event Handler class format:
<EventHandler(EventType:=EventTypes.WorkItemChangedEvent, LogEmail:=someone@company.com)>_
<Logging(Enable:=True, Verbose:=True) _
Public Class MyEventHandler
Inherits AEventHandler(of WorkItemChangedEvent)
Public Sub Run(TeamServer as TeamFoundation Server, e as EventHandlerArgs(of WorkItemChangedEvent))
’ Run any code for the event
End Sub
Public Sub IsValid(TeamServer as TeamFoundation Server, e as EventHandlerArgs(of WorkItemChangedEvent))
’ Check validity of the event
End Sub
End Class
Public Class EventHandlerArgs(Of TEvent as {ATfsEvent})
…
’ This is the type of event that is being created as an enumerator
Public Readonly Property EventType as EventTypes
…
’ This is the actual body of the event as a WorkItemChangedEvent or CheckInEvent etc..
Public Readonly Property [Event] as TEvent
…
’ This holds the URL of the Team Foundation Server server that the event originated from
Public Readonly Property Identity as TfsIdentity
…
’ The subscription info shows information about the subscription options
Public Readonly Property SubscriptionInfo as SubscritpionInfo
…
Public Sub New(ByVal EventType as EventTypes, ByVal [Event] as TEvent, ByVal Identity as TfsIdentity, ByVal SubscriptionInfo as SubscritpionInfo)
…
End Class
There is then a system that handles all of the events and is subscribed through the Bizsubscribe tool, but that allows a user to administer their own EventHandler’s through and admin system (Web, Form or XBAP) through a bunch of web services. There is a lot of code, and not enough room to put it up here, I may start a CodePlex project. I will be adding the admin system for this to our TeamPlain site and I may set it up to deploy as such. I will also require to create a visual studio project template thingy.
I am afraid I had to code from memory, so any errors or omissions are just my a sign of me getting old, but I hope you get the point and the ease with which you could write and deploy EventHandler’s with this.
Technorati Tags: .NET TFS Custom WIT
What to read next
Creating your own Event Handler
Learn how to create custom event handlers for Team Foundation Server by inheriting from AEventHandler, implementing IsValid and Run methods, …
TFS EventHandler: Message Queuing
Explains using message queues in Team Foundation Server EventHandler to manage events reliably, ensuring no data loss during handler updates …
TFS EventHandler: Now on CodePlex
Team Foundation Server EventHandler is now available on CodePlex, with ongoing updates to use Message Queuing and a Windows Service. Source …
TFS Event Handler (Prototype) Refresh
Bug fixes and updates for the TFS Event Handler Prototype, now supporting .NET 3.5 and Visual Studio 2008. Includes installer refresh and …
Detecting agile theatre with real delivery signals
Why Most Companies Operating Models Fail in Dynamic Markets
A concise comparison of Predictive and Adaptive Operating Models, explaining why traditional structures fail in dynamic markets and how …
Don’t Manage Dependencies, Remove Them
Explains why dependencies are a sign of poor system design and outlines steps to eliminate them by aligning teams, clarifying ownership, and …
The Estimation Trap: How Tracking Accuracy Undermines Trust, Flow, and Value in Software Delivery
Tracking estimation accuracy in software delivery leads to mistrust, fear, and distorted behaviours. Focus on customer value, flow, and …
Flow of Value vs Flow of Work – Misnomer or Useful Shorthand?
Compares “flow of value” and “flow of work” in Kanban, explaining why only validated outcomes count as value and stressing the need for …
Why Outsourcing DevOps Fails, and How Real Engineering Excellence Starts With Your Team
Avoid DevOps vendor lock-in, discover how true engineering excellence starts with partnership, not outsourcing. Ready to transform your …