Freigeben über


Security.UpdateProjectCategories-Methode

Ändert (fügt hinzu oder löscht) Unterelemente, die Kategorien von Projektdaten Sicherheit zugeordnet sind.

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

Syntax

'Declaration
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/UpdateProjectCategories", RequestNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    ResponseNamespace := "https://schemas.microsoft.com/office/project/server/webservices/Security/",  _
    Use := SoapBindingUse.Literal, ParameterStyle := SoapParameterStyle.Wrapped)> _
Public Sub UpdateProjectCategories ( _
    categories As SecurityProjectCategoriesDataSet _
)
'Usage
Dim instance As Security
Dim categories As SecurityProjectCategoriesDataSet

instance.UpdateProjectCategories(categories)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/UpdateProjectCategories", RequestNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    ResponseNamespace = "https://schemas.microsoft.com/office/project/server/webservices/Security/", 
    Use = SoapBindingUse.Literal, ParameterStyle = SoapParameterStyle.Wrapped)]
public void UpdateProjectCategories(
    SecurityProjectCategoriesDataSet categories
)

Parameter

Hinweise

Das Feature Projektberechtigungen ermöglicht Benutzern oder Gruppen, bei die erteilt wurden die Kategorieberechtigung "Grundlegende Projektsicherheit verwalten" Benutzer und Gruppen Zugriff auf die Projekte zu erteilen, die sie besitzen. Dies funktioniert wie Sicherheitskategorien. Weitere Informationen finden Sie unter https://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx.

Project Server-Berechtigungen

Berechtigung

Beschreibung

Nicht standardmäßige

Sie müssen die globale Berechtigung ManageWorkflow oder die globale Berechtigung ChangeWorkflow verfügen. Wenn Sie die Berechtigung ChangeWorkflow verfügen, benötigen Sie auch die Kategorieberechtigung OpenProject und die Kategorieberechtigung SaveProject .

Beispiele

The example uses the SvcSecurity namespace in the ProjectServerServices.dll proxy assembly. The ConfigureClientEndPoints method uses an app.config file for setting the WCF binding, behavior, and endpoint. For information about creating a PSI proxy assembly and an app.config file, see Prerequisites for WCF-Based Code Samples.

Hinweis

In diesem Beispiel wird davon ausgegangen, dass das Projekt keine Kategorie zugewiesen ist.

Das Beispiel ruft die ReadProjectList -Methode zum Abrufen der Liste der Projekte. Anschließend ruft CreateProjectCategories zum Erstellen der ProjectCategoriesDataset und schreibt sie in der XML-Datei Categories.xml, wie im folgenden Code dargestellt.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="https://schemas.microsoft.com/office/project/server/
webservices/SecurityProjectCategoriesDataSet/">
  <ProjectCategories>
    <WSEC_CAT_UID>
    321f7584-1f8b-4065-a432-a59b9412d8ba</WSEC_CAT_UID>
    <PROJ_UID>ff9c1198-fb7b-4e9d-88a9-1415d46a3443</PROJ_UID>
  </ProjectCategories>
</SecurityProjectCategoriesDataSet>

Die UpdateProjectCategories -Methode aufgerufen, um die ProjectCategoriesDatasetzu aktualisieren, und klicken Sie dann das aktualisierte DataSet bezieht sich auf die Datei UpdatedCategories.xml wie im folgenden Code dargestellt.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="https://schemas.microsoft.com/office/project/server/
webservices/SecurityProjectCategoriesDataSet/">
  <ProjectCategories>
    <WSEC_CAT_UID>
     8ce0a52b-6218-4670-bf53-8e8df21af590</WSEC_CAT_UID>
    <PROJ_UID>aed0e69b-4470-4ddb-b063-184a9c06c9de</PROJ_UID>
  </ProjectCategories>
</SecurityProjectCategoriesDataSet>

Die DeleteProjectCategories -Methode akzeptiert ein Array von Project GUIDs und löscht die Einträge in der ProjectCategoriesDataset. Es folgt der vollständige Beispielcode.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.ServiceModel;

namespace Microsoft.SDK.Project.Samples.Security
{
    class Security
    {
        private const string ENDPOINT_S = "basicHttp_Security";
        private const string ENDPOINT_P = "basicHttp_Project";
        private const string OUTPUT_FILES = @"C:\Projects\Samples\Output\";

