Обновление рабочего элемента TFS с использованием методов на стороне сервера - PullRequest
1 голос
/ 21 января 2011

Я пытаюсь использовать новую функцию подключаемого модуля на стороне сервера для TFS 2010. (Я получил основы того, как начать делать это с здесь и здесь )

Он прекрасно работает и во много раз быстрее, чем обычный веб-сервис для обработки событий TFS.

Но методы на стороне сервера очень недокументированы. Я выяснил, как получить рабочий элемент (через Microsoft.TeamFoundation.WorkItemTracking.Server.DataAccessLayerImpl.GetWorkItemGetWorkItemXml)

Но обновление меня смущает. Все методы обновления принимают XML. Но xml, который вы получаете от GetWorkItemXml, не является правильным форматом (он говорит, что «действие« FIELD »не разрешено).

Я попытался использовать API-интерфейс TFS на стороне клиента, и он работает. Но это медленнее, чем я хотел бы, потому что он оборачивает мыльные вызовы обратно на сервер. Поскольку я уже работаю на сервере, было бы неплохо, чтобы этот дополнительный (ненужный) этап связи не требовался.

У кого-нибудь есть опыт работы с TFS на стороне сервера? Можете ли вы дать мне указатель о том, как обновить рабочий элемент, используя методы на стороне сервера?

1 Ответ

2 голосов
/ 07 февраля 2011

К сожалению, объектная модель сервера для отслеживания рабочих элементов не очень полезна. Если вы не хотите серьезно поднять себя, лучше всего использовать клиентскую объектную модель (Microsoft.TeamFoundation.WorkItemTracking.Client.dll).

Если вы хотите работать с сервером OM для рабочих элементов, вам нужно работать в пакетах XML. Они не документированы / не поддерживаются, поэтому YMMV. Вот «лучшая» документация, которая есть на них: http://marshalbyrefobject.blogspot.com/search/label/Work%20Item%20Tracking

А вот пример того, как это выглядит:

<Package Product=http://your_server:8080/WorkItemTracking/v1.0/ClientService.asmx DisableNotifications=”True” xmlns=””>
  <InsertWorkItem ObjectType=”WorkItem” BypassRules=”True”>
    <ComputedColumns>
      <ComputedColumn Column=”System.RevisedDate”>
    </ComputedColumns>
    <Columns>
      <Column Column=”System.WorkItemType”>
        <Value>Bug</Value>
      </Column>
      <Column Column=”System.AreaId”>
        <Value>40</Value>
      </Column>
      <Column Column=”System.CreatedBy” Type=”String"/>
    </Columns>
    <InsertText FieldName=”Microsoft.VSTS.CMMI.Analysis” FieldDisplayName=”Analysis”>text goes here </InsertText>
  </InsertWorkItem>
</Package>
...