Security.CreateCategories-Methode
Erstellt einen oder mehrere Sicherheitskategorien an.
Namespace: WebSvcSecurity
Assembly: ProjectServerServices (in ProjectServerServices.dll)
Syntax
'Declaration
<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 _
)
'Usage
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
)
Parameter
categories
Typ: WebSvcSecurity.SecurityCategoriesDataSetEnthält die Informationen über einen oder mehrere Sicherheitskategorien an.
Hinweise
Der Parameter categories muss mindestens ein SecurityCategoriesDataSet.SecurityCategoriesRow enthalten, die eine neue Kategorie definiert. Die SecurityCategoriesDataTable kann mehrere SecurityCategoriesRow -Objekte enthalten. Projektserver überprüft die einzelnen SecurityCategoriesRow für Folgendes:
Eindeutige Kategorienamen und GUID
Vorhandensein von Benutzern und Gruppen (falls vorhanden), die die Kategorieberechtigung haben
Vorhandensein von Projekten (falls vorhanden) in der Kategorie
Vorhandensein von Ressourcen (falls vorhanden) in der Kategorie
In einer SecurityCatagoriesDataSetsind sieben DataTable Objekte vorhanden. Nur die SecurityCategoriesDataTable muss Daten enthalten. Die Datentabellen sind in der Reihenfolge, wie folgt:
SecurityCategories Jede Zeile gibt die Kategorie-GUID, Name und Beschreibung. Nur die GUID und der Name (WSEC_CAT_UID und WSEC_CAT_NAME) sind erforderlich, um eine Sicherheitskategorie zu erstellen.
UserRelations Optional. Jede Zeile gibt die Kategorie-GUID und die Ressourcen-GUID.
GroupRelations Optional. Gibt die Kategorie-GUID und der Gruppe GUID.
UserPermissions-Objekte Optional. Jede Zeile gibt die Kategorie-GUID, die Ressourcen-GUID und die Berechtigung und Allow oder Deny für die Berechtigung festgelegt.
GroupPermissions Optional. Jede Zeile gibt die Kategorie-GUID, die Gruppe GUID und die Berechtigung und Allow oder Deny für die Berechtigung festgelegt.
SecurityCategoryObjects Optional. Jede Zeile gibt die Kategorie-GUID, die Objekttyp (Projekte oder Ressourcen) und die Objekt-GUID.
SecurityCategoryRules Optional. Jede Zeile gibt die Kategorie-GUID, Objekttyp (Projekte oder Ressourcen) und Typ der Bereichsregel an. Informationen zu den Enumerationen Regel finden Sie unter ProjectSecurityRules und ResourceSecurityRules.
Beispiele für gültige Kategorien klicken Sie auf eine Kategorie auf der Seite Kategorien verwalten in Project Web App, um die Felder und die Einstellungen auf der Seite Kategorie hinzufügen oder bearbeiten angezeigt.
Project Server-Berechtigungen
Berechtigung |
Beschreibung |
---|---|
Ermöglicht einem Benutzer das Verwalten von Project Server-Sicherheit. Die globale Berechtigung. |
Beispiele
Das folgende Beispiel ruft CreateCategories um zwei Sicherheitskategorien erstellen, die in der SecurityCategoriesDataSetmultiCategoryDsangegeben sind.
Weitere Informationen und eine komplette Beispielanwendung, mit die erstellt eine Sicherheitskategorie mit einer Gruppe finden Sie unter Mithilfe von Sicherheitsmethoden in die PSI. Sie können die Beispielanwendung aus den folgenden Code hinzufügen und ändern Sie den Wert des resourceGuid. Öffnen Sie nach der Ausführung der Anwendung die Seite Kategorien verwalten in Project Web App, und klicken Sie dann auf Test Kategorie 1 und Test Kategorie 2, um die Ergebnisse anzuzeigen.
/*
* 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);