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

デフォルトのリモートオブジェクト操作の上書き

デフォルトのリモートオブジェクト操作を独自の Apex コードで上書きして、リモートオブジェクトの動作を拡張またはカスタマイズできます。

リモートオブジェクトの基本的な操作 (create()retrieve()update()del()) では、通常の Visualforce ページの標準コントローラに相当するリモートオブジェクトコントローラが自動的に使用されます。リモートオブジェクト操作を上書きして、このコントローラの組み込みの動作を拡張したり、置き換えたりすることができます。リモートオブジェクト操作の上書きは、Apex で記述され、ページのリモートオブジェクト定義に追加することで有効になります。

upsert() 操作は上書きできません。これは大変便利な関数で、create() または update() によって自動的に代行されます。これらのメソッドのいずれかを上書きすると、上書きされたメソッドが適宜 upsert() によって自動的に使用されます。

メモ

メソッド上書きのためのリモートオブジェクトアクセス定義

リモートオブジェクト操作をリモートメソッドで上書きするには、操作の属性を、デフォルトメソッドの代わりになるメソッドに設定します。たとえば、取引先責任者に対する create() 操作をリモートメソッドで上書きする方��は次のようになります。
1<apex:remoteObjectModel name="Contact" fields="FirstName,LastName,Phone" 
2    create="{!$RemoteAction.RemoteObjectContactOverride.create}"/>

この属性は、Visualforce 式を取り、@RemoteAction メソッドを参照して組み込みの create() 操作の上書きとして使用します。この式は、$RemoteAction.OverrideClassName.overrideMethodName という形式を取ります。この場合、$RemoteAction グローバルが、JavaScript Remoting で行うときと同様に組織の名前空間を処理します。@RemoteAction メソッドが含まれるクラスは、ページのコントローラまたはページのコントローラ拡張として設定されている必要があります。

この宣言により、ページの JavaScript コードが、取引先責任者リモートオブジェクトに対して create() 関数をコールすると常に、リモートオブジェクトコントローラが使用されるのではなく、リモートメソッドがコールされます。

リモートオブジェクト上書きメソッド

リモートオブジェクト上書きメソッドは、Apex クラスの @RemoteAction メソッドとして記述され、ページにコントローラまたはコントローラ拡張として追加されます。

上書きメソッドのメソッド署名は次のようになります。
1@RemoteAction
2public static Map<String,Object> methodName(String type, Map<String,Object> fields)
type パラメータは、動作の対象となる S オブジェクトの種別であり、fields 対応付けは、上書きされるメソッドがコールされる前にリモートオブジェクトに設定された値が含まれるコレクションです。

戻り値は、リモートオブジェクト操作の結果を表す対応付けです。この対応付けには通常、コールの結果、状況、およびカスタムメソッドの一部として提供するカスタムデータが含まれます。

有効な対応付けの戻り値を作成する最も簡単な方法は、RemoteObjectController を使用することです。これは、リモートオブジェクトの組み込み機能を提供する標準コントローラで、メソッドのパラメータを渡すことでデータ操作言語 (DML) 操作を代行させることができます。たとえば、組み込みバージョンの create() と同じ動作をする create() メソッドは次のようになります。
1@RemoteAction
2public static Map<String, Object> create(String type, Map<String, Object> fields) {
3    Map<String, Object> result = RemoteObjectController.create(type, fields);
4    return result;
5}
このメソッドは、実質的には操作を行いません。つまり、このメソッドは組み込みバージョンと完全に同じ動作をします。上書きメソッドは、ログ出力、追加の DML、その他のメソッドコールなど、必要な追加 Apex を実行できます。リモートオブジェクト上書きメソッドとそれを使用するページの詳細な例は、「リモートオブジェクトのリモートメソッド上書きの使用例」を参照してください。

RemoteObjectController 標準コントローラは、リモートオブジェクトの共有ルール、所有権、およびその他のセキュリティ上の懸念事項を自動的に処理します。対照的に、カスタムコントローラまたはコントローラ拡張のメソッドは、デフォルトでシステムモードで動作するため、組織のすべてのデータへのフルアクセスが許可されます。この動作は、カスタムコントローラまたはコントローラ拡張を使用する標準の Visualforce ページの動作と同じです。コントローラコードを記述するときには、アクセス権とその他の懸念事項を自分で処理する必要があります。

ベストプラクティスとして、コントローラまたはコントローラ拡張クラスに with sharing キーワードを使用し、できるだけ RemoteObjectController に代行させます。

重要