salesforce hack challenge 2014

59

Upload: taiki-yoshikawa

Post on 17-Jul-2015

1.159 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Salesforce Hack Challenge 2014
Page 2: Salesforce Hack Challenge 2014

Force.com 募集管理アプリケーション オープンソース賞

Page 3: Salesforce Hack Challenge 2014

名前:吉川 大樹http://tyoshikawa1106.hatenablog.com/

@tyoshikawa1106

+TaikiYoshikawa

tyoshikawa1106

tyoshikawa1106

Page 4: Salesforce Hack Challenge 2014
Page 5: Salesforce Hack Challenge 2014

Salesforce1 Platformの機能を有効活用できている点と コードの公開によりサンプルコードとして活用可能な点が高評価

Page 6: Salesforce Hack Challenge 2014
Page 7: Salesforce Hack Challenge 2014
Page 8: Salesforce Hack Challenge 2014

Force.com サイトの入力フォームから応募者情報を登録します。

Page 9: Salesforce Hack Challenge 2014

画面下側にある登録ボタンで入力した情報を登録できます。

Page 10: Salesforce Hack Challenge 2014

正常に登録されるとメッセージが表示されます。

Page 11: Salesforce Hack Challenge 2014

登録された情報は応募者オブジェクトの詳細ページで 確認できます。

Page 12: Salesforce Hack Challenge 2014

応募者情報が登録されるとApexトリガーで 登録者にメールを送信します。

Page 13: Salesforce Hack Challenge 2014

Apexトリガーのメール送信処理でエラーが発生した場合は、 送信メールエラーログオブジェクトにエラー情報が登録されます。

Page 14: Salesforce Hack Challenge 2014

登録された応募者情報はスケジュールバッチにより、 Chatterフィードに自動共有されるようになっています。

Page 15: Salesforce Hack Challenge 2014

Chatter共有は応募者管理グループに対して行います。 これにより対象のユーザにのみ共有可能です。

Page 16: Salesforce Hack Challenge 2014

Chatter投稿は対象の応募者レコードにも紐付いています。 これにより詳細ページからフィードを確認することも可能です。

Page 17: Salesforce Hack Challenge 2014

Chatter共有処理は応募者オブジェクトの投稿済み項目が チェックありのレコードのみを対象としています。

Page 18: Salesforce Hack Challenge 2014

ダッシュボードでどのような応募者が多いのか簡単に分析できます。

Page 19: Salesforce Hack Challenge 2014

Salesforce1モバイルアプリでモバイル端末から 応募者情報にアクセスできます。

Page 20: Salesforce Hack Challenge 2014

Chatterのアンケート機能やダッシュボードも利用できます。

Page 21: Salesforce Hack Challenge 2014

Salesforce1モバイルアプリ用に 検索画面を用意しています。

以下のスキルを使って開発しました。 ・BootstrapSF1 ・KnockoutJs ・RemoteObjects

Page 22: Salesforce Hack Challenge 2014

検索は前方一致検索です。

レコードを選択すると詳細ページへ 遷移します。

Page 23: Salesforce Hack Challenge 2014
Page 24: Salesforce Hack Challenge 2014
Page 25: Salesforce Hack Challenge 2014

サイトゲストユーザはAPIを有効化することができません。 RemoteObjectsの登場でJSから登録処理が可能になりました。

サイトゲストユーザプロファイル

システム管理者プロファイル

Page 26: Salesforce Hack Challenge 2014

サイトゲストユーザでRemoteObjectsによる登録処理を 実行した際に実行権限のエラーが発生しました。

Page 27: Salesforce Hack Challenge 2014

応募者オブジェクトの作成権限を付け忘れていたことが エラーの原因でした。

Page 28: Salesforce Hack Challenge 2014
Page 29: Salesforce Hack Challenge 2014

BootstrapSF1を利用すると『apex:composition』や『apex:include』のタグ読み込み時に一部スタイルが適用されませんでした。

今回はサイトテンプレートの使用を諦めました。

Page 30: Salesforce Hack Challenge 2014
Page 31: Salesforce Hack Challenge 2014

当初、サイトのゲストユーザが応募者を登録したタイミングで、 ApexトリガーからFeedItemオブジェクトをINSERTする予定でした。

管理者ユーザでは正常に実行できましたが、ゲストユーザではエラーとなりました。

Page 32: Salesforce Hack Challenge 2014

管理者権限で実行できるスケジュールバッチで処理することで解決しました。

Page 33: Salesforce Hack Challenge 2014
Page 34: Salesforce Hack Challenge 2014

Chatter API in ApexはWinter’15のバージョンアップで 一部クラスの使用方法が変更されました。

Page 35: Salesforce Hack Challenge 2014
Page 36: Salesforce Hack Challenge 2014

Chatter API in Apexのテストでは 『@isTest(SeeAllData=true)』の宣言が必要

Page 37: Salesforce Hack Challenge 2014
Page 38: Salesforce Hack Challenge 2014

Chatter API in ApexでのChatter投稿は DML処理の扱いになるのでループ内で処理できません。

Page 39: Salesforce Hack Challenge 2014
Page 40: Salesforce Hack Challenge 2014

今回、画面開発ではKnockoutJsを利用しました。 まだ理解できていないことが多かったので思うように動作せず苦労しました。

Page 41: Salesforce Hack Challenge 2014
Page 42: Salesforce Hack Challenge 2014
Page 43: Salesforce Hack Challenge 2014

応募者情報のChatter共有処理で使用するグループ名は カスタム設定に持たせました。

グループ名変更はコードの修正を行わずに対応できます。

Page 44: Salesforce Hack Challenge 2014

カスタム設定の設定種別は階層型を利用しています。 ※組織レベルに定義できれば問題ない為です。

Page 45: Salesforce Hack Challenge 2014
Page 46: Salesforce Hack Challenge 2014

画面に表示するラベルやメッセージなどは カスタム表示ラベルの値を表示するようにしています。

※JSファイル内では使用できません。

Page 47: Salesforce Hack Challenge 2014
Page 48: Salesforce Hack Challenge 2014

テストクラス内で用意するデータを作成する共通クラスを用意しています。 必須項目や入力規則が追加されたときの修正箇所を少なくできます。

Page 49: Salesforce Hack Challenge 2014

共通クラスのテストクラスで使用方法を確認できます。 入力規則などの追加によるエラーはここのテストで確認できます。

Page 50: Salesforce Hack Challenge 2014
Page 51: Salesforce Hack Challenge 2014

Controllerにすべての処理を書いたりするとメンテナンスが大変です。 Helperクラスを用意してその辺の問題を解決しています。

Page 52: Salesforce Hack Challenge 2014

ApexトリガーでもHelperクラスを用意することで Handlerクラスの処理がスッキリすると思います。

Page 53: Salesforce Hack Challenge 2014
Page 54: Salesforce Hack Challenge 2014

Intriguing Design Pattern for Scheduled APEX

http://advancedapex.com/2012/11/14/scheduledapex/

Page 55: Salesforce Hack Challenge 2014
Page 56: Salesforce Hack Challenge 2014
Page 57: Salesforce Hack Challenge 2014
Page 58: Salesforce Hack Challenge 2014

https://github.com/tyoshikawa1106/Salesforce-Hack-Challenge-2014

Salesforce Hack Challenge 2014

Page 59: Salesforce Hack Challenge 2014