はじめに
チュートリアルを始める前に以下の準備をしておきます。
- ステップ 1: Warehouse データモデルをインストールする
- ステップ 2: Heroku アカウントを作成する
- ステップ 3: Heroku Toolbelt をインストールする
SalesforceのDeveloper組織にパッケージをインストールしてHerokuのアカウントを作成しておけばいいみたいです。
チュートリアル 1
Heroku アプリケーションの新規作成
ステップ 1: GitHub プロジェクトをコピーする
次のコマンドで実行できます。
git clone https://github.com/sbob-sfdc/spring-mvc-fulfillment-base
ステップ 2: Heroku プロジェクトを作成する
1. コマンドラインターミナルで、ディレクトリを前のステップで作成した spring-mvc-fulfillment-baseフォルダに変更します。
cd spring-mvc-fulfillment-base
2. 次のコマンドを実行して Heroku にログインします (必要に応じて、Heroku ログイン情報を続けて入力します)。
heroku login
3. 次のコマンドを実行して、Heroku に新しいアプリケーションを作成します。
heroku create
Herokuにアプリが作成されます。
4. ローカルコードを Heroku にリリースするには、次のコマンドを実行します。
git push heroku master
5. プロセスが完了したら、次のコマンドを実行して既存のアプリケーションをプレビューできます。
heroku open
ステップ 3: アプリケーションをテストする
このステップでは、アプリケーションの簡易テストを実行してその動作を確認する方法を説明します。
1. ブラウザタブまたはウィンドウで、https://{appname}.herokuapp.com に移動します。
2. [Ajax @Controller Example (Ajax @Controller の例)] をクリックします。
3. 別のブラウザタブまたはウィンドウで、Force.comインスタンスの Warehouse アプリケーションを開きます。
4. [Invoices (請求書)] をクリックし、既存の請求書を選択するか、必要に応じて新しい請求書を作成します。
5. ブラウザの URL バーで、請求書レコード ID を選択します。これは、URL の salesforce.com より後の部分すべてです。a01E0000000diKc のようになります。ID をクリップボードにコピーします。
6. Heroku アプリケーションが表示されているブラウザウィンドウまたはタブに戻ります。
7. 請求書レコード ID を [Id] の下の項目に貼り付けます。
8. [Create (作成)] をクリックします。この請求書 ID で注文が作成されます。この注文は、Salesforce の注文レコードとは異なります。
9. [OK] をクリックします。次のようなページが表示されます。
とりあえずHerokuアプリケーションを作成して動かすところまで確認できました。
チュートリアル 2
Warehouse アプリケーションと外部サービスの接続
ステップ 1: 請求書で外部 ID 項目を作成する
1. Salesforce 組織にログインします。
2. [設定] から[作成] > [オブジェクト] > [請求書]をクリックして、請求書カスタムオブジェクトに移動します。
3. [カスタム項目 & リレーション] までスクロールダウンし、[新規] をクリックします。
4. 項目のデータ型で [テキスト] を選択し、[次へ] をクリックします。
5. 項目表示ラベルに「OrderId」と入力し、項目の長さに「6」と入力します。デフォルトの項目名「OrderId」を承認します。
6. [外部 ID] チェックボックスをオンにして、[次へ] をクリックします。
7. [次へ] をクリックしてデフォルトを承認してから、[保存] をクリックします
ステップ 2: リモートサイトレコードを作成する
1. [設定] から、[セキュリティのコントロール] > [リモートサイトの設定] をクリックします。
2. [新規リモートサイト] をクリックします。
3. [リモートサイト名] 項目に、「FulfillmentWebService」(スペースなし) と入力します。
4. [リモートサイトの URL] 項目に、「https://{appname}.herokuapp.com」と入力します。
5. [保存] をクリックして、残りのデフォルト値を受け入れます。
これで、アプリケーション内の任意の Apex コードで、チュートリアル 1 でリリースした履行 Web サービスをコールできます。
ステップ 3: インテグレーション Apex クラスを作成する
Apexクラス: Integrationを作成します。
※{appname} を Heroku アプリケーション名に置き換えることを忘れないでください。
ステップ 4: @future メソッドをテストする
開発者コンソールから次の処理を実行。正常に実行されるか確認します。
// Get an Invoice__c for testing Invoice__c invoice = [SELECT ID FROM Invoice__c LIMIT 1]; // Call the postOrder method to test the asynchronous call Integration.postOrder(new List<Id>{invoice.id});
エラーメッセージが表示されたときはレコードが存在していない可能性があります。次のように作成すると解決します。
デバッグログに次のように表示されれば正常に実行できています。
Herokuのアプリ側でレコードが作成されています。
ステップ 5: @future メソッドをコールするトリガを作成する
次のApexトリガを作成します。(Invoice__c)
ステップ 6: 完全なインテグレーションパスをテストする
作成したApexトリガの動作確認を行います。
1. Warehouse アプリケーションを選択します。
2. [請求書] タブをクリックします。
3. 最近のいずれかの請求書をクリックすると、請求書に OrderId がないことがわかります。
4. [Status (状況)] がすでに [Closed (完了)] になっている場合は、[Closed (完了)] という単語をダブルクリックして[Open (進行中)] に変更し、[保存] をクリックします。
5. [Status (状況)] の値をダブルクリックして [Closed (完了)] に変更し、[保存] をクリックします。これで、非同期コールアウトがトリガされます。
6. 数秒待機してから、ブラウザのページを更新します。
7. OrderId 項目に外部注文 ID が表示されます。
これでうまくいくはずでしたが、Apexトリガからだとなぜかエラーに・・・
開発者コンソールからはうまくいったのでここはスキップします。とりあえず非同期処理でHerokuアプリのレコードを更新する雰囲気はこんな感じでした。
チュートリアル 3
Heroku アプリケーションの更新
ステップ 1: 接続アプリケーションを設定する
1. [設定] で、[作成] > [アプリケーション] をクリックします。
2. [接続アプリケーション] セクションで、[新規] をクリックします。
3. [接続アプリケーション名] に、アプリケーション名を入力します。
4. プログラムからアプリケーションを参照するときに使用する [API 参照名] を入力します。API 参照名は、デフォルトの空白を除いた名前になります。
5. [取引先責任者 メール] を指定します。
6. API ([OAuth 設定の有効化]) で、[OAuth 設定の有効化] を選択します。
7. [コールバック URL] に「https://{appname}.herokuapp.com/_auth」と入力します。
8. [選択した OAuth 範囲] 項目で、[フルアクセス (フル)] および [ユーザに代わっていつでも要求を実行
(refresh_token、offline_access)] を選択し、選択された OAuth 範囲にそれを追加します。
9. [保存] をクリックします。
ステップ 2: 新しい分岐でアプリケーションを更新する
1. コマンドラインに戻り、現在の場所が spring-mvc-fulfillment-base フォルダであることを確認しま
す。
2. 次のコマンドを入力して「full」分岐をフェッチし、主分岐にマージします。これらの操作をすべて 1 つの手順で行います。
git pull origin full
a. 次に進む前に、組織に戻ります。
b. [設定] で、[作成] > [アプリケーション] をクリックします。
c. [接続アプリケーション設定] セクションで、アプリケーション名をクリックします。
d. [コンシューマの秘密] の横にある、[クリックして公開] をクリックします。
e. 表示された数値をコピーするには、キーボードコントロールを使用します。
3. Heroku アプリケーションに対して、アクセスキーを設定する必要があります。次の項目を入力します。
heroku config:add OAUTH_CLIENT_KEY=PUBLICKEY OAUTH_CLIENT_SECRET=PRIVATEKEY
PUBLICKEY を[コンシューマ鍵]で置き換えます。同様に、PRIVATEKEY をコンシューマの秘密で置き換えます。コマンドラインで入力する前に、この操作をテキストエディタで行うと便利です。
4. 次のコマンドを実行して、ローカルの変更を Heroku に転送します。
git push heroku master
5. ブラウザのタブまたはウィンドウで https://{appname}.herokuapp.com に移動し、変更内容を確認します (必要に応じてブラウザを最新の情報に更新します)。
ここでエラー・・・
多分設定がどこか間違ってるんですけど、ちょっと疲れたので今回はここまで、Integration Workbookの内容的には次の内容が残っています。
チュートリアル 4: Force.com Canvas を使用したアプリケーションの Salesforce への追加
Force.com CanvasをつかってHerokuアプリをSalesforce上で表示するということなので、以前試してこの辺と似た内容だと思います。
Git / 接続アプリケーション / Auth認証の辺りはまだ理解できていないことが多いのでもっと勉強しないとって思いました。