ハイブリッドアプリケーションでの Salesforce データへのアクセス
学習の目的
この単元を完了すると、次のことができるようになります。
- force.js ライブラリを使用して、ハイブリッドアプリケーションから Salesforce REST API にアクセスする。
- Apex コントローラーを使用して、ハイブリッドリモートアプリケーションから Salesforce データにアクセスする。
force.js を使用した Salesforce API へのアクセス
ContactExplorer アプリケーションの説明で、force.js ライブラリの動作を確認しました。このライブラリには Salesforce レコードを操作する豊富な機能のセットが用意されています。作成、削除、更新、更新/挿入に加えて、SOQL クエリ、SOSL 検索、メタデータ記述、ファイル管理もサポートされています。
force.js とその他の Mobile SDK JavaScript ライブラリは SalesforceMobileSDK-Shared/libs と SalesforceMobileSDK-Shared/dependencies の GitHub リポジトリからダウンロードできます。
force.js と Mobile SDK を使ってみる
まずは、重要なアプリケーションリソースを Salesforce クラウドにアップロードします。
- cordova.js、force.js、およびプロジェクトに必要な他の静的リソースを含む、ZIP ファイルなどのアーカイブファイルを作成します。
- Salesforce で、[あなたの名前] | [アプリケーションの設定] | [開発] | [静的リソース] からアーカイブファイルをアップロードします。
単純な Visualforce ページの例
ハイブリッドリモートアプリケーションでの Apex コントローラーの使用
ハイブリッドリモートアプリケーションでは、通常、Visualforce ページとそれに関連する Apex コントローラーを通じて Salesforce データにアクセスします。Visualforce ページに JavaScript コードが含まれている場合、そのコードはサーバー側 Apex コントローラーとやりとりを行ったり、データを共有したりできます。
- apex:actionFunction に比べて柔軟性に富み、パフォーマンスが高い。
- Apex コントローラーメソッドでパラメーターと戻り値の型がサポートされ、Apex と JavaScript 間でデータ型の対応付けが自動的に行われる。
- コールバックで非同期処理モデルを使用する。
- apex:actionFunction と異なり、AJAX 要求に Visualforce ページのビューステートが含まれない。この結果、往復速度が速くなります。
次の例では、Visualforce ページの <script> タグに JavaScript コードを挿入しています。このコードは、Visualforce Remoting マネージャーオブジェクトで invokeAction() メソッドをコールします。Apex コントローラーオブジェクト objName で getItemId() という名前の関数をコールするのに必要なメタデータを invokeAction() に渡します。invokeAction() は非同期で実行されるため、getItemId() から返される値を処理するコールバック関数もコードで定義します。Apex コントローラーでは、@RemoteAction アノテーションにより、外部の JavaScript コードに getItemId() 関数が公開されます。
getItemId() メソッドでは、たとえば、Salesforce API をコールして、戻り値を JavaScript 内に取得できます。
リソース
- REST API 開発者ガイド
- Integration and REST APIs Developer Center
- Salesforce データへのアクセス: コントローラーと API
- Calling the REST API from Visualforce Pages, Revisited (Visualforce からの REST API のコールの再検討) (Salesforce 開発者ブログ)
- https://github.com/forcedotcom/SalesforceMobileSDK-Shared
- Quick Start: Connect Postman to Salesforce (クイックスタート: Postman を Salesforce に接続する)