Project::GetProjectNameFromProjectUid method
Gets the project name of the specified projectUid in the Drafts database.
Namespace: WebSvcProject
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Parameters
- projectUid
- Type: System.Guid
The GUID of the project.
- dataStore
- Type: WebSvcProject.DataStoreEnum
The database in which the project data is located (Drafts, Published, or Archive).
To get a project by name instead of the projectUid, use ReadProjectStatus.
Project Server Permissions
Permission | Description |
|---|---|
Allows a user to view the global project information. Global permission. | |
Allows a user to access the Project Center. | |
Allows a user to assign resources from the resource pool to the specified project. | |
Allows a user to use the Build Team option and to determine the list of available resources. |
The following example creates a sample project, and then retrieves the project's unique ID by using its name.
For critical information about running this code sample, see Prerequisites for ASMX-based code samples in Project 2013.
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Web.Services.Protocols; using System.Threading; using PSLibrary = Microsoft.Office.Project.Server.Library; [assembly: CLSCompliant(true)] namespace Microsoft.SDK.Project.Samples.GetProjectNameFromProjectUid { class Program { [STAThread] static void Main(string[] args) { try { #region Setup const string PROJECT_SERVER_URI = "http://ServerName/ProjectServerName/"; const string PROJECT_SERVICE_PATH = "_vti_bin/psi/project.asmx"; const string QUEUESYSTEM_SERVICE_PATH = "_vti_bin/psi/queuesystem.asmx"; Guid projectId; // Set up the web service objects. SvcProject.Project projectSvc = new SvcProject.Project(); SvcProject.ProjectDataSet projectDs = new SvcProject.ProjectDataSet(); projectSvc.Url = PROJECT_SERVER_URI + PROJECT_SERVICE_PATH; projectSvc.UseDefaultCredentials = true; SvcQueueSystem.QueueSystem q = new SvcQueueSystem.QueueSystem(); q.Url = PROJECT_SERVER_URI + QUEUESYSTEM_SERVICE_PATH; q.UseDefaultCredentials = true; // Create a sample project. Console.WriteLine("Creating Sample project"); projectId = CreateSampleProject(projectSvc, q); Console.WriteLine("Created " + projectId.ToString()); #endregion #region Get Name from UID // Get the name from the Uid. string projName = projectSvc.GetProjectNameFromProjectUid(projectId, SvcProject.DataStoreEnum.WorkingStore); Console.WriteLine(projName + " was retrieved."); #endregion } #region Exception Handling and Final catch (SoapException ex) { PSLibrary.PSClientError error = new PSLibrary.PSClientError(ex); PSLibrary.PSErrorInfo[] errors = error.GetAllErrors(); string errMess = "==============================\r\nError: \r\n"; for (int i = 0; i < errors.Length; i++) { errMess += "\n" + ex.Message.ToString() + "\r\n"; errMess += "".PadRight(30, '=') + "\r\nPSCLientError Output:\r\n \r\n"; errMess += errors[i].ErrId.ToString() + "\n"; for (int j = 0; j < errors[i].ErrorAttributes.Length; j++) { errMess += "\r\n\t" + errors[i].ErrorAttributeNames()[j] + ": " + errors[i].ErrorAttributes[j]; } errMess += "\r\n".PadRight(30, '='); } Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(errMess); } catch (WebException ex) { string errMess = ex.Message.ToString() + "\n\nLog on, or check the Project Server Queuing Service"; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: " + errMess); } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Error: " + ex.Message); } finally { Console.ResetColor(); Console.WriteLine("\r\n\r\nPress any key..."); Console.ReadKey(); } #endregion } // Wait for the job to finish. // Outputs job status to the console. static public void WaitForQueue(SvcQueueSystem.QueueSystem q, Guid jobId) { SvcQueueSystem.JobState jobState; const int QUEUE_WAIT_TIME = 1; // one second bool jobDone = false; string xmlError = string.Empty; int wait = 0; // Wait for the project to get through the queue. // Get the estimated wait time in seconds. wait = q.GetJobWaitTime(jobId); // Wait for it. Console.Write("Waiting on queue. Estimate: {0} seconds.\r\n ", wait); // Wait until it is finished. do { // Get the job state. jobState = q.GetJobCompletionState(jobId, out xmlError); if (jobState == SvcQueueSystem.JobState.Success) { jobDone = true; } else { if (jobState == SvcQueueSystem.JobState.Unknown || jobState == SvcQueueSystem.JobState.Failed || jobState == SvcQueueSystem.JobState.FailedNotBlocking || jobState == SvcQueueSystem.JobState.CorrelationBlocked || jobState == SvcQueueSystem.JobState.Canceled) { // If the job failed, error out. throw (new ApplicationException("Queue request " + jobState + " for Job ID " + jobId + ".\r\n" + xmlError)); } else { //Console.WriteLine("Job State: " + jobState + " for Job ID: " + jobId); Console.Write("~"); Thread.Sleep(QUEUE_WAIT_TIME * 1000); } } } while (!jobDone); Console.Write("\r\n"); } static private Guid CreateSampleProject(SvcProject.Project projectSvc, SvcQueueSystem.QueueSystem q) { SvcProject.ProjectDataSet projectDs = new SvcProject.ProjectDataSet(); Guid jobId; // Create the project. SvcProject.ProjectDataSet.ProjectRow projectRow = projectDs.Project.NewProjectRow(); projectRow.PROJ_UID = Guid.NewGuid(); projectRow.PROJ_NAME = "Its a wonderful project at " + DateTime.Now.ToShortDateString().Replace("/", "") + " " + DateTime.Now.ToShortTimeString().Replace(":", ""); projectRow.PROJ_TYPE = (int)PSLibrary.Project.ProjectType.Project; projectDs.Project.AddProjectRow(projectRow); // Add some tasks. SvcProject.ProjectDataSet.TaskRow taskOne = projectDs.Task.NewTaskRow(); taskOne.PROJ_UID = projectRow.PROJ_UID; taskOne.TASK_UID = Guid.NewGuid(); // The Task Duration format must be specified. taskOne.TASK_DUR_FMT = (int)PSLibrary.Task.DurationFormat.Day; taskOne.TASK_DUR = 4800; // 8 hours in duration units (minute/10) taskOne.TASK_NAME = "Task One"; taskOne.TASK_START_DATE = System.DateTime.Now.AddDays(1); projectDs.Task.AddTaskRow(taskOne); SvcProject.ProjectDataSet.TaskRow taskTwo = projectDs.Task.NewTaskRow(); taskTwo.PROJ_UID = projectRow.PROJ_UID; taskTwo.TASK_UID = Guid.NewGuid(); // The Task Duration format must be specified. taskTwo.TASK_DUR_FMT = (int)PSLibrary.Task.DurationFormat.Day; taskTwo.TASK_DUR = 4800; // 8 hours in duration units (minute/10) taskTwo.TASK_NAME = "Task Two"; taskTwo.TASK_START_DATE = System.DateTime.Now.AddDays(1); projectDs.Task.AddTaskRow(taskTwo); // Save the project to the database. jobId = Guid.NewGuid(); projectSvc.QueueCreateProject(jobId, projectDs, false); WaitForQueue(q, jobId); return projectRow.PROJ_UID; } } }