Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
-
Upload
takahiro-yonei -
Category
Technology
-
view
112 -
download
3
Transcript of Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)
#salesforcedevjp
Salesforce DUG [Tokyo] Meetup #9
(リリースノートでも読んでみよう)
TAOドライブ株式会社 Takahiro Yonei (@yonet77)
#salesforcedevjp
n 新しく追加されたリソース
ü Batch ü SObject Tree
API - 1. REST API
クライアントとサーバ間の往復回数を最小限に抑えることでアプリケーションの パフォーマンスを高める
(リリースノートより抜粋)
#salesforcedevjp
n Batch
API - 1. REST API
URI : /v34.0/composite/batch
{ "batchRequests" : [{ "method" : "PATCH", "url" : "v34.0/sobjects/account/001D000000K0fXOIAZ", "richInput" : {"Name" : "AccountNewName"} },{ "method" : "GET", "url" : "v34.0/sobjects/account/001D000000K0fXOIAZ" }] }
request body :
複数の 要求を まとめて 送信
※FacebookのBatch Requestsに類似した形式… https://developers.facebook.com/docs/graph-api/making-multiple-requests
#salesforcedevjp
n Batch
API - 1. REST API
{ "hasErrors" : false, "results" : [{ "statusCode" : 204, "result" : null },{ "statusCode" : 200, "result" : { (Account attributes) } }] }
response body :
要求の順番で結果が得られる
#salesforcedevjp
n Batch (気をつけるべき特徴)
ü 一度に送信できる要求は、最大25件 ü 25件を超えるとエラーが戻ってくる
ü API消費数は、要求数 + 1
API - 1. REST API
result : [ { "errorCode" : "OPERATION_TOO_LARGE", "message" : "Only 25 requests are allowed in a single batch operation" } ]
#salesforcedevjp
n SObject Tree ü (パイロットプログラムで使用可能)
ü SObject Treeリソースを使用すると、ルートレコードタイプを共有する複数のsObjectツリーを作成できる。
ü sObjectツリーは、同じルートレコードを持つネストされた親-子レコードのコレクションである。 → 親子関係のレコードを一度に作れる!
ü 1つの要求に最大で200件のレコードを格納できる。
API - 1. REST API
#salesforcedevjp
n SObject Tree
API - 1. REST API
{ "records" :[{ "attributes" : {"type" : "Account", "referenceId" : "ref1"}, "name" : "SampleAccount", "Contacts" : { "records" : [{ "attributes" : {"type" : "Contact", "referenceId" : "ref2"}, "lastname" : "Smith", },{ "attributes" : {"type" : "Contact", "referenceId" : "ref3"}, "lastname" : "Evans", }] } },{ "attributes" : {"type" : "Account", "referenceId" : "ref4"}, "name" : "SampleAccount2", }] }
レコードの種類とレコードの参照Idを指定
#salesforcedevjp
n 更新されたメタデータコール ü deploy() → 新しいリリースオプション testLevel が追加 → deploy() コールで実行するテストを制御
Ø RunLocalTests - インストール済の管理パッケージから発生したテストを除き、組織のすべてのテストを実行する
API - 2. Metadata API
パッケージをカスタマイズする場合には重宝するリリースオプション!
#salesforcedevjp
n 新しいメタデータ型 ü CustomMetadata → プラットフォーム開発者は一般に、カスタム設定やカスタムオブジェクトを使用して設定を定義し、再利用可能なアプリケーションのコンポーネントや機能を作成します。
→ ただし、これらのエンティティのレコードがメタデータではなくデータのため、これらの型を管理しやすい方法でパッケージ化、リリース、アップグレード、カスタマイズすることができません。
→ カスタムメタデータ型を利用すると、メタデータの独自の型で定義され駆動するアプリケーションを構築できます。
API - 2. Metadata API
(リリースノートより抜粋)
#salesforcedevjp
API - 2. Metadata API n Custom Metadata 従来: - データの型(カスタムオブジェクトやカスタムフィールドなど)はパッケージに含めることができた
- 定義した型に合わせたデータ(レコード)は、パッケージに含められない..
#salesforcedevjp
API - 2. Metadata API n Custom Metadata これから: - データの型(カスタムオブジェクトやカスタムフィールドなど)と、そのデータ(レコード)をまとめてパッケージに含めて配布することができる
#salesforcedevjp
API - 2. Metadata API n Custom Metadata 詳細は以下のブログで… - Introducing custom metadata types: the app configuration engine for Force.com https://developer.salesforce.com/blogs/engineering/2015/04/custom-metadata-types-ga.html - How to use custom metadata types to save years of development on app configurations https://developer.salesforce.com/blogs/engineering/2015/05/how-to-use-custom-metadata-types.html
#salesforcedevjp
API - 2. Metadata API n Custom Metadata 【手順】
1. カスタムメタデータ型を定義する • カスタムメタデータ用のxmlファイルを作成する • カスタムオブジェクトの定義とほぼ類似
2. カスタムメタデータを用意する • カスタムメタデータ型に合わせたデータのxmlファイルを作成する
3. Salesforce環境にデプロイする • 移行ツール(ant-salesforce.jar)を使ってデプロイする
サンプルファイル等 https://gist.github.com/takahiro-yonei/54a6e4f32ad481a9d91b
#salesforcedevjp
API - 2. Metadata API n Custom Metadata(推奨する用法)
l インストール先の環境でも変更されたくない設定
→ Custom Metadataを使って定義&管理パッケージで配布する ü データをパッケージに含めて配布できる - インストールスクリプトとか面倒な処理を省ける - パッケージアップグレードでのみ変更できる
ü カスタム設定と違って、メタデータなのでApexから変更できない ü Custom Metadataを操作するためのUIがない
Ø 自作してるヒトもいる -> https://github.com/jbpringuey/SFDCConfig
l インストール先の環境で変更してもよい設定 → Custom Metadataを使って定義&非管理パッケージで配布する
ü インストール先の環境で、変更できる(らしい)