Compartilhar via


Security.UpdateProjectCategories método

Modifica (adiciona ou exclui) subitems que estão associados a dados de categorias de segurança do Project.

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

Sintaxe

'Declaração
<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 _
)
'Uso
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
)

Parâmetros

Comentários

O recurso de permissões de projeto permite que usuários ou grupos que tiverem sido concedidos a permissão de categoria "Gerenciar segurança de projeto básico" para conceder acesso de usuários e grupos para os projetos que eles possuem. Eles funcionam como categorias de segurança. Para obter mais informações, consulte https://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx.

Permissões do Project Server

Permissão

Descrição

Não padrão

Você deve ter a permissão global de ManageWorkflow ou a permissão global de ChangeWorkflow . Se você tiver a permissão de ChangeWorkflow , você também deve ter a permissão de categoria de OpenProject e da permissão de categoria SaveProject .

Exemplos

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.

Dica

Este exemplo pressupõe que o projeto não tem qualquer categoria atribuída a ele.

O exemplo chama o método ReadProjectList para obter uma lista de projetos. Ele então chama CreateProjectCategories para criar o ProjectCategoriesDataset e grava o arquivo XML Categories.xml, conforme mostrado no código a seguir.

<?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>

O método UpdateProjectCategories é chamado para atualizar o ProjectCategoriesDatasete, em seguida, o conjunto de dados atualizado é gravado no arquivo UpdatedCategories.xml , conforme mostrado no código a seguir.

<?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>

O método DeleteProjectCategories usa uma matriz de GUIDs de projeto e exclui as entradas de ProjectCategoriesDataset. A seguir é o código de exemplo completo.

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;
        }
       

    }
}

Ver também

Referência

Security classe

Security membros

WebSvcSecurity namespace