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

SandboxPostCopy インターフェース

Sandbox 環境をビジネス対応にするために、データ操作またはビジネスロジックタスクを自動化します。このインターフェースを拡張してコピー後タスクを実行するメソッドを追加してから、Sandbox の作成時にクラスを指定します。

名前空間

System

使用方法

このインターフェースを実装する Apex クラスを作成します。Sandbox 作成中にクラスを指定します。Sandbox が作成されたら、自動化プロセスユーザーの権限を使用してクラスの runApexClass(context) メソッドが実行されます。

SandboxPostCopy Apex クラスは、サンドボックスコピーの終了時に、組織内で非表示の特別な自動化プロセスユーザーを使用して実行されます。このユーザーは、すべてのオブジェクトおよび機能へのアクセス権を持ちません。したがって、Apex スクリプトは、すべてのオブジェクトおよび機能にアクセスできません。スクリプトが失敗した場合は、適���な権限を持つユーザーとしてサンドボックスを有効化した後にスクリプトを実行します。

重要

SandboxPostCopy のメソッド

SandboxPostCopy のメソッドは次のとおりです。

runApexClass(context)

新規 Sandbox を使用する準備を整えるアクションを実行します。たとえば、ユーザーを作成し、レコードでサニタイズコードを実行し、他の設定タスクを実行するロジックをこのメソッドに追加します。

署名

public void runApexClass(System.SandboxContext context)

パラメーター

context
型: System.SandboxContext
Sandbox の組��� ID、Sandbox ID、および Sandbox 名。これらの値を操作するには、コードで context.organizationId()context.sandboxId()、および context.sandboxName() を参照します。

戻り値

型: void

SandboxPostCopy の実装例

SandboxPostCopy インターフェースの簡単な実装とその実装のテストの例を次に示します。SandboxPostCopy 実装をテストするには、System.Test.testSandboxPostCopyScript() メソッドを使用します。

SandboxPostCopy Apex クラスは、サンドボックスコピーの終了時に、組織内で非表示の特別な自動化プロセスユーザーを使用して実行されます。このユーザーは、すべてのオブジェクトおよび機能へのアクセス権を持ちません。したがって、Apex スクリプトは、すべてのオブジェクトおよび機能にアクセスできません。スクリプトが失敗した場合は、適切な権限を持つユーザーとしてサンドボックスを有効化した後にスクリプトを実行します。

重要

この例では、System.SandboxPostCopy インターフェースが実装されます。

1global class PrepareMySandbox implements SandboxPostCopy {
2 
3    global PrepareMySandbox() {
4        //Implementations of SandboxPostCopy must have a no-arg constructor.
5        //This constructor is used during the sandbox copy process.
6        //You can also implement constructors with arguments, but be aware that
7        //they won’t be used by the sandbox copy process (unless as part of the
8        //no-arg constructor).
9        this(some_args);
10    }
11 
12    global PrepareMySandbox(String some_args) {
13        //Logic for constructor.
14    }
15    
16    global void runApexClass(SandboxContext context) {
17        System.debug('Org ID: ' + context.organizationId());
18        System.debug('Sandbox ID: ' + context.sandboxId());
19        System.debug('Sandbox Name: ' + context.sandboxName());
20 
21        // Insert logic here to prepare the sandbox for use.
22    }
23}

次の例では、System.Test.testSandboxPostCopyScript() メソッドを使用して実装をテストします。このメソッドは、SandboxPostCopy インターフェースを実装するクラスの 1 つの参照と、runApexClass(context) メソッドに渡すコンテキストオブジェクトの 3 つの項目の合計 4 つのパラメーターを取ります。メソッドのオーバーロードでは、テストを自動化プロセスユーザーとして実行する必要があるかどうかを示す Boolean のパラメーターが必要に応じて使用されます。

1@isTest
2class PrepareMySandboxTest {
3
4    @isTest
5    static void testMySandboxPrep() {
6        // Insert logic here to create records of the objects that the class you’re testing
7        // manipulates.
8
9        Test.startTest();
10
11//Execute test script with RunAsAutoProcUser set to true
12        Test.testSandboxPostCopyScript(
13            new PrepareMySandbox(), UserInfo.getOrganizationId(),
14                UserInfo.getOrganizationId(), UserInfo.getOrganizationName(), true);
15
16        Test.stopTest();
17
18        // Insert assert statements here to check that the records you created above have
19        // the values you expect.
20    }
21}

テストについての詳細は、「Apex のテスト」を参照してください。