SlideShare a Scribd company logo
1 of 59
Download to read offline
Force.com 募集管理アプリケーション
オープンソース賞
名前:吉川 大樹
http://tyoshikawa1106.hatenablog.com/
@tyoshikawa1106
+TaikiYoshikawa
tyoshikawa1106
tyoshikawa1106
Salesforce1 Platformの機能を有効活用できている点と
コードの公開によりサンプルコードとして活用可能な点が高評価
Force.com サイトの入力フォームから応募者情報を登録します。
画面下側にある登録ボタンで入力した情報を登録できます。
正常に登録されるとメッセージが表示されます。
登録された情報は応募者オブジェクトの詳細ページで
確認できます。
応募者情報が登録されるとApexトリガーで
登録者にメールを送信します。
Apexトリガーのメール送信処理でエラーが発生した場合は、
送信メールエラーログオブジェクトにエラー情報が登録されます。
登録された応募者情報はスケジュールバッチにより、
Chatterフィードに自動共有されるようになっています。
Chatter共有は応募者管理グループに対して行います。
これにより対象のユーザにのみ共有可能です。
Chatter投稿は対象の応募者レコードにも紐付いています。
これにより詳細ページからフィードを確認することも可能です。
Chatter共有処理は応募者オブジェクトの投稿済み項目が
チェックありのレコードのみを対象としています。
ダッシュボードでどのような応募者が多いのか簡単に分析できます。
Salesforce1モバイルアプリでモバイル端末から
応募者情報にアクセスできます。
Chatterのアンケート機能やダッシュボードも利用できます。
Salesforce1モバイルアプリ用に
検索画面を用意しています。
以下のスキルを使って開発しました。
・BootstrapSF1
・KnockoutJs
・RemoteObjects
検索は前方一致検索です。
レコードを選択すると詳細ページへ
遷移します。
サイトゲストユーザはAPIを有効化することができません。
RemoteObjectsの登場でJSから登録処理が可能になりました。
サイトゲストユーザプロファイル
システム管理者プロファイル
サイトゲストユーザでRemoteObjectsによる登録処理を
実行した際に実行権限のエラーが発生しました。
応募者オブジェクトの作成権限を付け忘れていたことが
エラーの原因でした。
BootstrapSF1を利用すると『apex:composition』や『apex:include』の
タグ読み込み時に一部スタイルが適用されませんでした。
今回はサイトテンプレートの使用を諦めました。
当初、サイトのゲストユーザが応募者を登録したタイミングで、
ApexトリガーからFeedItemオブジェクトをINSERTする予定でした。
管理者ユーザでは正常に実行できましたが、ゲストユーザではエラーとなりました。
管理者権限で実行できるスケジュールバッチで処理することで解決しました。
Chatter API in ApexはWinter 15のバージョンアップで
一部クラスの使用方法が変更されました。
Chatter API in Apexのテストでは
『@isTest(SeeAllData=true)』の宣言が必要
Chatter API in ApexでのChatter投稿は
DML処理の扱いになるのでループ内で処理できません。
今回、画面開発ではKnockoutJsを利用しました。
まだ理解できていないことが多かったので思うように動作せず苦労しました。
応募者情報のChatter共有処理で使用するグループ名は
カスタム設定に持たせました。
グループ名変更はコードの修正を行わずに対応できます。
カスタム設定の設定種別は階層型を利用しています。
※組織レベルに定義できれば問題ない為です。
画面に表示するラベルやメッセージなどは
カスタム表示ラベルの値を表示するようにしています。
※JSファイル内では使用できません。
テストクラス内で用意するデータを作成する共通クラスを用意しています。
必須項目や入力規則が追加されたときの修正箇所を少なくできます。
共通クラスのテストクラスで使用方法を確認できます。
入力規則などの追加によるエラーはここのテストで確認できます。
Controllerにすべての処理を書いたりするとメンテナンスが大変です。
Helperクラスを用意してその辺の問題を解決しています。
ApexトリガーでもHelperクラスを用意することで
Handlerクラスの処理がスッキリすると思います。
Intriguing Design Pattern for Scheduled APEX
http://advancedapex.com/2012/11/14/scheduledapex/
https://github.com/tyoshikawa1106/Salesforce-Hack-Challenge-2014
Salesforce Hack Challenge 2014
Salesforce Hack Challenge 2014

More Related Content

More from Taiki Yoshikawa

Salesforceでオフィス資産の管理
Salesforceでオフィス資産の管理Salesforceでオフィス資産の管理
Salesforceでオフィス資産の管理Taiki Yoshikawa
 
Lightning Experience導入で意識したこと
Lightning Experience導入で意識したことLightning Experience導入で意識したこと
Lightning Experience導入で意識したことTaiki Yoshikawa
 
ユーザー企業エンジニア目線のForce.com設計手法
ユーザー企業エンジニア目線のForce.com設計手法ユーザー企業エンジニア目線のForce.com設計手法
ユーザー企業エンジニア目線のForce.com設計手法Taiki Yoshikawa
 
Spring'17 - Visualforce & Apex
Spring'17 - Visualforce & ApexSpring'17 - Visualforce & Apex
Spring'17 - Visualforce & ApexTaiki Yoshikawa
 
