Security.CreateProjectCategories(SecurityProjectCategoriesDataSet) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- categories
- SecurityProjectCategoriesDataSet
- 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ão | Você 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. |