LoginSignup
2
5

More than 3 years have passed since last update.

SOAP API(Integratoin Architecutre デザイナー)

Last updated at Posted at 2020-02-05

SOAP API

image.png

特徴

  • リモートサイトからSalesforceの標準APIを呼び出す為のインバウンド連携
  • 設計パターンの「リモートプロセス呼び出し-要求と応答(同期処理)」に該当する
  • Salesforceが提供する標準APIを利用する為、仕様に基づけば即時連携が可能となる
  • 認証は主にセッションID(初回ログイン時のセッションIDを再利用する)
  • 返却形式はXML
  • XMLによりデータを構造化で表現出来る為、親子関係のデータの一括更新処理が可能
  • SalesforceからWSDLをダウンロードして、リモートサイトでプロキシクラス及びコールが実装可能
    • EnterpriseWSDLは、全てのオブジェクト情報が入っており、リモートサイト側でタイプセーフが保証される。しかし、Salesforceの変更に伴いリモートサイト側のWSDL最新化が必要というトレードオフ関係。(WSDLの読み直し)
    • PartnerWSDLは、認証機能、基底クラス(SObjet型)、メタデータのみ提供される。その為、リモートサイト側でタイプセーフ実装は不可。リフレクションを活用して動的プログラミングが必要となる。ただし、Salesforce側の変更には強い。
    • 設定|インテグレーション|API からWSDLのダウンロードが可能 image.png
  • 増分データ取得が可能なgetUpdatedおよびgetDeletedメソッドが提供されているので、例えば24時間以内に更新されたデータを取得可能

セキュリティ

  • データ
    • ログイン時のユーザに対応したSalesforce側のデータセキュリティが働く(オブジェクト権限、項目レベルセキュリティなど)
  • ネットワーク
    • TLSプロトコルが必須
    • Salesforceネットワーク認証により接続可能な時間帯、プロファイルまたは組織全体でのIPアドレス範囲の制御が可能

サンプル

ConnectorConfig config = new ConnectorConfig();
config.setUsername(USERNAME);
// パスワード+APIトークンで認証キー
config.setPassword(PASSWORD + TOKEN);

// EnterpriseWSDLまたはPartinerWSDLによりConnectionクラスが変わる(下はEnterpriseWSDL)
EnterpriseConnection connection = Connector.newConnection(config);

Lead ld = new Lead();
ld.setName("TEST");
connection.create(new SObject[] {ld});

注意すべきガバナ制限

API参照名 制限 備考
login() 1 時間につき 1 ユーザあたり最大 3,600 コール 「Login Rate Exceeded」(ログイン数の制限を超えました。) が出る場合、初回ログイン時のセッションIDを使い回す事
create()
udpate()
最大作成レコード件数
最大更新レコード件数
1 回のコールで最大 200 個のレコードを追加・更新できます。200レコードを超えると操作全体が失敗します。
query() 取得レコード件数 1回のコールで最小200件から最大2000件まで取得可能

SOAPを選択するシナリオ

  • 50,000件以下のデータCRUD処理
    • ただし、シリアル処理になるので処理時間がかかる。かつ、1回のコールで処理できるデフォルトバッチサイズ(レコード件数)は500件。最小200件、最大2000件まで変更可能。アーキテクチャ選択の閾値とされる50,000件のデータを処理するのに最小で50000/2000=25回のSOAPコールが必要。
  • 親子関係のリレーションデータを一括処理する場合
  • タイプセーフな実装を行いたい場合(EnterpriseWSDL)
  • アウトバウンドでセキュリティポリシーとしてファイアウォール、プロキシが通過難しく、リモートサイトからコールインしてもらう場合
  • 24時間以内に更新されたような増分データを取得したい場合

リファレンス

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5