Project.SyncProjectWithWss 方法
同步處理指示的專案或 SharePoint 任務清單中,指定的唯一識別碼。
命名空間: WebSvcProject
組件: ProjectServerServices (在 ProjectServerServices.dll 中)
語法
'宣告
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/SyncProjectWithWss", 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 Sub SyncProjectWithWss ( _
syncEntityUid As Guid, _
syncEntityUidType As SyncEntityUidType _
)
'用途
Dim instance As Project
Dim syncEntityUid As Guid
Dim syncEntityUidType As SyncEntityUidType
instance.SyncProjectWithWss(syncEntityUid, _
syncEntityUidType)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/SyncProjectWithWss", 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 void SyncProjectWithWss(
Guid syncEntityUid,
SyncEntityUidType syncEntityUidType
)
參數
syncEntityUid
類型:System.Guid專案或 SharePoint 任務清單的 GUID。
syncEntityUidType
類型:WebSvcProject.SyncEntityUidType會指定是否要更新或 SharePoint 任務清單專案。
備註
這是一種新的Project Server 2013方法。SyncProjectWithWss方法的運作方式已經已同步處理,其中已CreateWssListSyncedProject方法所建立或更新UpdateProjectSyncSettings方法來同步處理資料的專案。
Project Server 權限
權限 |
描述 |
---|---|
可讓使用者發佈專案至 Project Server 發佈的資料庫。 |
範例
範例 ProjectServerServices.dll proxy 組件中使用SvcProject命名空間。ConfigClientEndpoints方法及SetClientEndPoints方法可用於 app.config 檔案設定 WCF 繫結、 行為和端點。如需建立 PSI proxy 組件和 app.config 檔案的資訊,請參閱 < Prerequisites for WCF-Based Code Samples。
注意事項 |
---|
下列範例中的設計目的在於示範如何使用SyncProjectWithWssUpdateSyncProjectSettings,且CreateWssListSyncedProject方法 ;不完整的解決方案。Guid 的硬式編碼的必要欄位。若要使用範例,請先建立 SharePoint 工作清單。在程式碼中,變更LIST_TITLE、 SHAREPOINT_LIST_SITE,以及其他 URL 值適用,以符合這些Project Server 2013的測試安裝中。 |
SyncProjectWithWss方法會同步處理專案與 SharePoint 工作清單使用更新的SyncDataSet。
Lists web 服務會提供方法讓使用 SharePoint 清單及清單項目。若要存取此 web 服務,設定http://site/_vti_bin/Lists.asmx的參照。
Lists.GetListCollection web 方法會傳回 XML 文件包含在 SharePoint 網站的名稱及所有清單的 Guid。此範例使用XElement.Parse方法來變更至名為rootXElement物件的 XML 文件。GetListGuid方法然後沒有 LINQ to XML root物件上的查詢,並返回清單標題中的對應清單的 GUID。
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;
// The 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; // The 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);
}
}
}