個人取引先でB2C顧客の管理
個人取引先でB2C顧客の管理個人取引先でB2C顧客の管理
個人取引先でB2C顧客の管理Taiki Yoshikawa
 
Salesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントSalesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントTaiki Yoshikawa
 
Salesforce Social Studio
Salesforce Social StudioSalesforce Social Studio
Salesforce Social StudioTaiki Yoshikawa
 
React Lightning Design System
React Lightning Design SystemReact Lightning Design System
React Lightning Design SystemTaiki Yoshikawa
 
JSforceではじめるSalesforce APIの世界
JSforceではじめるSalesforce APIの世界JSforceではじめるSalesforce APIの世界
JSforceではじめるSalesforce APIの世界Taiki Yoshikawa
 
Community Cloud & Force.com Sites
Community Cloud & Force.com SitesCommunity Cloud & Force.com Sites
Community Cloud & Force.com SitesTaiki Yoshikawa
 
Salesforce DG Meetup Group
Salesforce DG Meetup GroupSalesforce DG Meetup Group
Salesforce DG Meetup GroupTaiki Yoshikawa
 
Salesforce Chatterと社内イベント
Salesforce Chatterと社内イベントSalesforce Chatterと社内イベント
Salesforce Chatterと社内イベントTaiki Yoshikawa
 
Spring'16 Apex Code 新機能
Spring'16 Apex Code 新機能Spring'16 Apex Code 新機能
Spring'16 Apex Code 新機能Taiki Yoshikawa
 
Lightningの入力フォーム
Lightningの入力フォームLightningの入力フォーム
Lightningの入力フォームTaiki Yoshikawa
 
Force.comデモ環境つくりました
Force.comデモ環境つくりましたForce.comデモ環境つくりました
Force.comデモ環境つくりましたTaiki Yoshikawa
 
Salesforce Platformの世界
Salesforce Platformの世界Salesforce Platformの世界
Salesforce Platformの世界Taiki Yoshikawa
 
Lightning Component × Lightning Design System
Lightning Component × Lightning Design SystemLightning Component × Lightning Design System
Lightning Component × Lightning Design SystemTaiki Yoshikawa
 
Winter'16 Lightning Component
Winter'16 Lightning Component Winter'16 Lightning Component
Winter'16 Lightning Component Taiki Yoshikawa
 

More from Taiki Yoshikawa (20)

Salesforceでオフィス資産の管理
Salesforceでオフィス資産の管理Salesforceでオフィス資産の管理
Salesforceでオフィス資産の管理
 
Lightning Experience導入で意識したこと
Lightning Experience導入で意識したことLightning Experience導入で意識したこと
Lightning Experience導入で意識したこと
 
ユーザー企業エンジニア目線のForce.com設計手法
ユーザー企業エンジニア目線のForce.com設計手法ユーザー企業エンジニア目線のForce.com設計手法
ユーザー企業エンジニア目線のForce.com設計手法
 
Spring'17 - Visualforce & Apex
Spring'17 - Visualforce & ApexSpring'17 - Visualforce & Apex
Spring'17 - Visualforce & Apex
 
個人取引先でB2C顧客の管理
個人取引先でB2C顧客の管理個人取引先でB2C顧客の管理
個人取引先でB2C顧客の管理
 
Salesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイントSalesforceの導入で押さえておきたいポイント
Salesforceの導入で押さえておきたいポイント
 
Salesforce Social Studio
Salesforce Social StudioSalesforce Social Studio
Salesforce Social Studio
 
Summer'16 Apex Code
Summer'16 Apex CodeSummer'16 Apex Code
Summer'16 Apex Code
 
React Lightning Design System
React Lightning Design SystemReact Lightning Design System
React Lightning Design System
 
JSforceではじめるSalesforce APIの世界
JSforceではじめるSalesforce APIの世界JSforceではじめるSalesforce APIの世界
JSforceではじめるSalesforce APIの世界
 
Community Cloud & Force.com Sites
Community Cloud & Force.com SitesCommunity Cloud & Force.com Sites
Community Cloud & Force.com Sites
 
Salesforce DG Meetup Group
Salesforce DG Meetup GroupSalesforce DG Meetup Group
Salesforce DG Meetup Group
 
Salesforce Chatterと社内イベント
Salesforce Chatterと社内イベントSalesforce Chatterと社内イベント
Salesforce Chatterと社内イベント
 
Spring'16 Apex Code 新機能
Spring'16 Apex Code 新機能Spring'16 Apex Code 新機能
Spring'16 Apex Code 新機能
 
Lightningの入力フォーム
Lightningの入力フォームLightningの入力フォーム
Lightningの入力フォーム
 
Force.comデモ環境つくりました
Force.comデモ環境つくりましたForce.comデモ環境つくりました
Force.comデモ環境つくりました
 
Salesforce Platformの世界
Salesforce Platformの世界Salesforce Platformの世界
Salesforce Platformの世界
 
Lightning Component × Lightning Design System
Lightning Component × Lightning Design SystemLightning Component × Lightning Design System
Lightning Component × Lightning Design System
 
Winter'16 Lightning Component
Winter'16 Lightning Component Winter'16 Lightning Component
Winter'16 Lightning Component
 
Winter'16 Apex Code
Winter'16 Apex CodeWinter'16 Apex Code
Winter'16 Apex Code
 

Salesforce Hack Challenge 2014