Freigeben über


Project.QueuePublish-Methode

Verschiebt das Projekt aus der Datenbank Entwürfe und speichert sie in der veröffentlichten Datenbank.

Namespace:  WebSvcProject
Assembly:  ProjectServerServices (in ProjectServerServices.dll)

Syntax

'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/QueuePublish", 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 QueuePublish ( _
    jobUid As Guid, _
    projectUid As Guid, _
    fullPublish As Boolean, _
    WssURL As String _
) As ProjectRelationsDataSet
'Usage
Dim instance As Project
Dim jobUid As Guid
Dim projectUid As Guid
Dim fullPublish As Boolean
Dim WssURL As String
Dim returnValue As ProjectRelationsDataSet

returnValue = instance.QueuePublish(jobUid, _
    projectUid, fullPublish, WssURL)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Project/QueuePublish", 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 ProjectRelationsDataSet QueuePublish(
    Guid jobUid,
    Guid projectUid,
    bool fullPublish,
    string WssURL
)

Parameter

  • jobUid
    Typ: System.Guid

    Die GUID des Warteschlangenauftrags Warteschlange.

  • fullPublish
    Typ: System.Boolean

    Wenn True, entfernt alle vorherigen Daten für dieses Projekt in der veröffentlichten Datenbank vor der Veröffentlichung gespeichert.

  • WssURL
    Typ: System.String

    Die URL der SharePoint-Website für das Projekt erstellt werden soll.

Rückgabewert

Typ: WebSvcProject.ProjectRelationsDataSet
Enthält Informationen über übergeordnete Projekte, die das aktuelle Projekt als eines Teilprojekts enthalten.

Hinweise

QueuePublish ist eine asynchrone Methode, die eine Nachricht veröffentlichen auf der Project Server-Warteschlangendienst sendet.

Im folgenden sind die Optionen für den Parameter WssURL :

  • Wenn WssURL einen null-Wert ist, wird QueuePublish ein Projektwebsite für das veröffentlichte Projekt nicht erstellt.

  • Wenn WssURLString.Emptyist, erstellt QueuePublish die Standard- Projektwebsite mit dem Namen des Projekts. Wenn die Basis Projektteamwebsite https://ServerName und der Projektnamen Projektname ist, ist der Project-Startseite Projektwebsitehttps://ServerName/Project%20Name/default.aspx.

  • WssURL ist New Name, der Projektname ProjektwebsiteNeuen Namen anstelle von den Namen des Projekts.

  • WssURLsubsite/Project Nameist, muss die Unterwebsite in der SharePoint-Farm vorhanden sein. Wenn die Unterwebsite nicht vorhanden ist, gibt Project Server Fehler 16407 (WSSWebHierarchyDoesNotExist) zurück.

Project Server-Berechtigungen

Berechtigung

Beschreibung

PublishProject

Ermöglicht einem Benutzer das angegebene Projekt zu veröffentlichen. Kategorieberechtigung.

Beispiele

Im folgenden Beispiel wird ein Beispielprojekt erstellt und dann veröffentlicht wird.

Wichtige Informationen zum Ausführen dieses Codebeispiel finden Sie unter Prerequisites for Reference Code Samples.

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;

namespace Microsoft.SDK.Project.Samples.QueuePublish
{
   class Program
   {
      [STAThread]
      static void Main(string[] args)
      {
         try
         {
            #region Setup
            const string PROJECT_SERVER_URI = "https://ServerName/ProjectServerName/";
            const string PROJECT_SERVICE_PATH = "_vti_bin/psi/project.asmx";
            const string QUEUESYSTEM_SERVICE_PATH = "_vti_bin/psi/queuesystem.asmx";

            Guid jobId;

            // 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.Credentials = CredentialCache.DefaultCredentials;

            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);
            #endregion
            #region Publish Project
            // Publish the project.
            Console.WriteLine("Publishing project");
            jobId = Guid.NewGuid();
            projectSvc.QueuePublish(jobId, projectId, true, String.Empty);
            WaitForQueue(q, jobId);
            #endregion
         }
         #region Exceptions 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
      }
      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 " + jobState + " for Job ID " + jobId + ".\r\n" + xmlError));
               }
               else
               {
                  Console.WriteLine("Job State: " + jobState + " for 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;
      }
   }
}

Siehe auch

Referenz

Project Klasse

Project-Member

WebSvcProject-Namespace