Поделиться через


Метод Project.CreateWssListSyncedProject

Создает проект с указанным именем из списка задач SharePoint и заполняет проекта с данными, который сопоставляется со списка задач.

Пространство имен:  WebSvcProject
Сборка:  ProjectServerServices (в ProjectServerServices.dll)

Синтаксис

'Декларация
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/CreateWssListSyncedProject", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Project/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Project/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Function CreateWssListSyncedProject ( _
    syncDataSet As SyncDataSet, _
    projectName As String _
) As Guid
'Применение
Dim instance As Project
Dim syncDataSet As SyncDataSet
Dim projectName As String
Dim returnValue As Guid

returnValue = instance.CreateWssListSyncedProject(syncDataSet, _
    projectName)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/CreateWssListSyncedProject", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Project/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Project/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public Guid CreateWssListSyncedProject(
    SyncDataSet syncDataSet,
    string projectName
)

Параметры

  • projectName
    Тип: System.String

    Имя списка задач SharePoint, которое будет имя синхронизированного проекта.

Возвращаемое значение

Тип: System.Guid
GUID проекта, которая создается.

Замечания

Новый метод в Project Server 2013. Чтобы использовать метод CreateWssListSyncedProject , необходимо программное создание SyncDataSet; нельзя использовать метод ReadProjectSyncSettings до того времени, после синхронизации проекта.

Разрешения Project Server

Разрешение

Описание

Нестандартные

Необходимо иметь глобальное разрешение ManageWorkflow или ChangeWorkflow глобальное разрешение. Если у вас есть разрешения на ChangeWorkflow , необходимо также иметь разрешение категории OpenProject и разрешение категории SaveProject .

Примеры

В примере используется пространство имен SvcProject в сборке ProjectServerServices.dll прокси-сервера. Метод ConfigClientEndpoints и метод SetClientEndPoints привязки, поведение и конечной точки WCF с помощью файла app.config. Сведения о создании Необходимые условия для примеров кода на основе WCF в Project 2013просматривать сборкой прокси-сервер PSI и файл app.config.

Примечание

Следующий пример кода предназначен для демонстрации использования CreateWssListSyncedProject, UpdateProjectSyncSettingsи SyncProjectWithWss методов. Это не полное решение. Идентификаторы GUID зафиксированы для необходимые поля. Чтобы воспользоваться этим примером, сначала создайте списка задач SharePoint. В коде где это применимо в соответствии с учетными записями test установку Project Server 2013 измените LIST_TITLE, SHAREPOINT_LIST_SITEи другие значения URL-адрес.

Списки веб-служба предоставляет методы для работы со списками SharePoint и элементов списка. Для доступа к данной веб-службы, задайте ссылку на http://site/_vti_bin/Lists.asmx.

Веб-метод Lists.GetListCollection возвращает XML-документа, включая имена и идентификаторы GUID для всех списков на сайте SharePoint. В примере используется метод XElement.Parse для изменения XML-документа с именем rootXElement объекта. Метод GetListGuid затем не запроса LINQ to XML в объекте root и возвращает идентификатор GUID списка, соответствующий заголовок списка.

Метод CreateSyncDataSet создает объект SyncDataSet с именем syncDS. Метод CreateWssListSyncedProject использует объект syncDS для создания синхронизированного проекта. Ниже приведен полный пример кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.IO;
using System.ServiceModel;
using System.Xml;
using System.Xml.Linq;
using PSLibrary = Microsoft.Office.Project.Server.Library;
using System.Data;
using System.Web.Services;
using WebSvcLists = Microsoft.SDK.Project.Samples.ReadArchivedProjectsList.WebSvcLists;

namespace Microsoft.SDK.Project.Samples.SyncProject
{
    class Program
    {
        // Change the URL of the SharePoint list site and the name of the task list.
        private const string SHAREPOINT_LIST_SITE = "http://jc2vm1";
        private const string LIST_TITLE = "Task List 102";

        private const string ENDPOINT_PROJECT = "basicHttp_Project";
        private const string OUTPUT_FILES = @"C:\Projects\Samples\Output\";
        private static string outFilePathSyncDataSet;
        private static string outFilePathUpdatedSyncDS;

        private static SvcProject.ProjectClient projectClient;
        private static WebSvcLists.Lists lists;
        
        // GUIDs of the default fields are the same in all 
        // SharePoint 2010 default task lists.
        private const string PRIORITY_LIST_FIELD_GUID =
            "a8eb573e-9e11-481a-a8c9-1104a54b2fbd";
        private const string DUEDATE_LIST_FIELD_GUID =
            "cd21b4c2-6841-4f9e-a23a-738a65f99889";
        private const string STARTDATE_LIST_FIELD_GUID =
            "64cd368d-2f95-4bfc-a1f9-8d4324ecb007";
        private const string BODY_LIST_FIELD_GUID =
            "7662cd2c-f069-4dba-9e35-082cf976e170";
        private const string ASSIGNEDTO_LIST_FIELD_GUID =
            "53101f38-dd2e-458c-b245-0c236cc13d1a";
        private const string PERCENTCOMPLETE_LIST_FIELD_GUID =
            "d2311440-1ed6-46ea-b46d-daa643dc3886";
        private const string TITLE_LIST_FIELD_GUID =
            "fa564e0f-0c70-4ab9-b863-0177e6ddd247";
        private const string PRIORITY_FIELD_GUID = 
            "a8eb573e-9e11-481a-a8c9-1104a54b2fbd";

        private static XElement root;  // Root of the list XML data.

        static void Main(string[] args)
        {
            lists = new WebSvcLists.Lists();
            lists.Url = "http://jc2vm1/_vti_bin/lists.asmx";
            lists.Credentials = CredentialCache.DefaultCredentials;

            // Get the XML data for the lists in the specified 
            // SharePoint lists collection.
            XmlNode listData = lists.GetListCollection();

            root = XElement.Parse(listData.OuterXml);

            string projectName = string.Empty;
            Guid listUid = GetListGuid(root, LIST_TITLE, out projectName);
            
            // If the output directory does not exist, create it.
            if(!Directory.Exists(OUTPUT_FILES))
            {
                Directory.CreateDirectory(OUTPUT_FILES);
            }

            // Assign the path where the output XML file will be saved.
            outFilePathSyncDataSet = OUTPUT_FILES + "SyncDataSet.xml";
            outFilePathUpdatedSyncDS = OUTPUT_FILES + "UpdatedSyncDataSet.xml";

            // Configure the endpoints.
            ConfigClientEndpoints(ENDPOINT_PROJECT);

            try
            {
                // Create Sync Dataset.
                SvcProject.SyncDataSet syncDS = CreateSyncDataSet(listUid);

                // Create the project.
                Guid CreatedProject_Guid = projectClient.CreateWssListSyncedProject(
                    syncDS, projectName);
                Guid[] syncEntityGuids = new Guid[1];
                syncEntityGuids[0] = listUid;

                // Read back the SyncDataSet, and write it to a file.
                SvcProject.SyncEntityUidType syncEntityUidType =
                    SvcProject.SyncEntityUidType.WssListUid;
                syncDS = projectClient.ReadProjectSyncSettings
                        (syncEntityGuids, syncEntityUidType, true);
                syncDS.WriteXml(outFilePathSyncDataSet);

                // Update project synchronization settings.
                syncDS.SyncValueTranslations.Rows[0]["SYNC_PROJECT_VALUE"] = "900";

                // No values are allowed in the SyncItemTaskMappings table, 
                // when updating the project synchronization settings.
                syncDS.SyncItemTaskMappings.Clear();
                syncDS.AcceptChanges();

                projectClient.UpdateProjectSyncSettings(syncDS);
                syncDS.WriteXml(outFilePathUpdatedSyncDS);

                // Synchronize the updated project.
                projectClient.SyncProjectWithWss(listUid, syncEntityUidType);
            }
            catch (CommunicationException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(
                    "\n***System.ServiceModel.CommunicationException:");
                Console.WriteLine(e.ToString());
                Console.ResetColor();
            }
            Console.WriteLine("\n\nPress any key to exit.");
            Console.ReadKey(false);
        }

        static Guid GetListGuid(XElement listCollection, string listTitle, 
            out string projectName)
        {
            string listId = string.Empty;
            XNamespace xmlns = "https://schemas.microsoft.com/sharepoint/soap/";

            var query = from el in root.Elements(xmlns + "List")
                        where el.Attribute("Title").Value.Equals(listTitle)
                        select el;

            int numElem = query.Count<XElement>();
            Console.WriteLine("Number of elements in query: " + numElem.ToString());

            projectName = query.First<XElement>().Attribute("Title").Value;
            Console.WriteLine(projectName);

            listId = query.First<XElement>().Attribute("ID").Value;
            Guid listUid = new Guid(listId);
            Console.WriteLine("List ID = " + listUid.ToString());
            return listUid;
        }

