この文章は 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    global void runApexClass(SandboxContext context) {
3        System.debug('Org ID: ' + context.organizationId());
4        System.debug('Sandbox ID: ' + context.sandboxId());
5        System.debug('Sandbox Name: ' + context.sandboxName());
6
7        // Insert logic here to prepare the sandbox for use.
8    }
9}

次の例では、System.Test.testSandboxPostCopyScript() メソッドを使用して実装をテストします。このメソッドは、SandboxPostCopy インターフェースを実装するクラスの 1 つの参照と、runApexClass(context) メソッドに渡すコンテキストオブジェクトの 3 つの項目の合計 4 つのパラメータを取ります。

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        Test.testSandboxPostCopyScript(
12            new PrepareMySandbox(), UserInfo.getOrganizationId(),
13                UserInfo.getOrganizationId(), UserInfo.getOrganizationName());
14
15        Test.stopTest();
16
17        // Insert assert statements here to check that the records you created above have
18        // the values you expect.
19    }
20}

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