Как загрузить документы из библиотеки документов Sharepoint с помощью Workflow Foundation?

#sharepoint #sharepoint-2010 #tfsbuild #workflow-foundation

#sharepoint #sharepoint-2010 #tfsbuild #workflow-foundation

Вопрос:

У меня есть некоторые тесты, безопасность, управление проектами и некоторые другие документы Word в системе управления версиями TFS2010 в папке Documents. Кто-нибудь знает, как получить к ним доступ, чтобы загрузить и скопировать в локальный путь?

Эти файлы физически не находятся в $/… папка, хотя у них есть путь к веб-серверу Sharepoint, например: « http://myServer/sites/MyProyect/Test/Tests_P13_F00120.doc «. Я безуспешно пытался использовать DownloadFiles activity из-за того, что ему нужен путь, начинающийся с $/. Какие-либо предложения, пожалуйста?

Комментарии:

1. Эти файлы находятся не в системе управления версиями, а в SharePoint.

2. @JohnSaunders: Да, я упоминал об этом «хотя у них есть путь к веб-серверу Sharepoint …». Но есть ли какой-нибудь способ получить их через рабочие процессы? Спасибо за ответ

3. Пожалуйста, скажите, чего вы пытаетесь достичь. «Получить их» не очень понятно.

4. @JohnSaunders: Когда я говорю получить их, я имею в виду загрузить, например, все документы в папке Test с моего сайта Sharepoint (который подключен к моей Team Build 2010) с помощью Team Build Workflow. Пример: http://myServer/sites/MyProyect/Test/*.doc

5. Изучите API на стороне клиента SharePoint. Сейчас я рассматриваю пример в «Справочнике разработчика Microsoft SharePoint 2010», глава 5, «Технологии на стороне клиента», листинг 5-25. Он загружает только один документ, но это предполагает, что есть способ загрузить целую папку.

Ответ №1:

DownloadFiles это не то действие, которое вы можете использовать, оно предназначено для работы с файлами, находящимися в системе управления версиями.

Вместо этого вам необходимо установить соединение со службой копирования Sharepoint вашей TFS, которая находится по адресу http://<Site>/_vti_bin/Copy.asmx . Мы сделали это, добавив ссылку на службу в наше решение для сборки.

Затем мы внедрили действие сборки, которое в основном противоположно тому, что вам нужно: во время сборки TFS оно загружает документы в Sharepoint.

Создание экземпляра выглядит следующим образом:

 BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

EndpointAddress endpointAddress = new EndpointAddress("http://<Site>/_vti_bin/Copy.asmx");

CopySoapClient copyService = new CopySoapClient(binding,endpointAddress);
  

Эта служба копирования предоставляет GetItem метод, который вы, вероятно, должны вызывать.

Я не знаю, способно ли это GetItem поддерживать http://myServer/sites/MyProject/Test/*.doc что-то вроде