Compartir a través de


del método Security.UpdateProjectCategories

Modifica (agrega o elimina) subelementos que están asociados con los datos de categorías de seguridad de Project.

Espacio de nombres:  WebSvcSecurity
Ensamblado:  ProjectServerServices (en ProjectServerServices.dll)

Sintaxis

'Declaración
<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

Comentarios

La característica de permisos del proyecto permite a los usuarios o grupos que se han concedido el permiso de categoría "Administrar la seguridad de proyecto básico" para conceder acceso de usuarios y grupos a los proyectos que son propietarios. Funcionan como las categorías de seguridad. Para obtener más información, consulte https://blogs.msdn.com/b/project/archive/2010/03/04/project-2010-project-permissions.aspx.

Permisos de Project Server

Permiso

Descripción

No estándar

Debe tener el permiso global ManageWorkflow o el permiso global ChangeWorkflow . Si tiene el permiso ChangeWorkflow , también debe tener el permiso de categoría de OpenProject y el permiso de categoría de SaveProject .

Ejemplos

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.

Nota

En este ejemplo se supone que el proyecto no tiene ninguna categoría asignada a ella.

En el ejemplo se llama al método de ReadProjectList para obtener la lista de proyectos. A continuación, se llama a CreateProjectCategories para crear la ProjectCategoriesDataset y se escribe en el Categories.xmldel archivo XML, como se muestra en el siguiente código.

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

Se llama al método UpdateProjectCategories para actualizar la ProjectCategoriesDatasety, a continuación, se escribe el conjunto de datos actualizado en el archivo UpdatedCategories.xml , como se muestra en el siguiente código.

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

El método DeleteProjectCategories toma una matriz de GUID de proyecto y elimina las entradas de la ProjectCategoriesDataset. A continuación se muestra el código de ejemplo 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;
        }
       

    }
}

Vea también

Referencia

clase Security

Miembros Security

Espacio de nombres WebSvcSecurity