Обновление рабочего элемента TFS с использованием методов на стороне сервера

Я пытаюсь использовать новую функцию подключаемого модуля на стороне сервера для TFS 2010. 16/team-foundation-server-2010-event-handling-with-subscribers.aspx" rel="nofollow">здесь и здесь)

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

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

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

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

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


person Vaccano    schedule 21.01.2011    source источник
comment
Какие методы вы используете для обновления рабочих элементов?   -  person Sean Lynch    schedule 24.01.2011


Ответы (1)


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

Если вы хотите работать с объектной моделью сервера для рабочих элементов, вы должны работать с пакетами 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>
person Grant Holliday    schedule 07.02.2011