        private static string outFilePathCategories;
        private static string outFilePathUpdatedCategories;

        private static SvcSecurity.SecurityClient securityClient;
        private static SvcProject.ProjectClient projectClient;

        static void Main(string[] args)
        {
            // If 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.
            outFilePathCategories = OUTPUT_FILES + "Categories.xml";
            outFilePathUpdatedCategories = OUTPUT_FILES + "UpdatedCategories.xml";

            // Configure the endpoints.
            bool configResult = false;
            configResult = ConfigClientEndpoints(ENDPOINT_P);
            configResult = ConfigClientEndpoints(ENDPOINT_S);

            try
            {
                // Create a project DataSet.
                SvcProject.ProjectDataSet pDS = new SvcProject.ProjectDataSet();
                pDS = projectClient.ReadProjectList();

                // Create a project category.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet1 = 
                    new SvcSecurity.SecurityProjectCategoriesDataSet();
                SvcSecurity.SecurityProjectCategoriesDataSet.ProjectCategoriesRow row1 = 
                    projectCategoryDataSet1.ProjectCategories.NewProjectCategoriesRow();
                row1.WSEC_CAT_UID = Guid.NewGuid();
                row1.PROJ_UID = pDS.Project[2].PROJ_UID;
                projectCategoryDataSet1.ProjectCategories.AddProjectCategoriesRow(row1);
                securityClient.CreateProjectCategories(projectCategoryDataSet1);

                // Read project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet = 
                    securityClient.ReadProjectCategory(row1.PROJ_UID);

                // Write the project category DataSet to an XML file.
                Console.WriteLine("\nWriting the ProjectCategoryDataSet to an XML file...");
                projectCategoryDataSet.WriteXml(outFilePathCategories);
                Console.WriteLine("\nSee XML output of ProjectCategoryDataSet at {0}",
                outFilePathCategories);
                Console.Write("\nPress any key to continue: ");
                Console.ReadKey(true);

                // Update project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet projectCategoryDataSet3 = 
                    new SvcSecurity.SecurityProjectCategoriesDataSet();
                SvcSecurity.SecurityProjectCategoriesDataSet.ProjectCategoriesRow row2 = 
                    projectCategoryDataSet3.ProjectCategories.NewProjectCategoriesRow();
                row2.WSEC_CAT_UID = Guid.NewGuid();
                row2.PROJ_UID = pDS.Project[3].PROJ_UID;
                projectCategoryDataSet3.ProjectCategories.AddProjectCategoriesRow(row2);
                securityClient.UpdateProjectCategories(projectCategoryDataSet3);

                // Read project category DataSet.
                SvcSecurity.SecurityProjectCategoriesDataSet updatedPDS = 
                    securityClient.ReadProjectCategory(row2.PROJ_UID);

                // Write the updated project category DataSet to an XML file.
                Console.WriteLine("\nWriting the ProjectCategoryDataSet to an XML file...");
                updatedPDS.WriteXml(outFilePathUpdatedCategories);
                Console.WriteLine("\nSee XML output of ProjectCategoryDataSet at {0}",
                outFilePathUpdatedCategories);
                Console.Write("\nPress any key to continue: ");
                Console.ReadKey(true);

                // Delete project categories.
                Guid[] guidarray = new Guid[2];
                guidarray[0] = row1.PROJ_UID;
                guidarray[1] = row2.PROJ_UID;
                securityClient.DeleteProjectCategories(guidarray);
            }
            catch (CommunicationException e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(
                    "\n***System.ServiceModel.CommunicationException:");
                Console.WriteLine(e.ToString());
                Console.ResetColor();
            }
            
        }

        // Configure the PSI client endpoints.
        public static bool ConfigClientEndpoints(string endpt)
        {
            bool result = true;

            switch (endpt)
            {

                case ENDPOINT_P:
                    projectClient = new SvcProject.ProjectClient(endpt);
                    break;
                case ENDPOINT_S:
                    securityClient = new SvcSecurity.SecurityClient(endpt);
                    break;
                default:
                    result = false;
                    Console.WriteLine("Invalid endpoint: {0}", endpt);
                    break;
            }
            return result;
        }
       

    }
}

Siehe auch

Referenz

Security Klasse

Security-Member

WebSvcSecurity-Namespace