5. Apex プラットフォームの特徴:マルチテナント型アーキテクチャ 企業 A 企業 B 企業 C Salesforce 組織 A Salesforce 組織 B Salesforce 組織 C ユーザ 管理者 ユーザ 管理者 ユーザ 管理者 企業 A 企業 B 企業 C Salesforce 組織 A Salesforce 組織 B Salesforce 組織 C 申し込んだ企業にそれぞれ仮想的なデータベースインスタンス( Salesforce 組織)が割り与えられる データベースのスキーマ(テーブル構成)やレコード情報はそれぞれの企業ごとにプライベートに隔離
15. オブジェクト ID レコードには常に一意のオブジェクト ID が付与される RDB における主キー( Primary Key )に相当 15 桁( or 18 桁)の英数字 詳細画面の URL に表示される 実は全 Salesforce 内で一意になる 関連(リレーション)は参照するレコードの ID をたどることによって実現
16. リレーションと親子関係 A が B を参照しているとき B は A の「親」であり、 A は B の「子」になっている A と B の関係は多:1 標準オブジェクトのリレーションの例 「取引先」は「取引先責任者」の親 取引先責任者 Contact Contacts Account 親 子 取引先 Account
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
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 DESC LIMIT 5 SELECT Name, Amount, StageName, (SELECT CreatedDate FROM OpportunityHistories ORDER BY CreatedDate DESC LIMIT 5) FROM Opportunity
24. カスタムオブジェクトと Apex API 標準オブジェクト、項目の場合 API 参照名 = オブジェクト(項目)名 カスタムオブジェクト、項目の場合 API 参照名 = オブジェクト(項目)名 +’__c’ ( アンダースコア 2 つ ) リレーションの API 参照名 = リレーション名 +’__r’ SELECT Id, Name, Hiredate__c, Salary__c, Department__r.Id, Department__r.Name FROM Employee__c
26. カスタムオブジェクトでの問い合わせの例 部署 Department__c Department__r Employees__r Manager__r Workers__r SELECT Name, Hiredate__c FROM Employee__c WHERE Department__r.Name = ‘ 営業部’ SELECT Name, Salary__c FROM Employee__c WHERE Manager__c = ‘ a0270000003lVks ’ SELECT Name, Location__c, (SELECT Name FROM Employees__r) FROM Department__c WHERE Name = ‘ 営業部’ 従業員 Employee__c