[PL] Webserwisy w TFS 2008
Webserwisy w TFS nie są udokumentowane. Microsoft zaleca aby w własnych aplikacjach rozszerzających TFS wykorzystywać Client SDK, stąd taka decyzja.
Ciekawość wiadomo, pierwszy stopień do piekła, natomiast czasem wygrywa. W jednej sprawie nie znalazłem innej metody niż invoke na Webserwisie i ten przykład podaję poniżej:
Raporty nie odzwierciedlają aktualnych danych. Spowodowane jest to tym, iż hurtowania danych wykorzystywana w raportach jest aktualizowana okresowo (raz na godzinę). Jestem niecierpliwy i mam swoje tysiące powodów aby przyspieszyć sprawę.
Szybko sprawdzam, że do mojego raportu brakuje paru zadań (workitems) w hurtowni, zapytanie poniżej:
select t.* from
(
select * FROM TfsWorkItemTracking.dbo.WorkItemsLatest as wil
union all
select * FROM TfsWorkItemTracking.dbo.WorkItemsWere as wiw
) as t
left join TfsWarehouse.dbo.[Work Item History] as wh on
CAST(CAST(wh.[Logical Tracking Id] AS UniqueIdentifier) AS Binary(16)) = t.[Changed Order]
AND wh.[Revision Count] = 1
where wh.[Work Item] is null order by id, rev
Oczekuję pustego wyniku, a jednak mam dane. Co dalej? Poniższy webserwis pomaga w sprawie:
https://<TFS Instance>:8080/warehouse/v1.0/warehousecontroller.asmx
Tam są dwie metody istotne z punktu widzenia powyższej sprawy:
Run – manualne uruchomienie wszystkich adapterów, Zwraca true/false w zależności od poprawności wykonania.
Aby sprawdzić aktualny status przetwarzania należy wykonać drugą metodę z tego samego serwisu:
GetWarehouseStatus – ta metoda zwraca poniższego enuma:
<GetWarehouseStatusResult>Idle or ProcessingOlap or RunningAdapters or Blocked</GetWarehouseStatusResult>
Jeśli jest Idle, to oznacza, że praca została zakończona.
To jeden przykład. Webserwisów jest wiele, i jak wspomniałem są praktycznie w ogóle nieudokumentowane.
Manualne przejrzenie zasobów IIS lub “tree /f” na folderze instalacyjnym TFS pozwoliło mi na skonstruowanie małej ściągi wszystkich dostępnych serwisów w TFS 2008:
C:<TFS Folder>\Web Services\*
│
├───Build
│ │
│ ├───V1.0
│ │ BuildController.asmx
│ │ BuildStore.asmx
│ │ Integration.asmx
│ │ PublishTestResultsBuildService.asmx
│ │ PublishTestResultsBuildService2.asmx
│ │
│ └───V2.0
│ BuildService.asmx
│ Integration.asmx
│
├───Services
│ │
│ ├───v1.0
│ │ AuthorizationService.asmx
│ │ CommonStructureService.asmx
│ │ EventService.asmx
│ │ GroupSecurityService.asmx
│ │ ProcessTemplate.asmx
│ │ projectMaintenance.asmx
│ │ Registration.asmx
│ │ ServerStatus.asmx
│ │
│ └───v2.0
│ GroupSecurityService2.asmx
│
├───VersionControl
│ └───v1.0
│ Administration.asmx
│ Integration.asmx
│ ProxyStatistics.asmx
│ Repository.asmx
│
├───Warehouse
│ │
│ └───v1.0
│ warehousecontroller.asmx
│
└───WorkItemTracking
│
└───v1.0
ClientService.asmx
ConfigurationSettingsService.asmx
ExternalServices.asmx
Integration.asmx
SyncEventsListener.asmx
Jak wspomniałem wyżej, Microsoft nie zaleca odwoływania się do webserwisów bezpośrednio i wszelkie aplikacje rozszerzające TFS z tego pułapu nie są przez MS wspierane, natomiast jak wspomniałem, człowiek młody to i ciekawy. Wersje 2.0 obecne są tylko w TFS 2008, v1 są też w starszej wersji. W TFS 2008 zostały pozostawione tylko dla kompatybilności wstecz.
Technorati Tagi: Polish posts,Visual Studio Team System,coding
Comments
- Anonymous
April 20, 2009
Wspomniałem wczoraj o webserwisach do TFS. Metody w nich wyeksponowane są w ramach eksperymentu i zabawy