yonet77的な雑記帳

日々思いついたネタなどを書き留めておきます

Cloudforce2012 Mini Hackに参加したよ (1)

12/6 にはこんなイベントがありまして、(一応)シルバースポンサー枠で参加してきました。
※ちなみに、ブースにも立たない役立たずでしたが。。。関係者の皆様、申し訳ありませんでした。
m(_ _)m


さて、Cloudforceに参加されたDeveloperの方々はご存知かと思いますが、今年のDevZoneは昨年よりも充実したものになっておりました!
その1つとして、Mini Hackなるものが用意されてました。

これは6つのお題が用意されていて、そのお題に答えていくと先着○名で様々な景品がもらえる!というヤツです。ご多分にもれず、僕も参加してきましたので、その内容について簡単に紹介しようと思います。

Force.com インテグレーション Mini Hack

f:id:yonet77:20121210201801j:plain

...なるほど。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を登録しておきましょう。
f:id:yonet77:20121211103842p:plain


 

実行!

では早速、役職を「CEO」として取引先責任者を新規作成してみましょう。
f:id:yonet77:20121211103909p:plain

そして保存します。Herokuのサービスとやり取りするところは非同期で実行されるので、しばし待ってから画面をリロードするなどしてください...
f:id:yonet77:20121211103918p:plain

{"message":"素晴らしい!! - Mini Hackスタッフにこのメッセージを見せて、プレゼントをGetして下さい!! :- )"}

というメッセージが返ってきましたね!


ちなみに、リクエストが何かおかしいと...

{"message":"どこかリクエストがオカしい様ですね。もう一度トライしましょう!! :-) "}

というメッセージが返ってきます。

おしまい

今回は、TriggerからHttp Calloutを利用する、というお題でしたね。
次回の紹介は....そのうちやります。

さて、この雑記はForce.com AdventCalendar 10日目にエントリしています!
今年も2周の予定ですので、引き続きよろしくお願いします〜