« 2010年7月 | メイン | 2010年9月 »

2010年8月に作成された記事

2010年8月31日 (火)

Force.com IDEで同期するメタデータを設定するには?

Force.com IDEの「Refresh from Server」で、サーバーのメタデータをローカルに落としたのに、画面上で設定したはずのメタデータを持って来れていない場合があります。

これは、Force.comプロジェクトで設定している「同期するメタデータ」の中に含まれていないのが原因です。

操作方法を覚えてしまえば、なんてことはないのですが、ハマる人が多いトピックなので、詳しく説明しておきます。

同期したいメタデータを設定に追加するには、以下の手順を実施します。

1. Force.comプロジェクトを右クリックして、プロパティを選択

2. [Force.com] → [Project Contents]を選択

3. [Force.com Project Contents]ダイアログで、右上の[Add/Remove]ボタンを押下

20100831_1

4. [Choose Metadeta Components]ダイアログで、右上の更新ボタンを押下

20100831_2_2

5. [Choose Metadeta Components]ダイアログで、同期するメタデータを選択して、[OK]押下

20100831_3

6. [Force.com Project Contents]ダイアログで、[OK]または[適用]押下

7. 同期するメタデータの設定が更新される

結構忘れやすいのが、4.の手順。
更新しないと、前回アクセス時のメタデータが表示され、最近追加したメタデータが表示されません。

5.では、ツリーを展開して確認した方が良いです。
メールテンプレートやレポート等は、それぞれ個別に選択してあげる必要があります。

設定変更後は、「Refresh from Server」で、メタデータの同期がされるようになります。

2010年8月25日 (水)

Visualforceで数値や日付のフォーマットを指定して表示するには?

Visualforceで数値型の項目を、{!ItemNumber}のように差し込み項目で表示しようとすると、「10.0」のように小数で表示されてしまいます。

整数で表示したいんだけど。。。

これは、Visualforceで意外と(?)ハマりがちな問題だと思います。

最初に思い浮かぶのは、項目の設定ですが、
項目の設定で小数点の位置を0にしても、小数で表示されてしまいます。

Visualforceでは、<apex:outputText>タグと<apex:param>タグを使用して、フォーマット指定できます。↓に代表的な例を列挙しますので、参考にして下さい。



	




	




	

フォーマットの設定方法は、JavaのMessageFormatクラスと同じです(こちら)。

2010年8月17日 (火)

スケジュール実行するApexのテストメソッドと実行時刻の詳細設定

今回は前回の続きで、スケジュール実行するApexのテストメソッドの書き方と実行時刻の詳細設定方法のお話。

スケジュール実行するApexのテストは、

・Test.startTestメソッド
System.scheduleメソッド
・Test.stopTestメソッド

の順に呼び出すことで、実施します。

System.scheduleメソッドは、Apexをスケジュール設定するメソッドで、
・第1引数:ジョブ名(任意の名前)
・第2引数:クーロン式(実行時刻を設定)
・第3引数:Apexクラスのインスタンス

を受け取り、ジョブIDを返します。

クーロン式は、'0 0 0 3 9 ? 2022'のような式で、左から順に秒、分、時、日、月、曜日、年を表しています(年は省略可)。

<クーロン式の例 ・・・ 詳しい説明は こちら

・'0 0 13 * * ?':毎日13時に実行
・'0 0 10 ? * MON-FRI':月~金の10時に実行

テスト時に、System.scheduleメソッドで設定した実行時刻になるのを待つ必要はありません。Test.stopTestメソッドをコールすることで、System.scheduleメソッドで設定したジョブが実行され、ジョブの処理結果を確認することができるようになっています。

ソースコードはこんな感じ↓

// テストメソッド
static testMethod void hogeClassTest() {
	// テストデータ準備

	// テスト開始
	Test.startTest();
	
	// Apexをスケジュールに登録
	String jobId = 
		System.schedule('TestScheduledApex',
		'0 0 * * * ?', new HogeClass());
	
	// テスト終了(登録したスケジュールが実施される)
	Test.stopTest();

	// テストデータの確認
}