        // Create the initial SyncDataSet, to use for synchronizing
        // a project the first time.
        static SvcProject.SyncDataSet CreateSyncDataSet(Guid listUid)
        {
            SvcProject.SyncDataSet syncDS = new SvcProject.SyncDataSet();

            string priority = PSLibrary.WSSSync.PriorityFieldName;
            string wssDuedate = "Due Date";
            string projectDueDate = PSLibrary.WSSSync.FinishDateFieldName;
            string wssAssignedTo = "Assigned To";
            string projectAssignedTo = PSLibrary.WSSSync.AssignedToFieldName;
            string wssStartDate = "Start Date";
            string projectStartDate = PSLibrary.WSSSync.StartDateFieldName;
            string wssPercentComplete = "% Complete";
            string projectPercentComplete = PSLibrary.WSSSync.PercentCompleteFieldName;
            string wssBody = "Body";
            string projectNotes = PSLibrary.WSSSync.PercentCompleteFieldName;
            string title = "Title";
            string priorityHigh = "(1) High";
            string priorityNormal = "(2) Normal";
            string priorityLow = "(3) Low";
            string priorityHighValue = "600";
            string priorityNormalValue = "500";
            string priorityLowValue = "400";

            // Project field GUIDs are the same for all projects.
            Guid PRIORITY_PROJECT_FIELD_GUID = PSLibrary.WSSSync.PriorityFieldUid;
            Guid FINISHDATE_PROJECT_FIELD_GUID = PSLibrary.WSSSync.FinishDateFieldUid;
            Guid ASSIGNEDTO_PROJECT_FIELD_GUID = PSLibrary.WSSSync.AssignedToFieldUid;
            Guid STARTDATE_PROJECT_FIELD_GUID = PSLibrary.WSSSync.StartDateFieldUid;
            Guid PERCENTCOMPLETE_PROJECT_FIELD_GUID = PSLibrary.WSSSync.PercentCompleteFieldUid;
            Guid NOTES_PROJECT_FIELD_GUID = PSLibrary.WSSSync.DescriptionFieldUid;
            Guid TITLE_PROJECT_FIELD_GUID = PSLibrary.WSSSync.TitleFieldUid;

            // Create a SyncProjectSettings row.
            SvcProject.SyncDataSet.SyncProjectSettingsRow synProjectSettingRow = 
                syncDS.SyncProjectSettings.NewSyncProjectSettingsRow();
            synProjectSettingRow.SYNC_WSS_LIST_UID = listUid;
            synProjectSettingRow.PROJ_UID = Guid.NewGuid();
            synProjectSettingRow.SYNC_WSS_SERVER_URL = SHAREPOINT_LIST_SITE;
            syncDS.SyncProjectSettings.AddSyncProjectSettingsRow(
                synProjectSettingRow);

            // Add SyncFieldMappingsRows.
            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow.SYNC_WSS_FIELD_UID = 
                new Guid(PRIORITY_LIST_FIELD_GUID);
            syncFieldMappingsRow.SYNC_WSS_FIELD_NAME = priority;
            syncFieldMappingsRow.SYNC_PROJECT_FIELD_UID = 
                PRIORITY_PROJECT_FIELD_GUID;
            syncFieldMappingsRow.SYNC_PROJECT_FIELD_NAME = priority;
            syncFieldMappingsRow.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow1 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow1.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow1.SYNC_WSS_FIELD_UID = 
                new Guid(DUEDATE_LIST_FIELD_GUID);
            syncFieldMappingsRow1.SYNC_WSS_FIELD_NAME = wssDuedate;
            syncFieldMappingsRow1.SYNC_PROJECT_FIELD_UID = 
                FINISHDATE_PROJECT_FIELD_GUID;
            syncFieldMappingsRow1.SYNC_PROJECT_FIELD_NAME = projectDueDate;
            syncFieldMappingsRow1.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow1);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow2 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow2.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow2.SYNC_WSS_FIELD_UID = 
                new Guid(ASSIGNEDTO_LIST_FIELD_GUID);
            syncFieldMappingsRow2.SYNC_WSS_FIELD_NAME = wssAssignedTo;
            syncFieldMappingsRow2.SYNC_PROJECT_FIELD_UID = 
                ASSIGNEDTO_PROJECT_FIELD_GUID;
            syncFieldMappingsRow2.SYNC_PROJECT_FIELD_NAME = projectAssignedTo;
            syncFieldMappingsRow2.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow2);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow3 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow3.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow3.SYNC_WSS_FIELD_UID = 
                new Guid(STARTDATE_LIST_FIELD_GUID);
            syncFieldMappingsRow3.SYNC_WSS_FIELD_NAME = wssStartDate;
            syncFieldMappingsRow3.SYNC_PROJECT_FIELD_UID = 
                STARTDATE_PROJECT_FIELD_GUID;
            syncFieldMappingsRow3.SYNC_PROJECT_FIELD_NAME = projectStartDate;
            syncFieldMappingsRow3.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow3);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow4 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow4.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow4.SYNC_WSS_FIELD_UID = 
               new Guid(PERCENTCOMPLETE_LIST_FIELD_GUID);
            syncFieldMappingsRow4.SYNC_WSS_FIELD_NAME = wssPercentComplete;
            syncFieldMappingsRow4.SYNC_PROJECT_FIELD_UID = 
                PERCENTCOMPLETE_PROJECT_FIELD_GUID;
            syncFieldMappingsRow4.SYNC_PROJECT_FIELD_NAME = 
                projectPercentComplete;
            syncFieldMappingsRow4.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow4);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow5 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow5.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow5.SYNC_WSS_FIELD_UID = 
                new Guid(BODY_LIST_FIELD_GUID);
            syncFieldMappingsRow5.SYNC_WSS_FIELD_NAME = wssBody;
            syncFieldMappingsRow5.SYNC_PROJECT_FIELD_UID = 
                NOTES_PROJECT_FIELD_GUID;
            syncFieldMappingsRow5.SYNC_PROJECT_FIELD_NAME = projectNotes;
            syncFieldMappingsRow5.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow5);

            SvcProject.SyncDataSet.SyncFieldMappingsRow syncFieldMappingsRow6 =
                syncDS.SyncFieldMappings.NewSyncFieldMappingsRow();
            syncFieldMappingsRow6.SYNC_WSS_LIST_UID = listUid;
            syncFieldMappingsRow6.SYNC_WSS_FIELD_UID = 
                new Guid(TITLE_LIST_FIELD_GUID);
            syncFieldMappingsRow6.SYNC_WSS_FIELD_NAME = title;
            syncFieldMappingsRow6.SYNC_PROJECT_FIELD_UID = 
                TITLE_PROJECT_FIELD_GUID;
            syncFieldMappingsRow6.SYNC_PROJECT_FIELD_NAME = title;
            syncFieldMappingsRow6.SYNC_IS_PROJECT_CUSTOM_FIELD = false;
            syncDS.SyncFieldMappings.AddSyncFieldMappingsRow(
                syncFieldMappingsRow6);

            // Add SyncValueTranslationsRow.        
            //SvcProject.SyncDataSet.SyncValueTranslationsRow
            //    syncValueTranslationsRow = 
            //    syncDS.SyncValueTranslations.NewSyncValueTranslationsRow();

            SvcProject.SyncDataSet.SyncValueTranslationsRow
                syncValueTranslationsRow1 = 
                syncDS.SyncValueTranslations.NewSyncValueTranslationsRow();
            syncValueTranslationsRow1.SYNC_WSS_LIST_UID = listUid;
            syncValueTranslationsRow1.SYNC_WSS_FIELD_UID = new Guid(PRIORITY_FIELD_GUID);
            syncValueTranslationsRow1.SYNC_WSS_FIELD_NAME = priority;
            syncValueTranslationsRow1.SYNC_WSS_VALUE = priorityHigh;
            syncValueTranslationsRow1.SYNC_PROJECT_VALUE = priorityHighValue;
            syncDS.SyncValueTranslations.AddSyncValueTranslationsRow(syncValueTranslationsRow1);

            SvcProject.SyncDataSet.SyncValueTranslationsRow
                syncValueTranslationsRow2 = syncDS.SyncValueTranslations.NewSyncValueTranslationsRow();
            syncValueTranslationsRow2.SYNC_WSS_LIST_UID = listUid;
            syncValueTranslationsRow2.SYNC_WSS_FIELD_UID = new Guid(PRIORITY_FIELD_GUID);
            syncValueTranslationsRow2.SYNC_WSS_FIELD_NAME = priority;
            syncValueTranslationsRow2.SYNC_WSS_VALUE = priorityNormal;
            syncValueTranslationsRow2.SYNC_PROJECT_VALUE = priorityNormalValue;
            syncDS.SyncValueTranslations.AddSyncValueTranslationsRow(syncValueTranslationsRow2);

            SvcProject.SyncDataSet.SyncValueTranslationsRow
                syncValueTranslationsRow3 = syncDS.SyncValueTranslations.NewSyncValueTranslationsRow();
            syncValueTranslationsRow3.SYNC_WSS_LIST_UID = listUid;
            syncValueTranslationsRow3.SYNC_WSS_FIELD_UID = new Guid(PRIORITY_FIELD_GUID);
            syncValueTranslationsRow3.SYNC_WSS_FIELD_NAME = priority;
            syncValueTranslationsRow3.SYNC_WSS_VALUE = priorityLow;
            syncValueTranslationsRow3.SYNC_PROJECT_VALUE = priorityLowValue;
            syncDS.SyncValueTranslations.AddSyncValueTranslationsRow(syncValueTranslationsRow3);
 
            return syncDS;
        }

        // Configure the client endpoints.
        public static void ConfigClientEndpoints(string endpt)
        {
            projectClient = new SvcProject.ProjectClient(endpt);
        }
    }
}

См. также

Справочные материалы

Project класс

Элементы Project

Пространство имен WebSvcProject