セールスフォース その1

「セールスフォースに接続せよ」というミッションが来たので、調査してみた。

SalesForce
http://www.salesforce.com/jp/


仕事の要件としては、
・画面の入力値を、セールスフォースに格納する。
・格納するときに、メールを送る
・メールにURLを書いておき、そのURLを押すと再度画面が表示される。
 URLにキー値を入れておき、そのキーを使ってセールスフォースからデータを持ってきて、画面に表示する。
というもの。


そもそもセールスフォースというものを知らなかったので、まずそこの調査から。

セールスフォースとは?

今はやりのSaaS型のCRMで、顧客情報や折衝履歴を入力したり、メールを一斉送信したりする機能がついている。
ただそれだけではなく、自由にカスタマイズする為の機能がいくつかある。
セールスフォース上に新しいデータ項目を追加したり、画面を追加したりできる。あとWebサービスAPIを利用して、データのやり取りを行える。

まずは登録

SaaSということで、開発するにはセールスフォースのサーバを利用するしかない。
幸いにも開発者用のサイトは、アカウント登録すれば無料で30日間使える。
登録は、https://www.salesforce.com/jp/form/trial/freetrial.jspから。
登録すると、フル機能が使えるようになる。

セールスフォースにデータを格納する

まずはじめに、Javaのデータクラス設計と同じようにして、どういうデータ構造にするか決める。
このデータ構造のことを、「カスタムオブジェクト」という。

カスタムオブジェクトとは、SalesForceの組織に固有のデータを保存できるデータベーステーブルのことです。カスタムオブジェクトを使用して、Salesforce機能を拡張したり、新しいアプリケーション機能を開発できます。

このカスタムオブジェクトには、メンバ変数の型として

自動採番
数式
積み上げ集計
参照関係
主従関係
URL
チェックボックス
テキスト
テキストエリア
パーセント
ロングテキストエリア
数値
選択リスト
選択リスト(複数選択)
通貨
電子メール
電話
日付
日付/時間

がつかえる。
参照関係、主従関係は他のデータとのリレーションシップで、チェックボックスや選択リストというのは、これはUIにどう表示されるかを決められる。
データ型と表示方法を同時に決めるというのは、ちょっとキモいがまあそういう仕様だと割り切る。


セールスフォースの画面右上の「設定」>左側ツリーの「作成」>オブジェクトを選択すると、自分で作ったカスタムオブジェクトの一覧が表示される。
画面中央の「新規カスタムオブジェクト」を押すと、新たにカスタムオブジェクトを追加出来る。


入力必須項目は「表示ラベル」「オブジェクト名」「レコード名」「データ型」。
表示ラベルは、画面に表示するときの名前なので、適切な日本語でつける。オブジェクト名は、Javaでいうクラス名に相当するので、それっぽい名前で。
レコード名は、カスタムオブジェクトがデフォルトで持つ「Name」というメンバ変数の表示名。
データ型は「テキスト」と「自動採番」が選択できる。


注意点としては、レコード名というのはユニークキーでは無い、というところ。


自動採番だといかにもユニークっぽいのだが、どうもそうではないらしい。代わりに、カスタムオブジェクトを作成すると、
「id」という名前のメンバ変数が自動的に作成される。
この変数は画面上は表に出てくることはなく、新規に画面から入力したり、Webサービス経由でデータを作成したときに自動的にidが振られる。
また採番されるidは、すべてのオブジェクトに対して一意になっているようだ。(クラスごとにユニークではなく、アプリケーションレベルでユニーク)
従って、このidさえ分かればデータを一意に特定できる。後述するが、Webサービス経由でデータを操作する場合も基本はこのidをベースに行う。
逆にこれさえ分かれば、データ操作は楽勝。