Security.CreateProjectCategories método
Cria categorias de projeto para segurança de web.
Namespace: WebSvcSecurity
Assembly: ProjectServerServices (em ProjectServerServices.dll)
Sintaxe
'Declaração
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateProjectCategories", 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 CreateProjectCategories ( _
categories As SecurityProjectCategoriesDataSet _
)
'Uso
Dim instance As Security
Dim categories As SecurityProjectCategoriesDataSet
instance.CreateProjectCategories(categories)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateProjectCategories", 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 CreateProjectCategories(
SecurityProjectCategoriesDataSet categories
)
Parâmetros
- categories
Tipo: WebSvcSecurity.SecurityProjectCategoriesDataSet
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. Ela chama CreateProjectCategories para criar o ProjectCategoriesDataset e grava-o para 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 ProjectCategoriesDataset. O conjunto de dados atualizado é gravado no arquivo UpdatedCategories.xml , conforme mostrado no seguinte trecho.
<?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;
}
}
}