apexコアデベロッパーセミナー070726 配布用
DESCRIPTION
2007/07/26のコアデベロッパーセミナー(API, Sコントロール)の資料ですTRANSCRIPT
株式会社セールスフォース ドットコム・ ビジネス開発本部
Apex プラットフォームコア開発者向けセミナー
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
2
このセミナーの意図– Apex プラットフォームを、もっと深く知っていただく– AppExchange アプリケーション開発のブートキャンプ– 開発者コミュニティの活性化
質問について– ご質問は随時承ります
はじめに
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
3
Agenda
なぜ Salesforce が「プラットフォーム」になったのか Apex アプリケーションについて Salesforce のデータベース Apex API & SOQL
S コントロールと AJAX Toolkit
コーディングにおける TIPS
Summary
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
4
Salesforce が「プラットフォーム」になった理由
当初:営業支援( SFA )のアプリをオンデマンドで提供 ビジネスとしての成功には、「共有された環境」と「自
由なカスタマイズ」を両立できるかどうかが大きな鍵だった
柔軟かつ強固なアプリケーションプラットフォームの設計で、顧客ごとのカスタマイズ用件を吸収
SFA 分野での成功を活かし、さらなる飛躍のため、温めてきたプラットフォーム層を解放
オンデマンドでのデータベース+アプリケーション実行環境への発展 Apex プラットフォーム
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
5
Apex プラットフォームの特徴:マルチテナント型アーキテクチャ
企業 A 企業 B 企業 C
Salesforce 組織 A
Salesforce 組織 B
Salesforce 組織 C
ユーザ
管理者
ユーザ
管理者
ユーザ
管理者
企業 A
企業 B
企業 C
Salesforce 組織 A
Salesforce 組織 B
Salesforce 組織 C
申し込んだ企業にそれぞれ仮想的なデータベースインスタン申し込んだ企業にそれぞれ仮想的なデータベースインスタンス(ス( SalesforceSalesforce 組織)が割り与えられる組織)が割り与えられる
データベースのスキーマ(テーブル構成)やレコード情報はデータベースのスキーマ(テーブル構成)やレコード情報はそれぞれの企業ごとにプライベートに隔離それぞれの企業ごとにプライベートに隔離
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
6
Apex アプリケーションについて
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
7
Apex アプリケーションの分類
SalesforceSalesforce 上ですべて上ですべて動作するアプリケー動作するアプリケーションション
外部の外部の WebWeb サイトかサイトからら APIAPI を介して連携すを介して連携するアプリケーションるアプリケーション
Salesforceネイティブ
オンデマンド連携
クライアント連携
クライアント端末やイクライアント端末やイントラネットからントラネットから APIAPI
を介して連携するアプを介して連携するアプリケーションリケーション
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
8
Salesforce ネイティブアプリケーションの特徴
SalesforceSalesforce 外部のサーバやプログラムを必要としない外部のサーバやプログラムを必要としない– ユーザの導入が容易ユーザの導入が容易
運用やスケーラビリティに気を使う必要がない運用やスケーラビリティに気を使う必要がない– サービス提供に関する固定コストが発生しないサービス提供に関する固定コストが発生しない
– サービス拡大時の追加投資も必要なしサービス拡大時の追加投資も必要なし
– サービスレベルがサービスレベルが SalesforceSalesforce と同等に保証されると同等に保証される
多彩なアプリケーションの可能性多彩なアプリケーションの可能性– SS コントロールとコントロールと Apex APIApex API を使えば、作成できるアプリケーシを使えば、作成できるアプリケーシ
ョンの幅はかなり大きいョンの幅はかなり大きい
<今回の内容はこの分類のアプリケーションの構築方法が中心>
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
9
Salesforce のデータベース
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
10
Salesforce の標準データモデル
Salesforce は「企業アプリケーション」のためのプラットフォーム 一般的な企業活動に必要なデータモデルは、すでに標準で登録済み
– 自社の営業社員、従業員、スタッフ ユーザ (User)
– 顧客企業 取引先( Account )– 顧客企業の従業員 取引先責任者( Contact )– スケジュール、活動履歴 行動予定( Event )、 TODO ( Task )
営業支援、マーケティング用途のためのデータモデル– 見込み客 リード( Lead )– 案件情報 商談( Opportunity )
サポートサービスのためのデータモデル– 問い合わせ ケース( Case )– FAQ 情報 ソリューション( Solution )
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
11
標準データモデルの関連図(抜粋)
取引先責任者取引先責任者ContactContact
取引先取引先AccountAccount
商談商談OpportunityOpportunity
ユーザユーザUserUser
OwnerCreatedByLastModifiedBy
ToDoToDo
TaskTask行動行動
EventEvent
Who/What
Tasks/Events/OpenActivities/ActivityHistories
Account
Opportunities
Contacts
Account
※ 詳細は Appendix を参照
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
12
データベース・スキーマの拡張
アプリケーション開発者が独自に必要なデータモデルを追加構築可能– 独自の「テーブル(表)」を追加できる
– 既存のテーブルに新しい「カラム(列)」を追加できる
– テーブル間に任意の「リレーション(関連)」を定義できる
従業員従業員部署部署部署
従業員 部下
上司
•所在地所在地•コストセンコストセン
ターター
•従業員番号従業員番号•入社日入社日•年俸年俸
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
13
用語の整理
RDB における「テーブル(表)」 Salesforce では 「オブジェクト」
RDB における「カラム(列)」 Salesforce では 「項目(フィールド)」
標準で定義されているテーブル( Account, Contact など)「標準オブジェクト」
アプリケーション開発者が追加で定義したテーブル「カスタムオブジェクト」
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
14
カスタムオブジェクトの定義
管理者が Salesforce にログインし、ブラウザ上で定義する– 設定 開発 カスタムオブジェクト 新規カスタムオブジェ
クト
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
15
オブジェクト ID
レコードには常に一意のオブジェクト ID が付与される– RDB における主キー( Primary Key )に相当
– 15桁( or 18桁)の英数字
– 詳細画面の URL に表示される
– 実は全 Salesforce 内で一意になる
関連(リレーション)は参照するレコードの ID をたどることによって実現
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
16
リレーションと親子関係
A が Bを参照しているとき– B は A の「親」であり、 A は B の「子」になっている
– A と B の関係は多:1
標準オブジェクトのリレーションの例– 「取引先」は「取引先責任者」の親
取引先責任者取引先責任者ContactContact
取引先取引先AccountAccount
Contacts
Account
親子
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
17
Apex API & SOQL
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
18
Apex API と SOQL
Apex API : Salesforce 内のデータベースへのアクセス手段– データベースの検索・更新・作成・削除
– Web サービス標準に準拠( SOAP 、 WSDL )
– 多彩な言語環境から利用可能• Java /.NET / JavaScript / PHP/ Ruby on Rails…
SOQL : レコード検索のための問い合わせ言語– SOQL : Sforce Object Query Language
– Apex API の検索処理におけるメッセージ文として利用される
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
19
Apex API のメソッド種類
メソッド種類
メソッド名
ログイン login
検索 query, queryMore, retrieve, search, queryAll
データ処理 create, update, delete, upsert, undelete
SFDC処理 convertLead, merge, process
同期 getUpdated, getDeleted
定義情報 describeGlobal, describeSObject, describeLayout, describeTabs, describeSoftphoneLayout
ユーティリティ
getServerTimestamp, getUserInfo, setPassword, resetPassword
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
20
SOQL
SQL に似たクエリ記述文
テーブルをまたいだ検索 (SOQL-Relationship)
SELECT Account.Id, Account.Name, (SELECT Contact.FirstName, Contact.LastName FROM Account.Contacts)FROM Account
SELECT Id, Name FROM AccountWHERE BillingState = '東京都 'LIMIT 10
SELECT Contact.Id, Contact.FirstName, Contact.LastName, Account.Id, Account.NameFROM Contact
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
21
リレーションシップ・クエリ
複数テーブルをまたがる問い合わせ( SQL の JOIN に相当)
親子のリレーションをたどってレコードを検索– 親:最大 5階層、子:最大1階層
商談商談OpportunityOpportunity
行動行動EventEvent
取引先取引先AccountAccount
ユーザユーザUserUser
Owner AccountEvents
親1階層親2階層 子1階層
SELECT Id, Name, Account.Id, Account.Name, Account.Owner.Id, Account.Owner.Name, (SELECT Id, Subject FROM Events)FROM Opportunity
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
22
条件( WHERE句)による絞込み
サポートしている比較演算子=, !=, <, <=, >, >=, LIKE, IN, NOT IN, INCLUDES, EXCLUDES
親レコードの項目でも条件指定が可能– 例:所有者名が「鈴木」である商談のみ表示
子リレーションのレコードセットの絞込みも可能
SELECT Name FROM Opportunity WHERE Owner.Name = ‘鈴木’
SELECT Name, (SELECT FirstName FROM Contacts WHERE CreatedDate = THIS_MONTH)FROM Account
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
23
Count() 関数、 ORDER BY 、 LIMIT句
件数のみを取得したい場合、 count() 関数を利用
ORDER BY でレコードを整列、 LIMIT でレコード数上限指定
ORDER BY, LIMIT は子リレーションにも適用可能
SELECT count() FROM Opportunity WHERE CloseDate = THIS_MONTH AND Amount >= 1000000
SELECT Name, Amount, StageName FROM Opportunity ORDER BY CloseDate DESCLIMIT 5
SELECT Name, Amount, StageName, (SELECT CreatedDate FROM OpportunityHistories ORDER BY CreatedDate DESC LIMIT 5)FROM Opportunity
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
24
カスタムオブジェクトと Apex API
標準オブジェクト、項目の場合– API参照名 = オブジェクト(項目)名
カスタムオブジェクト、項目の場合– API参照名 = オブジェクト(項目)名+’__c’ ( アンダースコア
2 つ )
– リレーションの API参照名 = リレーション名+’__r’SELECT Id, Name, Hiredate__c, Salary__c, Department__r.Id, Department__r.NameFROM Employee__c
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
25
標準項目
カスタムオブジェクト定義時に自動的に作成される標準項目
表示ラベル 項目名オブジェクト ID Id
オブジェクト名 Name
作成日 CreatedDate
作成者 CreatedById (項目名)、 CreatedBy (リレーション名)
所有者 OwnerId (項目名 ) 、 Owner (リレーション名)
最終更新日 LastModifiedDate
最終更新者 LastModifiedById (項目名)、 LastModifiedBy (リレーション名)
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
26
カスタムオブジェクトでの問い合わせの例
従業員従業員Employee__cEmployee__c
部署部署Department__cDepartment__c
Department__r
Employees__r
Manager__r
Workers__r
SELECT Name, Hiredate__c FROM Employee__cWHERE Department__r.Name = ‘ 営業部’
SELECT Name, Salary__c FROM Employee__cWHERE Manager__c = ‘a0270000003lVks’
SELECT Name, Location__c, (SELECT Name FROM Employees__r)FROM Department__cWHERE Name = ‘ 営業部’
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
27
レコードの共有設定とアクセスコントロール
通常カスタムオブジェクトを作成したときは、組織内の全ユーザがレコードを参照・更新可能になっている– 誰でもレコードの上書き更新ができてしまう状態
オブジェクトのデフォルトの共有設定を「非公開」に設定できる– レコードを所有している本人(およびスーパバイザ)しか参照も更新もできないようになる
アクセスさせたいレコード情報に対してのみ個別で共有を許可させる– <注意>個別にアクセス制御を「厳しく」することはできません!!
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
28
デフォルトの共有設定の変更
(1) (2)
(3)
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
29
Apex API を利用したレコード個別の共有設定
オブジェクトの共有設定を「非公開」あるいは「公開/参照のみ」とすると、データベース内に「 ( オブジェクト名 )__Share 」というオブジェクトが自動的に追加される
このオブジェクトにアクセスコントロール設定を追加していく– 例:
ユーザ ID ‘005700000011raw’ に対してレコード ID ’ a0370000004clVH’ に対する参照権限を与える
var aci = new sforce.SObject('Employee__Share');aci.ParentId = 'a0370000004clVH'; // 対象となるレコードの IDaci.UserOrGroupId = '005700000011raw'; // 権限を与えるユーザのIDaci.AccessLevel = 'Read'; // 読み取り権限のみsforce.connection.create([aci]);
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
30
項目の更新履歴
カスタムオブジェクトの作成時に「項目履歴管理」をチェックしておくと、レコードの更新が記録される– データベース内に「 ( オブジェクト名 )__History 」というオブ
ジェクトが自動的に追加される
例) ある従業員の給与の変更履歴を調べるSELECT CreatedDate, Field, OldValue, NewValueFROM Employee__HistoryWHERE ParentId = 'a0370000004clVH' // 従業員のレコード IDAND Field = 'Salary__c'
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
31
S コントロールと AJAX Toolkit
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
32
S コントロール
ユーザインターフェースを記述する HTML コンポーネント
HTML+JavaScript で画面を記述
例:例:Google Maps Google Maps 上に上に取引先データの住所位置取引先データの住所位置をマッピングして表示をマッピングして表示
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
33
AJAX Toolkit
S コントロールから Apex API にアクセスするためのJavaScript で書かれたツールキット
利用には S コントロール内に指定の JavaScript ライブラリを読み込む記述を追加するだけ
<html> <head> <script type="text/javascript" src="/soap/ajax/9.0/connection.js"></script> </head>…
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
34
S コントロール + AJAX Toolkit のアーキテクチャ
4. AJAX によるAPI リクエストの送信
AJAX Toolkit
S コントロールApex API
Salesforce データベース
1. S コントロール内の HTML+JavaScript をダウンロード
Web ブラウザ
ユーザ
2.スクリプトの実行&描画処理
5.検索、更新などの DB処理
3.ユーザ操作などのイベント
6.画面の再描画
標準オブジェクト &カスタムオブジェクト
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
35
例) Hello World
<html> <head> <script type="text/javascript" src="/soap/ajax/9.0/connection.js"></script> <script type="text/javascript">window.onload = function() { document.body.innerHTML = '<H1>Hello, ' + sforce.connection.getUserInfo().userFullName + '</H1>';} </script> </head> <body></body></html>
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
36
例) 取引先を検索、テーブルで一覧表示
<html> <head> <script type="text/javascript" src="/soap/ajax/9.0/connection.js"></script> <script type="text/javascript">function queryAccount() { var searchStr = document.getElementById('searchStr').value; var accounts = sforce.connection.query( "SELECT Id, Name FROM Account WHERE Name LIKE '%"+searchStr+"%'" ).getArray('records');
var html = '<table border="1">'; for (var i=0; i<accounts.length; i++) { html += '<tr><td>'+accounts[i].Id+'</td>'+ ' <td>'+accounts[i].Name+'</td>'+ '</tr>'; } html += '</table>'; document.getElementById('output').innerHTML = html;} </script> </head> <body> <input type="text" id="searchStr"> <input type="button" value="検索 " onclick="queryAccount()"> <div id="output"></div> </body></html>
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
37
Google Maps とのマッシュアップ
地図情報に取引先情報を重ね表示する S コントロール チュートリアル
– Apex Developer Network ブログからアクセス
– http://adnblog.salesforce.co.jp/2007/04/post_b5a4.html
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
38
コーディングにおける TIPS
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
39
同期リクエストと非同期リクエスト
AJAX Toolkit の API呼び出しでは、同期および非同期リクエストの選択が可能– 同期 サーバから値が返却されるまで処理がストップする
– 非同期 サーバから返却された値を指定したコールバック関数が受け取る
同期
非同期
var result = sforce.connection.query("SELECT Id, Name FROM Account");
sforce.connection.query( "SELECT Id, Name FROM Account", { onSuccess : handleResult, onFailure : handleError });
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
40
どちらが望ましい?
同期レスポンス待ちの間、ユーザの操作をブロックさせないためには、実アプリケーションではできるだけ非同期リクエストがよい
同期リクエストの利用は API テスト時、あるいは時間のかからない単純な操作のみに限定する
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
41
オープンソース AJAX ライブラリの利用
AJAX の画面描画記述は煩雑になりがち 既存の JavaScript UI ライブラリを利用して、アプリケーショ
ンのコードが複雑になるのを回避する
Salesforce は AJAX 用ライブラリとして Dojo Toolkit (http://dojotoolkit.org ) を公式にホスティングしている
S コントロールに Dojo Toolkit を読み込む方法<html> <head> <script type="text/javascript" src="/js/dojo/0.4.1/dojo.js"></script> </head>…
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
42
Dojo Toolkit の利用例
SWOT 分析表( AppExchange公開済)
シンプル掲示板
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
43
S コントロールからの画像ファイルの利用
画像をドキュメントファイルとしてアップロード ドキュメントの参照 URL をコピーして HTML に貼り付
け– 例
JavaScript ファイル、 CSS ファイルなども同様 AppExchange にアップロードする時には、忘れずにパ
ッケージ内容に参照しているドキュメントを含める
<img src="/servlet/servlet.FileDownload?file=0157000000084Un" >
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
44
S コントロールを含む画面遷移
標準画面 カスタム S コントロール– カスタムボタン、カスタムリンクなどを利用– 「差し込み項目」を利用してパラメータの受け取りが可能
カスタム S コントロール カスタム S コントロール– LINKTO, URLFOR 関数の利用
カスタム S コントロール 標準画面– LINKTO, URLFOR 関数の利用– describeSObject 関数で遷移先の URL テンプレートを取得
• urlDetail / urlEdit / urlNew
– レコードの詳細画面なら、「” /”+{ オブジェクト ID} 」 へ URLリダイレクト
• 環境によっては URL を変更している可能性があり、注意が必要
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
45
差し込み項目でパラメータ受け取り
{!Account.Id}
株式会社四川商会
差し込み項目
標準のレコード詳細画面
カスタムボタン / カスタムリンク
カスタム S コントロール
展開された値
{!Account.Name}
0017000000Kh6OS
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
46
URLFOR 関数による画面遷移
S コントロールの差し込み項目内で URLFOR 関数を用いて、遷移先のURL を取得– 例) HelloWorld カスタム S コントロールの URL を取得して画面を遷移
– 例) 取引先の標準のレコードの編集画面に遷移
難点: API で取得した値を埋め込めないため、使えるシーンが限られる どうしても URL を直に生成する実装になってしまう
あまり遷移を必要としないアプリケーション設計に…
location.href = '{!URLFOR($SControl.HelloWorld)}'
parent.location.href = '{!URLFOR($Action.Account.Edit, Account.Id)}'
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
47
Summary
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
48
Apex アプリケーション開発について
Salesforce ネイティブ環境のみでも、複雑なアプリケーション構築が可能– S コントロールと Apex API の組み合わせ– 運用開始後のスケーラビリティは一目を置くべき
JavaScript による開発 リッチなユーザインターフェース– 既存の Web アプリケーション開発より若干難易度が高い– UI ライブラリを活用して開発負荷を軽減– その他にも Flex などの選択肢
オンデマンド連携のアプリケーション– 外部サービスとして連携することの必然性とその付加価値– サービスレベルを均一にする努力
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
49
Apex Platform Development Partner Program
Apex プラットフォーム上でのアプリケーション開発能力のあるパートナーを認定する制度
要件– AppExchange アプリケーションを 1 つ以上公開
– 指定数以上の認定コンサルタント( Apex )
メリット– アプリケーションのアイディアを共有します
– 個別案件などの獲得につながります
詳細はお問い合わせください
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
50
Appendix
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
51
Appendix : AJAX Tools
Apex API をオンライン上でテスト可能な開発者向けアプリケーション– S コントロールの編集、 SOQL の実行、
シェルによる対話的な API 実行 AppExchange サイトから組織ごとに
インストールして使用する– AppExchange サイトから、「 AJAX
Tools 」で検索 注) 一部機能は IE で動かない場合あ
り、 Firefox を推奨 AJAX Tools は S コントロールと AJAX
Toolkit を使って作られたネイティブアプリ– 名前が似ていて混乱しやすいので注意
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
52
Appendix : 開発用サンプルデータセット
API や SOQL を試そうとしても…
– そもそもデータベースにレコードが入っていないとあまり意味がない
デモや開発テストの際に必要になるダミーのデータを Salesforce にロードするためのアプリケーション – AppExchange サイトからインストール可
能
– パッケージに含まれるデータ: 取引先、取引先責任者、商談、リード、ケース、行動、 ToDo など約 700 件
インストール後、ボタンクリックひとつで自動的にレコードがデータベースに登録される
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
53
Appendix : 「ユーザ (User) 」
Salesforce 組織にアクセスするユーザの情報を管理– ユーザ名とパスワードが付与され、 Salesforce にログインが可
能
– 営業支援の用途の場合 「ユーザ」=自社の営業マン
初期サインアップ時は管理ユーザの情報のみ登録されている– 管理者がユーザを必要に応じて追加する
ほぼすべてのオブジェクトに対して、レコードの「作成者」「所有者」「最終更新者」という形で関連付けられる
ユーザユーザUserUser
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
54
Appendix : 「取引先 (Account) 」
顧客企業/事業者の情報を管理 取引先名、電話番号、住所(請求先/発送先)、従業員数などの企業情報を格納
SOQL の例
取引先取引先AccountAccount
SELECT Id, Name, Phone, NumberOfEmployees, BillingState, BillingCity, BillingStreetFROM Account
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
55
Appendix : 「取引先責任者 (Contact) 」
取引先に所属している個人の情報を管理 氏名、役職、電話番号、 E メールなどの個人情報を格納 所属している取引先の情報が親として関連付けられる SOQL の例
SELECT LastName, FirstName, Email, Account.Name, Account.PhoneFROM Contact
取引先責任者取引先責任者ContactContact
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
56
Appendix : 「商談 (Opportunity) 」
現在進行中の(あるいは完了した)案件情報を管理 現在のフェーズや商談全体の金額などの情報を格納 商談に関連している取引先が参照関係で指定できる SOQL の例
SELECT Id, Name, StageName, Amount, Account.Name, Account.Phone FROM Opportunity
商談商談OpportunityOpportunity
Confidential documents©Copyright 2000-2007 salesforce.com,inc. All rights reserved.
57
Appendix : 「 ToDo (Task) 」 および 「行動 (Event) 」
行動 (Event) – カレンダー上のスケジュール情報
ToDo(Task) – 今後遂行すべき業務内容 (ToDo) の情報
– すでに終了した活動の履歴情報(訪問結果、メール送信など)
2 つまとめて「活動 (Activity) 」情報として取り扱われる
「活動の記録」をサポートするすべてのオブジェクトに関連付けが可能
ToDoToDo
TaskTask行動行動
EventEvent