내가 뭘 하려는지에 대한 개요를 설명하는 것이 좋을 것입니다. (단지이 끔찍한 잘못에 대해 생각하고 있습니다.) TFS에서는 "스토리"작업 항목에는 "우선 순위"필드가 포함됩니다. 주어진 시간에 우리는 20-30 개의 이야기를 우선적으로 가지고 있습니다. 예를 들어 20 가지의 우선 순위가있는 이야기 (1 ~ 20)를 작성한 다음 우리의 새로운 최우선 과제가 될 새로운 이야기를 만들고 싶습니다. 그래서, 우선 순위를 1로 할 수 있기를 바란다. 그런 다음 서버 측 플러그인을 사용하여 다른 모든 스토리의 우선 순위를 업데이트하여 1에서 21까지 끝난다. (1은 새로운 스토리이다. 방금 만든).TFS 2010 : WorkItem.Save가 WorkItemChangedEvent를 다시 트리거합니다.
이 기사에서는 WorkItemChangedEvent를 구독하는 TFS 2010 용 서버 측 플러그인을 만들었습니다. 우선 순위가 업데이트되었는지 여부를 파악할만큼 똑똑하기 때문에이 경우 작업 항목 만 변경됩니다. 문제는 내가 우선 순위를 변경하고 WorkItem.Save()를 실행하면 WorkItemChangedEvent를 다시 트리거하고 우선 순위가 변경되어 논리가 true가되고 업데이트되고 다시 저장된다는 것입니다.
이전에 datetime 필드 중 하나의 시간을 00:00:00 (이미 00:00:00이 아닌 경우)로 업데이트하고이 동작을 감지 한 서버 측 플러그인을 만들었습니다 . 시간이 벌써 00:00:00이 되었기 때문에 두 번째 실행에서 아무 일도 일어나지 않을 것이기 때문에 너무 큰 문제는 아니 었습니다. 그러나 작업 항목 전체에서 우선 순위를 업데이트하려는이 경우에는 거래 차단 자입니다. WorkItem.Save()가 WorkItemChangedEvent를 트리거하는 것을 막을 수있는 방법이 있습니까? 이 일을 함께하는 다른 방법이 있을까요?
아무도 더 좋은 해결책이 제시되지 않으면 답으로 표시하겠습니다. 효과가 있지만 깨끗한 방법이 없다면 너무 나쁩니다. – ctb
나는 더 나은 솔루션을 원합니다. 어쩌면 당신은 tfs aggregator의 소스에서 뭔가를 찾을 수 있습니다. http://tfsaggregator.codeplex.com/ – jessehouwing
시간의 이익을 위해이 경로를 끝내게되었습니다. 우선 순위 필드와 부울 필드를 업데이트 한 곳에서 하나의 저장 작업을 수행해야합니다. 그러면 처리기는 부울이 참인 모든 사례를 무시할 수 있습니다. 그런 다음 부울을 다시 false로 설정 한 두 번째 저장 작업을 수행했습니다. 이 경우 우선 순위가 변경되지 않았으므로 다시 아무 것도 발생하지 않습니다. – ctb