« 2010年8月 | メイン | 2010年10月 »

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

2010年9月21日 (火)

Winter '11 新機能

ついこの間Chatterが出たなあと思っていたら、もうWinter '11のリリースです。日本時間で10月2日~10日のリリースなので、もうすぐですね。正確な日時は組織毎に違うようですので、ここで確認してください。

リリースノートはこちら

というわけで、今日はWinter '11で気になった機能をご紹介。

System Log Console

ガバナ制限やプロセスのステップを追跡して、どこで落ちたかを調査できるようになります。どのメソッドに多くの実行時間がかかっているかも分かるみたいです。これでデバッグが少し楽になりそうです。

20100921_1

ガバナ制限の改訂

<廃止>
・1回のコールアウトの合計要求時間(現在の制限は120秒)
・1回のコールアウトの最大サイズ(現在の制限は1MB)

<緩和>
・一般的ヒープサイズ 2MB → 3MB
・Apexクラス/トリガ 100,000/32,000文字 → 1,000,000文字(@isTestで定義されたコメント、テストメソッド、クラスを含まない)
・1組織に許可されるApexコードの最大量 1MB → 2MB
・許可されるオブジェクトのChildRelationship、RecordTypeInfo及びPicklistEntryの総数とfieldsコールの総数 10 → 100

Web Services APIの強化

Dashboard及びReportオブジェクトで、ダッシュボードとレポートの表示が可能になります。どんな感じか早く使ってみたいですね。

1回の呼び出しで複数のオブジェクトを作成/更新可能になります(最大10種類)。今までは1種類ずつ作成/更新する必要があったので、使いやすくなりますね。

AllOrNoneHeader SOAPヘッダーを利用することにより、create、update、delete、undelete、upsert呼び出しで、全てのレコード処理が成功していなければ、ロールバックすることが可能になります。今までは、トランザクション制御はApexでしかできませんでしたが、これでWeb Services APIでもトランザクション制御が可能となります。Web Services APIの弱点が1つ解消されましたね。

Sandbox

・開発者のみSandbox、設定のみSandboxは毎日更新可能になります。これでSandboxを気軽に使えますね。但し、フルSandboxは今まで通り30日に1回しか更新できないので、ご注意を。

・Sandboxの削除が可能になります。

入力規則の制約追加

入力規則で複合項目(住所、姓名、連動選択リスト、連動ルックアップ)を使用できなくなります。なぜかこれだけグレードダウンしてます。要注意。

Chatter機能追加

・フィードの検索機能

・トピックス機能
 Twitterのタグに似た機能

・ファイルタブ
 フィードに添付したファイルが表示されるタブ。ファイルもフォロー可能です。

・Chatterタブ
 フォローしているレコード及びユーザの更新と参加グループの更新が表示されるタブ。推薦するユーザやグループも表示されます(ミクシーの「あなたの友人かも?」に似た機能)。

・Chatter Components for Visualforce (Pages)
  Visualforceで使えるChatterのコンポーネントです。
 <chatter:feed>、<chatter:feedWithFollowers>、<chatter:follow>、<chatter:followers>タグが利用可能になります。

2010年9月16日 (木)

Force.comからAmazon EC2とS3を利用する方法

Force.com for Amazon Web Servicesをインストールすると、
Force.com上からAmazon EC2とS3を利用することができます

機能は最低限のものしかありませんが、EC2とS3へアクセスするアプリを作成する際、ソースコードが大変参考になります。

インストール方法

1. パッケージのインストール

以下のリンクをクリックし、インストールしたい組織にログインして、パッケージをインストールします。

運用環境/Developer Edition用
Sandbox用

2. リモートサイトの設定

「管理者設定」→「セキュリティのコントロール」→「リモートサイトの設定」に、以下を新規追加します。

https://ec2.amazonaws.com
https://s3.amazonaws.com

20100916_1

3. AWS Credential情報の設定

「Force.com for Amazon Web Services」アプリケーションの「AWS Credential」タブで、 「新規」を押下し、以下の情報を入力して、AWS Credential情報を作成します。
・Credential Name : 任意の名称(6. Apexコードの修正で使用します)
・Key : AWSのAccess Key ID
・Secret : AWSのSecret Access Key

20100916_2

4. AWS S3 Objectオブジェクトの新規ボタン押下時アクションの上書き

「作成」→「オブジェクト」→「AWS S3 Object」→「標準ボタンと標準リンク」で「新規」ボタンのアクションを選択し、上書き手段で「Visualforceページ」と「news3object」を選択して、保存します。

20100916_3

5. Force.com IDEで、インストールした組織のプロジェクトを作成し、最新情報を取得します。

6. Apexコードの修正

