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
categories
Tipo: WebSvcSecurity.SecurityCategoriesDataSetContiene la información acerca de una o varias categorías de seguridad.
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:
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.
UserRelations Opcional. Cada fila especifica el identificador GUID de categoría y el GUID de recurso.
GroupRelations Opcional. Especifica el identificador GUID de categoría y el GUID de grupo.
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.
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.
SecurityCategoryObjects Opcional. Cada fila especifica el identificador GUID de categoría, el tipo de objeto (proyecto o recurso) y el objeto GUID.
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 |
---|---|
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
Espacio de nombres WebSvcSecurity