Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)

20
#salesforcedevjp Salesforce DUG [Tokyo] Meetup #9 (リリースノートでも読んでみよう) TAOドライブ株式会社 Takahiro Yonei (@yonet77)

Transcript of Salesforce DUG Japan Meetup#9(REST API, Metadata API etc)

#salesforcedevjp

Salesforce DUG [Tokyo] Meetup #9

(リリースノートでも読んでみよう)

TAOドライブ株式会社 Takahiro Yonei (@yonet77)

#salesforcedevjp

Agenda

n API 1. REST API 2. Metadata API

#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

【参考】Custom Settings との比較

#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

(サンプル)カスタムメタデータの定義

#salesforcedevjp

API - 2. Metadata API n Custom Metadata

(サンプル)SOQLで参照可能 ※編集不可…

#salesforcedevjp

API - 2. Metadata API n Custom Metadata

(サンプル)パッケージに、カスタムメタデータとメタデータレコードを追加

#salesforcedevjp

API - 2. Metadata API n Custom Metadata(推奨する用法)

l  インストール先の環境でも変更されたくない設定

→ Custom Metadataを使って定義&管理パッケージで配布する ü  データをパッケージに含めて配布できる -  インストールスクリプトとか面倒な処理を省ける -  パッケージアップグレードでのみ変更できる

ü  カスタム設定と違って、メタデータなのでApexから変更できない ü  Custom Metadataを操作するためのUIがない

Ø  自作してるヒトもいる -> https://github.com/jbpringuey/SFDCConfig

l  インストール先の環境で変更してもよい設定 → Custom Metadataを使って定義&非管理パッケージで配布する

ü  インストール先の環境で、変更できる(らしい)

#salesforcedevjp

END

Thank you !!