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

キャンバスアプリケーションの動作の制御

署名付き要求のデフォルトの動作を変更するには、Canvas.CanvasLifecycleHandler.onRender() を実装する Apex クラスを指定し、このクラスをキャンバスアプリケーションに関連付ける必要があります。onRender() 実装では、カスタムコードを使用してアプリケーションの動作を制御できます。

Salesforce は、アプリケーションが表示される直前に onRender() の実装をコールします。現在のコンテキスト情報は、Canvas.RenderContext パラメータでこのメソッドに渡されます。

onRender() 実装では、次のコンテキスト情報を取得できます。
  • アプリケーションコンテキストデータ (キャンバスアプリケーション名、URL、バージョン、名前空間など)。
  • 環境コンテキストデータ (表示場所、下位の表示場所、オブジェクト項目名、カスタムパラメータ)。
次のコンテキスト情報を設定できます。
  • キャンバスアプリケーション URL のアプリケーションドメイン以降の部分。
  • キャンバスアプリケーションがオブジェクトページに表示される場合に SalesforceRecord コンテキストデータを返すオブジェクト項目のリスト。<apex:canvasApp> コンポーネントを使用してキャンバスアプリケーションが Visualforce ページに表示され、その Visualforce ページがオブジェクトに関連付けられている場合などにキャンバスアプリケーションがオブジェクトページに表示されます。
  • キャンバスアプリケーションに渡されるカスタムパラメータ。
Canvas.CanvasRenderException を発生させることで、Salesforce のユーザに対してエラーメッセージを表示することもできます。
次の処理を行う onRender() 実装の例を以下に示します。
  • アプリケーションのバージョン情報をチェックし、サポートされていないバージョンの場合は CanvasRenderException を発生させます。
  • 「/alternatePath」を元の URL のドメイン部分に追加して、現在のキャンバスアプリケーション URL を上書きします。
  • キャンバスアプリケーションが取引先ページに表示されることを予測して、Name、BillingAddress、および YearStarted を含めるようにオブジェクト項目のリストを設定します。
  • 新しい「newCustomParam」パラメータを追加して、カスタムパラメータのセットを上書きします。現在のパラメータのセットは、最初にローカルで取得されてキャッシュされます。setParametersAsJSON() をコールするときに現在のカスタムパラメータのセットが失われないように、新しいパラメータがキャッシュリストに追加されます。
1swfobject.registerObject("clippy.codeblock-0", "9");public void onRender(Canvas.RenderContext renderContext) {
2
3    // Get the Application and Environment context from the RenderContext
4    Canvas.ApplicationContext app = renderContext.getApplicationContext();
5    Canvas.EnvironmentContext env = renderContext.getEnvironmentContext();
6
7    // Check the application version
8    Double currentVersion = Double.valueOf(app.getVersion());
9    if (currentVersion <= 5){
10        // Versions lower than 5 are no longer supported in this example
11        throw new Canvas.CanvasRenderException('Error: Versions earlier than 5 are no longer supported.');
12    }
13
14    // Override app URL, replacing portion after domain with '/alternatePath'
15    app.setCanvasUrlPath('/alternatePath');
16
17    // Add Name, BillingAddress and YearStarted to fields 
18    // (assumes we'll run from a component on the Account detail page)
19    Set<String> fields = new Set<String>{'Name','BillingAddress','YearStarted'};
20    env.addEntityFields(fields);
21
22    // Add a new custom param to the set of custom params
23    // First, get the current custom params
24    Map<String, Object> previousParams = 
25        (Map<String, Object>) JSON.deserializeUntyped(env.getParametersAsJSON());
26    // Add a 'newCustomParam' to our Map
27    previousParams.put('newCustomParam','newValue');
28    // Now, replace the parameters
29    env.setParametersAsJSON(JSON.serialize(previousParams));
30}
31