前回、『画面からの設定だと、「1日に1回しかスケジューリングできない」「1時間単位でしかスケジューリングできない」』と書きましたが、System.scheduleメソッドを利用すれば、1日に複数回実行することや、分単位で実行することも可能となるので、細かく設定したいときはこちらが便利です。

2010年8月10日 (火)

Apexをスケジュール実行する方法

Winter '10 API バージョン17.0から、Apexをスケジュール実行できるApex Schedulerが利用できるようになりました。これはかなり便利。

画面からの設定だと、「1日に1回しかスケジューリングできない」「1時間単位でしかスケジューリングできない」といった制約はありますが、これがあれば、日次バッチや週次バッチが作れちゃいます

やり方は簡単。ApexクラスにSchedulableインタフェースのexecuteメソッドを実装するだけです。executeメソッドの中にスケジュール実行させたい処理を記述します。

実装例はこちら↓

global class HogeClass implements Schedulable {
    global void execute(SchedulableContext sc) {
// スケジュール実行させたい処理
    }
}

後は、このクラスをスケジューリング設定してあげれば完了です。
「アプリケーションの設定」→「開発」→「Apexクラス」→「Apexをスケジュール」を押下すると、こんな画面↓になるので、先ほど作ったクラスを「Apexクラス」に設定してあげて下さい。

ここで、「Apexクラス」には、Schedulableインタフェースを実装したクラスしか設定できないので注意して下さい。

20100810_1

20100810_2

スケジューリングされていることは、「管理者設定」→「監視」→「スケジュール済みジョブ」で確認できます↓

スケジュール実行を取り消したい場合は、ここから削除します。

20100810_3

2010年8月 5日 (木)

カスタム表示ラベル

Salesforceにはカスタム表示ラベルという、テキスト値を定義できる機能があります↓

20100805_1

定義したテキスト値は、ApexやVisualforceから利用可能なので、エラーメッセージや文字列などの定数を外出ししたい場合に便利です。

Apexからの利用方法

System.Label.<ラベル名>

Visualforceからの利用方法

$Label.<ラベル名>

組織でトランスレーションワークベンチを有効にすると、カスタム表示ラベルは利用言語に合わせて翻訳されるので、多言語アプリケーションを作成する時も便利です。

採用情報

株式会社フレクトでは、事業拡大のため、
・Salesforce/Force.comのアプリケーション開発
・HerokuやAWSなどのクラウドプラットフォーム上
でのWebアプリケーション開発
エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみたい方、
是非ご応募下さい。

フレクト採用ページへ

会社紹介

  • 株式会社フレクトは、
      ・認定コンサルタント
      ・認定上級デベロッパー
      ・認定デベロッパー
    が在籍している、セールスフォースパートナーです。
    また、heroku partnersにも登録されています。
    herokuパートナー
    株式会社フレクト
    Salesforce/Force.com
    導入支援サービス
    弊社の認定プロフェッショナルが支援致します。
    ・Visualforce/Apexによるアプリ開発
    ・Salesforceと連携するWebアプリ開発
    も承っております。
    セールスフォースご検討の際は、
    お気軽にお問合せください。

Twitter

リファレンス

■Developer's Guide(リファレンス)
・Apex  HTML | PDF | 日本語PDF | ガバナ制限
・Visualforce  HTML | PDF
・Web Services API  HTML | PDF | 日本語PDF
・Bulk API  HTML | PDF
・REST API  HTML | PDF | 日本語PDF
・Metadata API  HTML | PDF
・Migration Tool  HTML | PDF
・AJAX Toolkit  HTML | PDF
・Data Loader PDF | 日本語PDF

■早見表 (日本語)
数式
Apex
Visualforce
Web Services API
Chatter