この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

第一世代および第二世代の管理パッケージの転送アップグレード用のインストール後スクリプトのサンプル

パッケージの既存ユーザーに新規コンポーネントを自動的に割り当てます。

インストール後スクリプトを使用できるのは、第一世代管理パッケージと第二世代管理パッケージのみです。

メモ

インストール後 Apex スクリプトの作成についての詳細は、「Run Apex on Package Install/Upgrade (パッケージのインストール/アップグレード時の Apex の実行)」を参照してください。

このサンプルスクリプトでは、パッケージアップグレードに新しい Visualforce ページと、これらのページへのアクセス権を付与する新規権限セットが含まれています。スクリプトは、次のアクションを実行します。

  • パッケージの古いバージョンの Visualforce ページの ID を取得する
  • それらのページへのアクセス権を持つ権限セットを取得する
  • これらの権限セットに関連付けられたプロファイルのリストを取得する
  • それらのプロファイルに割り当てられたユーザーのリストを取得する
  • 新規パッケージ内の権限セットをそれらのユーザーに割り当てる
1global class PostInstallClass implements InstallHandler {
2    global void onInstall(InstallContext context) {
3
4        //Get the Id of the Visualforce pages 
5        List<ApexPage> pagesList = [SELECT Id FROM ApexPage WHERE NamespacePrefix =  
6            'TestPackage' AND Name = 'vfpage1'];
7
8        //Get the permission sets that have access to those pages
9        List<SetupEntityAccess> setupEntityAccessList = [SELECT Id, 
10            ParentId, SetupEntityId, SetupEntityType FROM SetupEntityAccess 
11            WHERE SetupEntityId IN :pagesList];        
12        Set<ID> PermissionSetList = new Set<ID> ();
13
14        for (SetupEntityAccess sea : setupEntityAccessList) {
15            PermissionSetList.add(sea.ParentId);
16        }
17        List<PermissionSet> PermissionSetWithProfileIdList = 
18            [SELECT id, Name, IsOwnedByProfile, Profile.Name,
19            ProfileId FROM PermissionSet WHERE IsOwnedByProfile = true 
20            AND Id IN :PermissionSetList];   
21
22        //Get the list of profiles associated with those permission sets
23        Set<ID> ProfileList = new Set<ID> ();
24        for (PermissionSet per : PermissionSetWithProfileIdList) {
25            ProfileList.add(per.ProfileId);
26        }
27
28        //Get the list of users who have those profiles assigned
29        List<User> UserList = [SELECT id FROM User where ProfileId IN :ProfileList];                
30
31        //Assign the permission set in the new package to those users
32        List<PermissionSet> PermissionSetToAssignList = [SELECT id, Name 
33            FROM PermissionSet WHERE Name='TestPermSet' AND 
34            NamespacePrefix = 'TestPackage'];
35        PermissionSet PermissionSetToAssign = PermissionSetToAssignList[0];
36        List<PermissionSetAssignment> PermissionSetAssignmentList = new List<PermissionSetAssignment>();
37        for (User us : UserList) {
38            PermissionSetAssignment psa = new PermissionSetAssignment();
39            psa.PermissionSetId = PermissionSetToAssign.id;
40            psa.AssigneeId = us.id;
41            PermissionSetAssignmentList.add(psa);
42        }
43        insert PermissionSetAssignmentList;
44    }
45}
1// Test for the post install class
2@isTest
3private class PostInstallClassTest {
4    @isTest           
5    public static void test() {
6      PostInstallClass myClass = new PostInstallClass();
7      Test.testInstall(myClass, null);
8    }
9}