Cloudforce2012 Mini Hackに参加したよ (1)
12/6 にはこんなイベントがありまして、(一応)シルバースポンサー枠で参加してきました。
※ちなみに、ブースにも立たない役立たずでしたが。。。関係者の皆様、申し訳ありませんでした。
m(_ _)m
さて、Cloudforceに参加されたDeveloperの方々はご存知かと思いますが、今年のDevZoneは昨年よりも充実したものになっておりました!
その1つとして、Mini Hackなるものが用意されてました。
これは6つのお題が用意されていて、そのお題に答えていくと先着○名で様々な景品がもらえる!というヤツです。ご多分にもれず、僕も参加してきましたので、その内容について簡単に紹介しようと思います。
Force.com インテグレーション Mini Hack
...なるほど。Force.comからHerokuに用意されているWebサービスを利用してみようというお題ですな。
Developer Editionの用意
ココからDeveloper Editionを作成します。
アカウント作成すると、確認メールが来るのでそこからアカウントを有効にします。
※特に説明も必要ないかと思いますので、この辺で割愛します....
Webサービスへの送信
この内容を見ると、
- 役職が「CEO」の取引先責任者が新しく作成された場合に起動する -> (Apex Trigger)
- 「姓」「名」「役職」「メールアドレス」などをWebサービスに送信する -> (Http Callout)
- データの形式はJSONとする -> (JSON.serialize)
- Webサービスからの戻り値を取得する
といったことを実装すればよさそうです。
Http Calloutするところ
とりあえずはこんな感じで...
↓
- Triggerから呼び出すので、@future アノテーションをつけてる
- 取引先責任者(Contact)にWebサービスからの戻り値を格納するための項目(CalloutLog__c)を追加した
- JSON形式にするデータを格納するための内部クラスを作っておいて、System.Json.serializePretty でJSONデータに変換してる
...といった具合でしょうか。
※Triggerから起動するので、ガバナ制限のチェック等はもっとしっかりやった方がよいですが、今回はMini Hackということで割愛させてください...
あと、さりげなくハマったポイントとしては、こんなところでした。
req.setHeader('Content-Type', 'application/json');
'Content-Type'のtypoに気付かず、しばらくハマってました....
_| ̄|○
Apex Trigger & Apex Trigger Handler
Apex Triggerの中身(Apex Triggerから起動される)
Apex Trigger本体
こちらの方は、単にApex Trigger本体と、その中身でということで、Http Callout用のApexクラスを呼び出すだけのものです。
Force.com側の設定
Force.com側の設定として、Endpointを登録しておきましょう。
実行!
では早速、役職を「CEO」として取引先責任者を新規作成してみましょう。
そして保存します。Herokuのサービスとやり取りするところは非同期で実行されるので、しばし待ってから画面をリロードするなどしてください...
{"message":"素晴らしい!! - Mini Hackスタッフにこのメッセージを見せて、プレゼントをGetして下さい!! :- )"}
というメッセージが返ってきましたね!
ちなみに、リクエストが何かおかしいと...
{"message":"どこかリクエストがオカしい様ですね。もう一度トライしましょう!! :-) "}
というメッセージが返ってきます。
おしまい
今回は、TriggerからHttp Calloutを利用する、というお題でしたね。
次回の紹介は....そのうちやります。
さて、この雑記はForce.com AdventCalendar 10日目にエントリしています!
今年も2周の予定ですので、引き続きよろしくお願いします〜