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

インストール後スクリプトはどのように機能しますか?

インストール後スクリプトは InstallHandler インターフェースを実装する Apex クラスです。このインターフェースには、onInstall という、インストール時に実行されるアクションを指定する単一のメソッドがあります。
1global interface InstallHandler {
2  void onInstall(InstallContext context)
3}
onInstall メソッドは、次の情報を提供するコンテキストオブジェクトを引数として取ります。
  • インストールが実施される組織の組織 ID。
  • インストールを開始したユーザのユーザ ID。
  • 以前にインストールされたパッケージのバージョン番号 (Version クラスを使用して指定)。これは、1.2.0 のように、常に 3 ��の番号で構成されています。
  • インストールがアップグレードかどうか。
  • インストールがプッシュかどうか。
コンテキスト引数は、データ型が InstallContext インターフェースであるオブジェクトです。このインターフェースは、システムによって自動的に実装されます。InstallContext インターフェースの次の定義では、コンテキスト引数にコールできるメソッドを示しています。
1global interface InstallContext { 
2  ID organizationId();
3  ID installerId();
4  Boolean isUpgrade();
5  Boolean isPush()
6  Version previousVersion();
7}

バージョンメソッドとクラス

System.Version クラスのメソッドを使用して、管理パッケージのバージョンの取得とパッケージバージョンの比較を行えます。パッケージバージョンは、パッケージでアップロードされる一連のコンポーネントを特定する番号です。バージョン番号の形式は majorNumber.minorNumber.patchNumber (例: 2.1.3) です。メジャー番号とマイナー番号は、パッチ以外のリリースごとに指定した値に増えます。メジャー番号とマイナー番号をあげる場合は、必ずパッチ番号 0 を使用します。

次に、System.Version クラスのインスタンスメソッドを示します。

方法 引数 戻り値 説明
compareTo System.Version version Integer 現在のバージョンと指定されたバージョンを比較し、次のいずれかの値を返します。
  • 0。現在のパッケージバージョンが指定されたパッケージバージョンと同じである場合。
  • 0 より大きい整数値。現在のパッケージバージョンが指定されたパッケージバージョンより大きい場合。
  • 0 より小さい整数値。現在のパッケージバージョンが指定されたパッケージバージョンより小さい場合。

2 つの番号で構成されたバージョンが 3 つの番号で構成されたバージョンと比較される場合、パッチ番号は無視されます。したがって、比較は、メジャー番号とマイナー番号のみに基づいて行われます。

major Integer コール元のコードのメジャーパッケージバージョンを返します。
minor Integer コール元のコードのマイナーパッケージバージョンを返します。
patch Integer コール元のコードのパッチパッケージバージョンを返します。パッチバージョンがない場合は、null を返します。
System クラスには、条件ロジックの指定に使用できる 2 つのメソッドが含まれるため、異なるパッケージバージョンは異なる動作をさせることができます。
  • System.requestVersion: パッケージのメジャーバージョン番号とマイナーバージョン番号の 2 つの番号で構成されるバージョンを返します。​このメソッドによって、コール元のコードがパッケージを参照するときに用いる、パッケージのインストール済みインスタンスのバージョンを特定できます。コール元のコードが保持するバージョンに基づいて、パッケージコードの動作をカスタマイズできます。
  • System.runAs(System.Version): 現在のパッケージバージョンを、引数で指定されたパッケージバージョンに変更します。

登録者が複数のバージョンのパッケージをインストールしており、パッケージ内の Apex クラスまたはトリガを参照するコードを記述する場合、参照しているバージョンを選択する必要があります。参照を行うコール元の Apex コードのバージョン設定に応じて、パッケージの Apex コードの異なるコードパスを実行できます。コール元のコードのパッケージバージョン設定は、パッケージコードで System.requestVersion メソッドをコールすることによって判断できます。