Security.CreateProjectCategories(SecurityProjectCategoriesDataSet) Método

Definição

Cria categorias de projeto para segurança da Web.

public:
 void CreateProjectCategories(WebSvcSecurity::SecurityProjectCategoriesDataSet ^ categories);
[System.Web.Services.Protocols.SoapDocumentMethod("http://schemas.microsoft.com/office/project/server/webservices/Security/CreateProjectCategories", ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped, RequestNamespace="http://schemas.microsoft.com/office/project/server/webservices/Security/", ResponseNamespace="http://schemas.microsoft.com/office/project/server/webservices/Security/", Use=System.Web.Services.Description.SoapBindingUse.Literal)]
public void CreateProjectCategories(WebSvcSecurity.SecurityProjectCategoriesDataSet categories);
member this.CreateProjectCategories : WebSvcSecurity.SecurityProjectCategoriesDataSet -> unit
Public Sub CreateProjectCategories (categories As SecurityProjectCategoriesDataSet)

Parâmetros

Atributos

Exemplos

O exemplo usa o namespace SvcSecurity no assembly de proxy ProjectServerServices.dll. O método ConfigureClientEndPoints usa um arquivo app.config para definir a associação, o comportamento e o ponto de extremidade do WCF. Para obter informações sobre como criar um assembly proxy psi e um arquivo app.config, consulte Pré-requisitos para WCF-Based Exemplos de Código.

Observação: este exemplo pressupõe que o projeto não tenha nenhuma categoria atribuída a ele.

O exemplo chama o método ReadProjectList para obter a lista de projetos. Em seguida, ele chama CreateProjectCategories para criar o ProjectCategoriesDataset e, em seguida, grava-o no arquivo XML Categories.xml, conforme mostrado no código a seguir.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="http://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 ProjectCategoriesDataset. O Conjunto de Dados atualizado é gravado no arquivo UpdatedCategories.xml , conforme mostrado no snippet a seguir.

<?xml version="1.0" standalone="yes"?>
<SecurityProjectCategoriesDataSet xmlns="http://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 do projeto e exclui as entradas no ProjectCategoriesDataset. A seguir está 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;
        }


    }
}

Comentários

O recurso Permissões de Projeto permite que usuários ou grupos que receberam a permissão de categoria "Gerenciar Segurança Básica do Projeto" concedam aos usuários e grupos acesso aos projetos que eles possuem. Eles funcionam como categorias de segurança. Para obter mais informações, veja http://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx

Permissões do Project Server

Não padrãoVocê deve ter a ManageWorkflow permissão global ou a ChangeWorkflow permissão global. Se você tiver a permissão ChangeWorkflow , também deverá ter a permissão de OpenProject categoria e a permissão de SaveProject categoria.

Aplica-se a