Compartir a través de


del método Security.CreateCategories

Crea una o varias categorías de seguridad.

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

Sintaxis

'Declaración
<SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateCategories", 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 CreateCategories ( _
    categories As SecurityCategoriesDataSet _
)
'Uso
Dim instance As Security
Dim categories As SecurityCategoriesDataSet

instance.CreateCategories(categories)
[SoapDocumentMethodAttribute("https://schemas.microsoft.com/office/project/server/webservices/Security/CreateCategories", 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 CreateCategories(
    SecurityCategoriesDataSet categories
)

Parámetros

Comentarios

El parámetro categories debe contener al menos un SecurityCategoriesDataSet.SecurityCategoriesRow que define una nueva categoría. La SecurityCategoriesDataTable puede contener varios objetos SecurityCategoriesRow . Project Server valida cada SecurityCategoriesRow para lo siguiente:

  • Nombre de categoría exclusivo y GUID

  • Existencia de usuarios y grupos (si hay alguno) que tienen el permiso de categoría

  • Existencia de proyectos (si hay alguno) en la categoría

  • Existencia de recursos (si hay alguno) en la categoría

Hay siete objetos DataTable en un SecurityCatagoriesDataSet. El SecurityCategoriesDataTable debe contener datos. Las tablas de datos aparecen en orden, como sigue:

  1. SecurityCategories   Cada fila especifica el identificador GUID de categoría, el nombre y la descripción. El GUID y el nombre (WSEC_CAT_UID y WSEC_CAT_NAME) son necesarios para crear una categoría de seguridad.

  2. UserRelations   Opcional. Cada fila especifica el identificador GUID de categoría y el GUID de recurso.

  3. GroupRelations   Opcional. Especifica el identificador GUID de categoría y el GUID de grupo.

  4. Objetos UserPermissions   Opcional. Cada fila especifica el permiso, el GUID de recurso y el identificador GUID de categoría y establece Allow o Deny para el permiso.

  5. GroupPermissions   Opcional. Cada fila especifica el permiso, el GUID de grupo y el identificador GUID de categoría y establece Allow o Deny para el permiso.

  6. SecurityCategoryObjects   Opcional. Cada fila especifica el identificador GUID de categoría, el tipo de objeto (proyecto o recurso) y el objeto GUID.

  7. SecurityCategoryRules   Opcional. Cada fila especifica el identificador GUID de categoría, tipo de objeto (proyecto o recurso) y tipo de regla. Para obtener información acerca de las enumeraciones de regla, vea ProjectSecurityRules y ResourceSecurityRules.

Para obtener ejemplos de categorías válidas, haga clic en una categoría en la página Administrar categorías en Project Web App, para ver la configuración y los campos en la página Agregar o editar categoría.

Permisos de Project Server

Permiso

Descripción

ManageSecurity

Permite que un usuario administrar la seguridad de Project Server. Permiso global.

Ejemplos

El ejemplo siguiente llama a CreateCategories para crear dos categorías de seguridad que se especifican en el SecurityCategoriesDataSetmultiCategoryDs.

Para obtener información adicional y una aplicación de ejemplo completo que crea una categoría de seguridad con un grupo, vea Uso de métodos de seguridad en la interfaz PSI. Puede agregar el código siguiente a la aplicación de ejemplo y modifique el valor de resourceGuid. Después de ejecutar la aplicación, abra la página Administrar categorías en Project Web App y, a continuación, haga clic en prueba categorías 1 y 2 de la categoría de prueba para ver los resultados.

/* 
 * Add this code to the sample code in the article
 * Using Security Methods in the PSI.
 */

// Set the GUID for an existing resource.
Guid resourceUid = new Guid("a1fcbf91-e91d-44e2-a4a7-3b4b698cb984");

Guid category1Guid = Guid.NewGuid();
Guid category2Guid = Guid.NewGuid();

SvcSecurity.SecurityCategoriesDataSet multiCategoryDs =
   new SvcSecurity.SecurityCategoriesDataSet();
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoriesRow category1Row =
   multiCategoryDs.SecurityCategories.NewSecurityCategoriesRow();
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoriesRow category2Row =
   multiCategoryDs.SecurityCategories.NewSecurityCategoriesRow();

category1Row.WSEC_CAT_UID = category1Guid;
category1Row.WSEC_CAT_NAME = "Test Category 1";
category1Row.WSEC_CAT_DESC = "This is test category 1.";
multiCategoryDs.SecurityCategories.AddSecurityCategoriesRow(category1Row);

category2Row.WSEC_CAT_UID = category2Guid;
category2Row.WSEC_CAT_NAME = "Test Category 2";
category2Row.WSEC_CAT_DESC = "This is test category 2.";
multiCategoryDs.SecurityCategories.AddSecurityCategoriesRow(category2Row);

// (Optional) Add a user to category 1.
SvcSecurity.SecurityCategoriesDataSet.UserRelationsRow userRelationsRow =
   multiCategoryDs.UserRelations.NewUserRelationsRow();
userRelationsRow.WSEC_CAT_UID = category1Guid;
// Change the following GUID to a resource that is on your system.
Guid existingResUid = new Guid("88979803-2230-48b4-b23b-4af0e4a40392");
userRelationsRow.RES_UID = existingResUid;
multiCategoryDs.UserRelations.AddUserRelationsRow(userRelationsRow);

// (Optional) Specify the permissions for the user on category 1.
SvcSecurity.SecurityCategoriesDataSet.UserPermissionsRow userPermRow =
   multiCategoryDs.UserPermissions.NewUserPermissionsRow();
userPermRow.WSEC_CAT_UID = category1Guid;
userPermRow.RES_UID = existingResUid;
userPermRow.WSEC_ALLOW = true;

// For example, add the "Open Project" permission.
userPermRow.WSEC_FEA_ACT_UID = PSLibrary.PSSecurityCategoryPermission.OpenProject;
multiCategoryDs.UserPermissions.AddUserPermissionsRow(userPermRow);

// (Optional) Add an object (project or resource) to category 2.
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryObjectsRow category2ObjectRow =
   multiCategoryDs.SecurityCategoryObjects.NewSecurityCategoryObjectsRow();
category2ObjectRow.WSEC_CAT_UID = category2Guid;
category2ObjectRow.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;

// Add an existing project to category 2. 
// Change the following GUID to a project that is on your system.
category2ObjectRow.WSEC_OBJ_UID = new Guid("BC323C21-B7E4-4631-AF99-C44E5C52BA4E");
multiCategoryDs.SecurityCategoryObjects.AddSecurityCategoryObjectsRow(category2ObjectRow);

// (Optional) Set some dynamic rules on category 2.
SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow1 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow1.WSEC_CAT_UID = category2Guid;
category2RulesRow1.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow1.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.OwnerAtSameRbsNode;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow1);

SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow2 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow2.WSEC_CAT_UID = category2Guid;
category2RulesRow2.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow2.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.AllCurrentAndFuture;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow2);

SvcSecurity.SecurityCategoriesDataSet.SecurityCategoryRulesRow category2RulesRow3 =
   multiCategoryDs.SecurityCategoryRules.NewSecurityCategoryRulesRow();
category2RulesRow3.WSEC_CAT_UID = category2Guid;
category2RulesRow3.WSEC_OBJ_TYPE_UID = PSLibrary.PSSecurityObjectType.Project;
category2RulesRow3.WSEC_OBJ_RULE_TYPE = (int)PSLibrary.ProjectSecurityRules.ManagedByUser;
multiCategoryDs.SecurityCategoryRules.AddSecurityCategoryRulesRow(category2RulesRow3);

security.CreateCategories(multiCategoryDs);

Vea también

Referencia

clase Security

Miembros Security

Espacio de nombres WebSvcSecurity

Otros recursos

Uso de métodos de seguridad en la interfaz PSI