・AWS_ExplorerCon.cls
・AWS_S3_ExampleController.cls
・S3FormController.cls
・EC2Consoleontroller.cls

AWSCredentialNameの値を、3.で設定した「Credential Name」の値に変更し、保存します。

20100916_4

利用方法

○EC2 Consoleタブ
EC2仮想マシンの運用状況を確認できます。シャットダウンと再起動も実行できます。

20100916_5

<注意>
US East(Virginia)以外のRegionを利用している場合は、追加で以下の設定が必要です。

追加1. Apexコードの修正

EC2 Query APIで情報を取得する際、エンドポイントが「https://ec2.amazonaws.com/」だと、US Eastの情報を取得してしまうので、

・EC2Connection.cls
のmakerequestメソッド内のreq.setEndpointの引数に渡しているURLを、利用しているRegionに合わせて、以下のように変更します。

US West(N.California) : https://ec2.us-west-1.amazonaws.com/
EU West(Ireland) : https://ec2.eu-west-1.amazonaws.com/
Asia Pacific(Singapore) : https://ec2.ap-southeast-1.amazonaws.com/
Asia Pacific(Tokyo) : https://ec2.ap-northeast-1.amazonaws.com/

20100916_6

追加2. リモートサイトの設定

追加1.で変更したURLをリモートサイトの設定に追加

○AWS Explorerタブ
S3のバケット構造を閲覧できます。

20100916_7

○S3 Samplesタブ
バケットの追加・削除、ファイルのアップロード(ローカル→S3、Force.com→S3)ができます。

20100916_8

○AWS S3 Objectsタブ
ファイルのアップロード(ローカル→S3)とプレビューの閲覧ができます。

20100916_9

2010年9月 7日 (火)

Apexで承認プロセスを操作するには?

有効な承認プロセスに対して、Apexから承認申請や承認/却下を行うことができます。

承認申請はApproval.ProcessSubmitRequestクラスで行います。
ソースコードはこんな感じ↓

// プロセスの作成
Approval.ProcessSubmitRequest psr
= new Approval.ProcessSubmitRequest();

// 申請するオブジェクトの設定
psr.setObjectId(objectId);

// 次の承認者の設定(自動割当の場合はnull)
psr.setNextApproverIds(new Id[] {UserInfo.getUserId()});

// プロセス実行
Approval.ProcessResult submitResult = Approval.process(psr);

// 成功 or 失敗の確認
System.assert(submitResult.isSuccess());

// 状態の確認
// Pending:未承認、Approved:承認済み、
// Rejected:却下、 Removed:取消済み
System.assertEquals(
'Pending', submitResult.getInstanceStatus());

// 承認申請により作成された
// ProcessInstanceWorkitemオブジェクトのIDを取得
// (承認申請すると、ProcessInstanceWorkitemオブジェクトに
// レコードが作成される)
List<Id> newWorkItemIds = submitResult.getNewWorkitemIds();

承認/却下はApproval.ProcessWorkitemRequestクラスで行います。
ソースコードはこんな感じ↓

// プロセスの作成
Approval.ProcessWorkitemRequest pwr
= new Approval.ProcessWorkitemRequest();

// 承認するProcessInstanceWorkitemオブジェクトのIDの設定
pwr.setWorkitemId(newWorkItemIds.get(0));

// 次の承認者の設定
// (自動割当や最終承認の場合はnull)
pwr.setNextApproverIds(new Id[] {UserInfo.getUserId()});

// アクションの設定
// Approval:承認、Reject:却下、
// Removed:削除<システム管理者のみ>
pwr.setAction('Approval');

// コメントの設定
pwr.setComments('コメント');

// プロセス実行
Approval.ProcessResult workitemResult
= Approval.process(pwr);
System.assert(workitemResult.isSuccess());
System.assertEquals(
'Approved', workitemResult.getInstanceStatus());

上の例では、ProcessInstanceWorkitemオブジェクトのIDを、
承認申請時の結果から取得していますが、SOQLで検索して取得する方法もあります

承認フローで利用するオブジェクトは、以下の4つです。
ProcessInstance:参照のみ可
ProcessInstanceHistory:アクセス不可
ProcessInstanceStep:参照のみ可
ProcessInstanceWorkitem:参照、更新、削除のみ可

どのオブジェクトに対してもレコードの作成ができないので、オブジェクトのレコード操作によって、申請や承認といった承認フローの操作をすることはできません

承認プロセスの操作はApproval.ProcessSubmitRequestクラスとApproval.ProcessWorkitemRequestクラスで行い、未承認オブジェクトや承認者などのデータ取得時に、これらのオブジェクトを利用します。

採用情報

株式会社フレクトでは、事業拡大のため、
・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