次の方法で共有


Security.CreateCategories メソッド

1 つ以上のセキュリティ カテゴリを作成します。

名前空間:  WebSvcSecurity
アセンブリ:  ProjectServerServices (ProjectServerServices.dll 内)

構文

'宣言
<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 _
)
'使用
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
)

パラメーター

注釈

categoriesパラメーターは、新しいカテゴリを定義するには、少なくとも 1 つのSecurityCategoriesDataSet.SecurityCategoriesRowを含める必要があります。SecurityCategoriesDataTableのSecurityCategoriesRowの複数のオブジェクトを含めることができます。Project Server には、次のそれぞれのSecurityCategoriesRowを検証します。

  • 一意のカテゴリ名および GUID

  • ユーザーとグループ (ある場合) のカテゴリ アクセス許可を持っています。

  • カテゴリ内のプロジェクト (ある場合) の存在

  • カテゴリ内のリソース (存在する場合) の存在

7 つのDataTableオブジェクトは、 SecurityCatagoriesDataSetにあります。SecurityCategoriesDataTableのみのデータを含める必要があります。データ テーブルでは、通りです。

  1. SecurityCategories各行には、カテゴリ GUID、名、および説明を指定します。セキュリティ カテゴリを作成するには、GUID と名前を (WSEC_CAT_UID および WSEC_CAT_NAME) が必要です。

  2. UserRelations   オプション。各行で、カテゴリ GUID およびリソース GUID を指定します。

  3. GroupRelations   オプション。カテゴリ GUID およびグループ GUID を指定します。

  4. UserPermissions省略可能です。各行は、カテゴリ GUID、リソース GUID、および、アクセス許可を指定し、 AllowまたはDenyのアクセス許可を設定します。

  5. GroupPermissions省略可能です。各行は、カテゴリ GUID、グループ GUID、および、アクセス許可を指定し、 AllowまたはDenyのアクセス許可を設定します。

  6. SecurityCategoryObjects   オプション。各行で、カテゴリ GUID、オブジェクトの種類 (プロジェクトまたはリソース)、およびオブジェクト GUID を指定します。

  7. SecurityCategoryRules省略可能です。各行には、カテゴリ GUID、オブジェクトの種類 (プロジェクトまたはリソース)、およびルールの種類を指定します。ルールの列挙型の概要については、 ProjectSecurityRulesおよびResourceSecurityRulesを参照してください。

有効なカテゴリの例についてを追加またはカテゴリの編集] ページで、フィールドと設定を参照してくださいするには、カテゴリの管理] ページではProject Web Appカテゴリをクリックします。

プロジェクト サーバーのアクセス許可

権限

説明

ManageSecurity

Project Server のセキュリティを管理することができます。グローバル アクセス権。

次の使用例は、 CreateCategories 、 SecurityCategoriesDataSetmultiCategoryDsで指定されている 2 つのセキュリティ カテゴリを作成するを呼び出します。

詳細については、グループに 1 つのセキュリティ カテゴリを作成する完全なサンプル アプリケーションは、PSI のセキュリティ メソッドを使用してを参照してください。サンプル アプリケーションに次のコードを追加し、 resourceGuidの値を変更できます。アプリケーションを実行した後でProject Web Appカテゴリの管理ページを開くし、クリックし、[テスト カテゴリ 1カテゴリ 2 のテスト結果を表示します。

/* 
 * 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);

関連項目

参照先

Security クラス

Security メンバー

WebSvcSecurity 名前空間

その他の技術情報

PSI のセキュリティ メソッドを使用してください。