本書の第 II 部は、初心者から熟練した上級者まで、コードで Salesforce1 アプリケーショ ンをカスタマイズする必要があるすべての開発者を対象としています。
3. いずれかの請求書をタップすると、画面にその請求書の合計額と [ 納入 ] ボタン が表示されます。
4. [
納入]
をタップします。これで、
Shipify Web
アプリケーションで注文処理が開始されます。Shipify
によって請求書の状況が
[
完了]
に設定されます。また、取引先のフィード項目も作成 されます。このフィード項目には、請求書が発送されたことと、関連する注文 番号、および請求書へのリンクが表示されます。これで完了です。これで、
Force.com Canvas
とキャンバスカスタムアクションを使用し て、Web
アプリケーションをSalesforce1
アプリケーションに統合するプロセス全体が 終了しました。倉庫の作業者は、顧客の注文の検索、注文の発送、注文と取引先フィー ドの更新ができるようになりました。パブリッシャーおよびアクションバーのキャンバスアプリケーションの開発ガイドラ インについての詳細は、「ChatterパブリッシャーとSalesforce1アクションバーのキャ ンバスアプリケーション」
(
ページ268)
を参照してください。もうひとこと : キャンバスアプリケーションでコンテ キストを取得する
Force.com Canvas SDK
には、アプリケーションや現在のユーザに関するコンテキスト情報を
Salesforce
から取得できるコールとオブジェクトが備えられています。コンテキストの取得
署名付き要求を使用してキャンバスアプリケーションを認証すると、キャンバスアプ リケーション
URL
へのPOST
の一部としてCanvasRequest
オブジェクト(Context
オブジェ クトが含まれる) を取得します。認証に OAuth を使用する場合やコンテキスト情報を取 得するためにコールする場合は、JavaScript
コールを行います。この情報を使用して、後続のコールで情報を取得してアプリケーションコードを作成できるため、
Salesforce1
ユーザインターフェースと完全に統合されているように見えます。次のコードサンプルは、
JavaScript
コールでコンテキストを取得する例を示していま す。このコードでは、テキストが「Get Context」のリンクを作成し、そのリンクからSfdc.canvas.client.ctx関数をコールします。
<script>
function callback(msg) { if (msg.status !== 200) {
alert("Error: " + msg.status);
return;
}
alert("Payload: ", msg.payload);
}
var ctxlink = Sfdc.canvas.byId("ctxlink");
var client = Sfdc.canvas.oauth.client();
ctxlink.onclick=function() {
Sfdc.canvas.client.ctx(callback, client)};
}
</script>
<a id="ctxlink" href="#">Get Context</a>
コンテキストのオブジェクト
キャンバスアプリケーションでコールを行ってコンテキストを取得すると、応答で
CanvasRequest
オブジェクトが返されます。このオブジェクトには、アプリケーションとユーザに関するすべてのコンテキスト情報が含まれます。コンテキストのオブジェ クトは、次のとおりです。
説明 オブジェクト
Context
オブジェクトとClient
オブジェクトを返します。CanvasRequest
クライアントアプリケーションに関するコンテキスト情報を返 します。
Client
キャンバスアプリケーションのコンシューマに関する情報を返 します。
Application
、Environment
、Links
、Organization
、User
オブ ジェクトが含まれます。Context
バージョン、アクセス方法、
URL
などのキャンバスアプリケー ションに関する情報を返します。Application
場所、
UI
テーマなどの環境に関する情報を返します。Environment
メタデータ URL、ユーザ URL、Chatter グループ URL などのリンク を返します。これらのリンクを使用して、アプリケーションか
ら
Salesforce
へのコールを行うことができます。Links
名前、
ID
、通貨コードなどの組織に関する情報を返します。Organization
ロケール、名前、ユーザ
ID
、メールアドレスなどの現在ログイ ンしているユーザに関する情報を返します。User
次のコードスニペットは、
CanvasRequest
オブジェクトの例を示しています。{
"context":
{
"application":
{
"applicationId":"06Px000000003ed",
"authType":"SIGNED_REQUEST",
"canvasUrl":"http://instance.salesforce.com:8080 /canvas_app_path/canvas_app.jsp",
"developerName":"my_java_app",
"name":"My Java App",
"namespace":"org_namespace",
"referenceId":"09HD00000000AUM",
"samlInitiationMethod": "None",
"version":"1.0.0"
},
"user":
{
"accessibilityModeEnabled":false,
"currencyISOCode":"USD",
"email":"[email protected]",
"firstName":"Sean",
"fullName":"Sean Forbes",
"isDefaultNetwork":false,
"language":"en_US",
"lastName":"Forbes",
"locale":"en_US",
"networkId":"0DBxx000000001r",
"profileId":"00ex0000000jzpt",
"profilePhotoUrl":"/profilephoto/005/F",
"profileThumbnailUrl":"/profilephoto/005/T",
"roleId":null,
"siteUrl":"https://mydomain.force.com/",
"siteUrlPrefix":"/mycommunity",
"timeZone":"America/Los_Angeles",
"userId":"005x0000001SyyEAAS",
"userName":"[email protected]",
"userType":"STANDARD"
},
"environment":
{
"parameters":
{
"complex":
{
"key1":"value1",
"key2":"value2"
},
"integer":10,
"simple":"This is a simple string.",
"boolean":true },
"dimensions":
{
"height": "900px",
"width": "800px",
"maxHeight":"2000px",
"maxWidth":"1000px",
"clientHeight":"80px",
"clientWidth":"968px"
},
"displayLocation":"Chatter",
"locationUrl": "http://www.salesforce.com
"uiTheme":"Theme3",
"record":{},
"version":
{
"api":"34.0",
"season":"SUMMER"
}, },
"organization":
{
"currencyIsoCode":"USD",
"multicurrencyEnabled":true,
"name":"Edge Communications",
"namespacePrefix":"org_namespace",
"organizationId":"00Dx00000001hxyEAA"
},
"links":
{
"chatterFeedItemsUrl":"/services/data/v34.0/
chatter/feed-items",
"chatterFeedsUrl":"/services/data/v34.0/
chatter/feeds",
"chatterGroupsUrl":"/services/data/v34.0/
chatter/groups",
"chatterUsersUrl":"/services/data/v34.0/
chatter/users",
"enterpriseUrl":"/services/Soap/c/34.0/
00Dx00000001hxy",
"loginUrl":"http://login.salesforce.com",
"metadataUrl":"/services/Soap/m/34.0/00Dx00000001hxy",
"partnerUrl":"/services/Soap/u/34.0/00Dx00000001hxy",
"queryUrl":"/services/data/v34.0/query/",
"recentItemsUrl":"/services/data/v34.0/recent/",
"restUrl":"/services/data/v34.0/",
"searchUrl":"/services/data/v34.0/search/",
"sobjectUrl":"/services/data/v34.0/sobjects/",
"userUrl":"/005x0000001SyyEAAS"
} },
"client":
{
"instanceId":"06Px000000002JZ",
"instanceUrl":"http://instance.salesforce.com:
8080",
"oauthToken":"00Dx0000X00Or4J!ARQAKowP65p8FDHkvk.Uq5...",
"targetOrigin":"http://instance.salesforce.com:
8080"
},
"algorithm":"HMACSHA256",
"userId":"005x0000001SyyEAAS",
"issuedAt":null }
コンテキストのオブジェクトおよび
Force.com Canvas SDK
についての詳細は、『Force.comCanvas開発者ガイド』を参照してください。
フィードのキャンバスアプリケーションを使用し た Salesforce1 の拡張
Force.com Canvas
を使用すると、Salesforce1
アプリケーションでキャンバスアプリケーションをフィード項目として公開することによって、さらに多くの機能をフィードに 追加できます。
この機能を使用して、次のことができます。
•
Salesforce1
アクションバーのキャンバスカスタムアクションから公開されたキャンバスアプリケーションを使用するか、
Salesforce
フルサイトのパブリッシャーを使用 して、フィードに投稿する。•
Chatter API
を使用してフィードに投稿する。• フィード項目内にキャンバスアプリケーションを直接表示する。
この章では、
Force.com Canvas
を使用してフィードでサードパーティのWeb
アプリケー ションを統合することによって、Acme Wireless
組織をさらに拡張します。Acme Wireless
には、Heroku
で実行されるDeliveryTrakr
というWeb
アプリケーションがあ り、このアプリケーションを使用して顧客の注文の配送が処理されます。Heroku
で実行される
DeliveryTrackr
アプリケーションをコピーし、グローバルアクションとしてパブリッシャーから使用できるようにします。
このシナリオでは、モバイルデバイスを持つ倉庫の作業者が配送のリストを表示でき ます。倉庫の作業者がパブリッシャーからアプリケーションにアクセスすると、さま ざまなフィード投稿を作成できます。アプリケーションでは、配送に関する情報を含 むフィード項目であるテキスト投稿、
DeliveryTrakr
アプリケーションへのリンクを含む フィード項目であるリンク投稿、または別のキャンバスアプリケーションへのリンク を含むフィード項目であるキャンバス投稿を作成できます。このリンクをクリックし て、配送を承認または拒否できるキャンバスアプリケーションにアクセスできます。実際に試す : DeliveryTrakr Web アプリケーションをコ ピーする
DeliveryTrakr Web
アプリケーションをコピーして、フィードのキャンバスアプリケーションの統合処理を開始します。
このガイドの「開発の前提条件」
(
ページ83)
に記載されている前提条件に加えて、次 のものも必要です。• 「アプリケーションのカスタマイズ」および「すべてのデータの編集」ユーザ権 限。ほとんどの場合、管理者にはすでにこれらの権限があります。管理者以外の 場合、キャンバスアプリケーションのプレビューアを表示してキャンバスアプリ ケーションを作成できるようにこれらの権限を追加する必要があります。
•
Git
のインストール。https://help.github.com/articles/set-up-gitに移 動し、Git
をインストールして設定します。Git
をインストールした後、keygen
ツールを使用してSSH
を設定する必要が生じる 場合があります。詳細は、https://help.github.com/articles/generating-ssh-keysを参照してくだ さい。Windows を使用している場合、このツールは Git \binディレクトリにありま す。このディレクトリは、
Git
をインストールしてもパスに追加されません。コン トロールパネルを使用してパスに\binディレクトリを追加します。インストー ルディレクトリに応じて、パスはC:\Program Files (x86)\Git\binのように なります。• コード例をコピーする
GitHub
アカウント。https://github.com/plansに移動し、
GitHub
アカウントを設定します。•
Web
アプリケーションはHeroku
で実行されるためHeroku
アカウント。https://api.heroku.com/signupに移動し、
Heroku
アカウントを作成します。• コマンドラインから
Heroku
アプリケーションを管理するHeroku Toolbelt
。https://toolbelt.heroku.comに移動し、
Heroku Toolbelt
をダウンロードしてイ ンストールします。アプリケーションの機能に関係なく、キャンバスアプリケーションの作成手順および 実行手順は同じです。したがって、この章の手順は、前の章「キャンバスカスタムア クションを使用したSalesforce1の拡張」
(
ページ129)
の手順と似ています。DeliveryTrakr
は、顧客の注文の配送を追跡するためにAcme Wireless
で使用するWeb
アプリケーションです。倉庫の作業者はこのアプリケーションを使用して、配送済みの注 文を確認し、配送情報をフィードに投稿します。
DeliveryTrakr Web
アプリケーションに は、一部の配送処理ロジックが含まれていますが、完全なアプリケーションではあり ません。このアプリケーションの目的は、Web
アプリケーションとSalesforce1
アプリ ケーションをどのように統合できるかを示すことにあります。DeliveryTrakr
は、Heroku
で実行されるJava
アプリケーションです。アプリケーションで実行中の各インスタンスは、組織で作成する接続アプリケーションに対してコンシュー マの秘密を参照する必要があります。したがって、キャンバスアプリケーションとし て追加できる
DeliveryTrakr
の独自のインスタンスがHeroku
で必要となります。このス テップでは、処理の最初のステップであるアプリケーションのコピーを行います。1.
コマンドウィンドウを開き、DeliveryTrakr
をダウンロードするディレクトリに移 動します。アプリケーションをコピーすると、Delivery-Tracker-Java-App というディレクトリが作成され、ここからコピーコマンドを実行できます。•
Windows
を実行しているコンピュータの場合は、[
スタート] > [
ファイル名を指定して実行
...]
をクリックしてコマンドウィンドウを開き、「cmd」と入力 します。•
Mac OS
を実行しているコンピュータの場合は、Command + Space
キーを押してコマンドウィンドウを開き、「terminal」と入力します。
2.
git clonehttps://github.com/forcedotcom/Delivery-Tracker-Java-Appコマン ドを入力します。