김씨의 IT 이야기

cloud

Posts Tagged ‘Event

Check-In Event 사용하기

leave a comment »

TFS에는 일반 사용자들이 사용하는 작업항목, 소스제어, 팀빌드 외에도 Core Service라는 항목들이 있다.
 Eventing Service
    Explains how Team Foundation Server components communicate by raising events and listening for events.
Linking Service
    Explains how Team Foundation Server can create a link between two artifacts that were created by different tools.
Security Service
    Describes the unified security model used by Team Foundation Server to manage users, groups, and permissions. Also, it explains how to integrate extensions into the security model
Registration Service
    Explains how to discover other services registered on a Team Foundation server. Also, it states that all new extensions must be registered on the server by using this service.
위 서비스들 중에 오늘 사용할 것은 Eventing Service라는 것이다. 알다 시피 TFS에서 발행하는 다양한 액션의 이벤트들 중에서 해당 이벤트를 활용할 수 있는 것들이 있다.
TFS Event name                                         Notes
AclChangedEvent                                                   !
BranchMovedEvent 
BuildCompletionEvent                                            *
BuildStatusChangedEvent 
CheckinEvent 
CommonStructureChangedEvent 
DataChangedEvent                                                *
IdentityChangedEvent 
IdentityCreatedEvent                                             !
IdentityDeletedEvent                                             !
MembershipChangedEvent                                    !
NodeCreatedEvent 
NodePropertiesChangedEvent 
NodeRenamedEvent 
NodesDeletedEvent 
ProjectCreatedEvent                                              *
ProjectDeletedEvent 
WorkItemChangedEvent 

(!) = These events may not work properly, per Microsoft’s Pete Sheill
(*) = These events are used internally by TS itself in a default TFS install
오늘 이용할 이벤트는 WorkItemChangedEvent이다.

보통 Team Alert (팀 경고) 라고 하여서 작업항목이 변경되었을 때 특정인에게 메일을 보낼 수 있도록 팀 탐색기에서 설정 가능하다. 이 기능을 좀더 확장하여서 활용하는 것이다.
이 기능은 두가지 액션으로 나뉘어 진다.

1. TFS에 이벤트 등록
2. 이벤트 발생 시 지정된 액션 수행

먼저 TFS에 이벤트를 등록할 수 있는 방법은 몇가지가 있다. 대표적인 방법이 BisSubscribe.exe 란 툴을 사용하는 방법이다. 이는 TFS가 설치된 디렉토리의 TFS SETUP폴더에서 찾을 수 있다. 사용법은 생략 하겠다.
두번째 방법은 workitem Event Subscription tool을 이용하는 방법이다. 정신건강을 위해서 후자를 추천한다.

이벤트가 등록되었다면 TFS DB에서 확인할 수 있다.

select * from TfsIntegration.dbo.tbl_subscription

위 쿼리를 TFS DB서버에 접속해서 실행하면 등록되어 있는 이벤트 들이 나열된다. 해당 조건들이 제대로 설정되어 있는지 각 컬럼을 점검하면 된다. 주의해서 보아야 할 컬럼은 expression과 address이다.

expression은 해당 이벤트가 발생하였을 때 address로 보내기 위한 조건이다. 여기에 조건을 명시하면 된다.
address는 해당 이벤트가 전달될 주소이다. 보통 이메일을 보내기를 원하면 이곳에 이메일주소를 적고, Delivery type을 1로 설정하면 된다. 다른 경우는 delivery type을 2로 설정하고 address에 웹서비스 주소를 적어주면 해당 이벤트가 발생하였을 때 해당 웹서비스를 실행한다.

이 때, 제약사항이 있다. 웹서비스의 이름은 반드시 service.asmx여야 하고 웹메소드는 Notify() 여야 한다.

“CoreFields/StringFields/Field[ReferenceName=’System.WorkItemType’]/NewValue” = ‘작업’ AND “ChangedFields/StringFields/Field[ReferenceName=’Team.PState’]/NewValue” = ‘완료’

위 구문을 expression에 적어놓았다. 무슨 뜻일까?

“작업항목형식이 ‘작업’이고 ‘Team.PState’란 RefName을 가진 필드의 값이 ‘완료’인 경우” 로 해석할 수 있다.
위 조건에서 눈여겨 봐야할 것은 CoreFields와 ChangedFields 등이다. 이는 TFS에서 기본제공하는 필드들에 접근하여 해당 값들을 참고하는 법과 사용자가 생성한 필드에 접근하는 방법을 적어 놓은 것이다.

 

참고 URL
http://blogs.vertigosoftware.com/teamsystem/
archive/2006/07/03/Subscribing_to_Team_Foundation_Server_Events.aspx

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2009036&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=470158&SiteID=1
http://blogs.msdn.com/narend/archive/2006/07/27/679571.aspx <–유용함
http://staff.southworks.net/blogs/mariano/archive/2006/04/14/411.aspx
http://blogs.msdn.com/narend/archive/2006/07/26/679440.aspx
http://blogs.vertigosoftware.com/teamsystem/archive/2006/07/13/
Automatic_email_notifications_when_a_work_item_is_assigned.aspx

http://msdn.microsoft.com/ko-kr/magazine/cc507647.aspx
http://www.codeplex.com/tfseventsubscription

위 링크들만 따라 다녀도 금방할 수 있다. 🙂

Written by moris Kim

2008/07/05 at 12:42

Work Item Tracking에 게시됨

Tagged with , ,

%d 블로거가 이것을 좋아합니다: