Project::QueueRenameProject method
Office 2013 and later
Renames the specified project.
Namespace: WebSvcProject
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Parameters
- jobUid
- Type: System.Guid
The GUID of the queue job.
- sessionUid
- Type: System.Guid
The GUID of the session in which the queue job is submitted.
- projectUid
- Type: System.Guid
The GUID of the project.
- name
- Type: System.String
The new project name.
The following example creates a sample project, checks it out, renames it, and then checks it back in.
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.Threading; using System.Web.Services.Protocols; using PSLibrary = Microsoft.Office.Project.Server.Library; [assembly: CLSCompliant(true)] namespace Microsoft.SDK.Project.Samples.CheckOutProject { 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 jobId; Guid sessionId = Guid.NewGuid(); const string SESSION_DESCRIPTION = "Check out sample utility"; // Set up the web service objects. SvcProject.Project projectSvc = new SvcProject.Project(); 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"); Guid projectId = CreateSampleProject(projectSvc, q); Console.WriteLine("Created Project UID: " + projectId.ToString()); #endregion #region Check out, rename, and check in // Check out the project. // The session ID is used later to check in the project. Console.WriteLine("Checking out sample project"); projectSvc.CheckOutProject(projectId, sessionId, SESSION_DESCRIPTION); // Rename the project. Console.WriteLine("Renaming the project"); jobId = Guid.NewGuid(); projectSvc.QueueRenameProject(jobId, sessionId, projectId, "My Renamed Project at " + DateTime.Now.ToShortTimeString().Replace(":", "")); WaitForQueue(q, jobId); // Check in the project. Console.WriteLine("Checking in the project"); jobId = Guid.NewGuid(); projectSvc.QueueCheckInProject(jobId, projectId, false, sessionId, SESSION_DESCRIPTION); WaitForQueue(q, jobId); #endregion } #region Exception handling 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); } #endregion finally { Console.ResetColor(); Console.WriteLine("\r\n\r\nPress any key..."); Console.ReadKey(); } } static private void WaitForQueue(SvcQueueSystem.QueueSystem q, Guid jobId) { SvcQueueSystem.JobState jobState; const int QUEUE_WAIT_TIME = 2; // two seconds 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. Thread.Sleep(wait * 1000); // 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 failed \"" + jobState + "\" Job ID: " + jobId + ".\r\n" + xmlError)); } else { Console.WriteLine("Job State: " + jobState + " Job ID: " + jobId); Thread.Sleep(QUEUE_WAIT_TIME * 1000); } } } while (!jobDone); } 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; } } }
Show: