42.7. サポートされている Salesforce API


このコンポーネントは、次の Salesforce API をサポートしています

プロデューサーエンドポイントは、次の API を使用できます。ほとんどの API は一度に 1 つのレコードを処理しますが、Query API は複数のレコードを取得できます。

42.7.1. Rest API

operationName には以下を使用できます。

  • getVersions - サポートされている Salesforce REST API バージョンを取得します
  • getResources - 利用可能な Salesforce REST Resource エンドポイントを取得します
  • getGlobalObjects - 使用可能なすべての SObject タイプのメタデータを取得します
  • getBasicInfo - 特定の SObject タイプの基本的なメタデータを取得します
  • getDescription - 特定の SObject タイプの包括的なメタデータを取得します
  • getSObject - Salesforce ID を使用して SObject を取得します
  • createSObject - SObject を作成します
  • updateSObject - Id を使用して SObject を更新します
  • deleteSObject - Id を使用して SObject を削除します
  • getSObjectWithId - 外部 (ユーザー定義) id フィールドを使用して SObject を取得します
  • upsertSObject - 外部 ID を使用して SObject を更新または挿入します
  • deleteSObjectWithId - 外部 ID を使用して SObject を削除します
  • query - Salesforce SOQL クエリーを実行します
  • queryMore - クエリー API から返された結果リンクを使用して、より多くの結果を取得します (結果が多数の場合)。
  • search - Salesforce SOSL クエリーを実行します
  • 制限 - 組織 API の使用制限をフェッチする
  • recent - 最近のアイテムの取得
  • approval - 承認プロセスのために 1 つまたは複数のレコード (バッチ) を送信します
  • approvals - すべての承認プロセスのリストを取得します
  • composite - 関連する可能性のある最大 25 個の REST リクエストを送信し、個々のレスポンスを受け取ります。raw のコンポジットを無制限に使用することもできます。
  • composite-tree - 親子関係 (最大 5 レベル) を持つ最大 200 レコードを一度に作成します
  • composite-batch - リクエストの設定をバッチで送信します
  • compositeRetrieveSObjectCollections - 同じオブジェクトタイプの 1 つ以上のレコードを取得します。
  • compositeCreateSObjectCollections - 最大 200 レコードを追加し、SaveSObjectResult オブジェクトのリストを返します。
  • compositeUpdateSObjectCollections - 最大 200 レコードを更新し、SaveSObjectResult オブジェクトのリストを返します。
  • compositeUpsertSObjectCollections - 外部 ID フィールドに基づいて、最大 200 レコードを作成または更新 (アップサート) します。UpsertSObjectResult オブジェクトのリストを返します。
  • compositeDeleteSObjectCollections - 最大 200 レコードを削除し、SaveSObjectResult オブジェクトのリストを返します。
  • queryAll - SOQL クエリーを実行します。マージ (最大 3 つのレコードをレコードの 1 つにマージし、他のレコードを削除し、関連するすべてのレコードの親を変更) または削除のために削除された結果を返します。また、アーカイブされたタスクおよびイベントレコードに関する情報も返します。
  • getBlobField - 個々のレコードから指定された BLOB フィールドを取得します。
  • apexCall - ユーザー定義の APEX REST API 呼び出しを実行します。
  • raw - リクエストをセールスフォースに送信し、エンドポイント、パラメーター、本文などを完全に未加工で制御します.

たとえば、次のプロデューサーエンドポイントは upsertSObject API を使用し、sObjectIdName パラメーターで Name を外部 ID フィールドとして指定します。リクエストメッセージの本文は、maven プラグインを使用して生成された SObject DTO である必要があります。レスポンスメッセージは、既存のレコードが更新された場合は null になるか、新しいレコードの ID を持つ CreateSObjectResult、または新しいオブジェクトの作成中のエラーのリストのいずれかになります。

...to("salesforce:upsertSObject?sObjectIdName=Name")...

42.7.2. Bulk 2.0 API

Bulk 2.0 API には、元の Bulk API よりも単純化されたモデルがあります。これを使用して、大量のデータを Salesforce にすばやくロードしたり、大量のデータを Salesforce からクエリーしたりします。データは CSV 形式で提供する必要があります。Bulk 2.0 の最小 API バージョンは v41.0 です。一括クエリーの最小 API バージョンは v47.0 です。以下に示す DTO クラスは、org.apache.camel.component.salesforce.api.dto.bulkv2 パッケージからのものです。以下の操作がサポートされます。

  • bulk2CreateJob - 一括ジョブを作成します。メッセージボディーに Job のインスタンスを指定します。
  • bulk2GetJob - 既存のジョブを取得します。jobId パラメーターが必要です。
  • bulk2CreateBatch - CSV レコードのバッチをジョブに追加します。メッセージ本文に CSV データを指定します。最初の行にはヘッダーが含まれている必要があります。jobId パラメーターが必要です。
  • bulk2CloseJob - ジョブを閉じます。ジョブを処理または中止/削除するには、ジョブを閉じる必要があります。jobId パラメーターが必要です。
  • bulk2AbortJob - ジョブを中止します。jobId パラメーターが必要です。
  • bulk2DeleteJob - ジョブを削除します。jobId パラメーターが必要です。
  • bulk2GetSuccessfulResults - ジョブの成功結果を取得します。返されるメッセージボディーには、CSV データの InputStream が含まれます。jobId パラメーターが必要です。
  • bulk2GetFailedResults - ジョブの失敗した結果を取得します。返されるメッセージボディーには、CSV データの InputStream が含まれます。jobId パラメーターが必要です。
  • bulk2GetUnprocessedRecords - ジョブの未処理のレコードを取得します。返されるメッセージボディーには、CSV データの InputStream が含まれます。jobId パラメーターが必要です。
  • bulk2GetAllJobs - すべてのジョブを取得します。レスポンスボディは Jobs のインスタンスです。done プロパティーが false の場合、取得する追加のページがあり、nextRecordsUrl プロパティーには、後続の呼び出しで queryLocator パラメーターに設定される値が含まれます。
  • bulk2CreateQueryJob - 一括クエリージョブを作成します。メッセージ本文に QueryJob のインスタンスを指定します。
  • bulk2GetQueryJob - 一括クエリージョブを取得します。jobId パラメーターが必要です。
  • bulk2GetQueryJobResults - 一括クエリージョブの結果を取得します。jobId パラメーターが必要です。maxRecords および locator パラメーターを受け入れます。応答メッセージヘッダーには、Sforce-NumberOfRecords ヘッダーと Sforce-Locator ヘッダーが含まれます。Sforce-Locator の値は、locator パラメーターを介して後続の呼び出しに渡すことができます。
  • bulk2AbortQueryJob - 一括クエリージョブを中止します。jobId パラメーターが必要です。
  • bulk2DeleteQueryJob - 一括クエリージョブを削除します。jobId パラメーターが必要です。
  • bulk2GetAllQueryJobs - すべてのジョブを取得します。レスポンスボディは QueryJobs のインスタンスです。done プロパティーが false の場合、取得する追加のページがあり、nextRecordsUrl プロパティーには、後続の呼び出しで queryLocator パラメーターに設定される値が含まれます。

42.7.3. Rest Bulk (オリジナル) API

プロデューサーエンドポイントは、次の API を使用できます。すべてのジョブデータ形式、つまり xml、csv、zip/xml、および zip/csv がサポートされています。
リクエストとレスポンスは、ルートによってマーシャリング/マーシャリング解除する必要があります。通常、リクエストは CSV ファイルなどのストリームソースになります。
また、応答をファイルに保存して、要求と関連付けることもできます。

operationName には以下を使用できます。

  • createJob - Salesforce 一括ジョブを作成します。本文に JobInfo インスタンスを指定する必要があります。PK Chunking は、pkChunking* オプションを介してサポートされます。ここで 説明を参照してください。
  • getJob - Salesforce ID を使用してジョブを取得します
  • closeJob - ジョブを閉じます
  • abortJob - ジョブを中止します
  • createBatch - 一括ジョブ内でバッチを送信します
  • getBatch - Id を使用してバッチを取得します
  • getAllBatches - 一括ジョブ ID のすべてのバッチを取得します
  • getRequest - バッチのリクエストデータ (XML/CSV) を取得します
  • getResults - 完了時にバッチの結果を取得します
  • createBatchQuery - SOQL クエリーからバッチを作成します
  • getQueryResultIds - バッチクエリーの結果 ID のリストを取得します
  • getQueryResult - 結果 ID の結果を取得します
  • getRecentReports - Report List リソースに GET リクエストを送信して、最近表示したレポートを最大 200 件取得します
  • getReportDescription - レポート、レポートタイプ、およびレポートの関連メタデータを表形式、要約形式、またはマトリックス形式で取得します。
  • executeSyncReport - フィルターを変更して、または変更せずにレポートを同期的に実行し、最新の概要データを返します
  • executeAsyncReport - フィルターの有無にかかわらずレポートのインスタンスを非同期的に実行し、詳細の有無にかかわらず概要データを返します
  • getReportInstances - 非同期実行を要求したレポートのインスタンスのリストを返します。リスト内の各項目は、レポートの個別のインスタンスとして扱われます。
  • getReportResults : レポートの実行結果が含まれます。

たとえば、次のプロデューサーエンドポイントは、createBatch API を使用してジョブバッチを作成します。in メッセージには、InputStream に変換できる本文 (通常は、ファイルからの UTF-8 CSV または XML コンテンツなど) と、ジョブのヘッダーフィールド jobId およびジョブコンテンツタイプの contentType が含まれている必要があります。XML、CSV、ZIP_XML、または ZIP_CSV を指定できます。put メッセージの本文には、成功した場合は BatchInfo が含まれ、エラーが発生した場合は SalesforceException が出力されます。

...to("salesforce:createBatch")..

42.7.4. Rest Streaming API

コンシューマーエンドポイントは、ストリーミングエンドポイントに次の構文を使用して、作成/更新時に Salesforce 通知を受信できます。

トピックを作成してサブスクライブするには

from("salesforce:CamelTestTopic?notifyForFields=ALL&notifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...

既存のトピックをサブスクライブするには

from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...

42.7.5. プラットフォームイベント

プラットフォームイベントを発行するには、createSObject 操作を使用します。また、メッセージ本文を JSON 文字列またはキー値データを含む InputStream に設定します。その場合、sObjectName をイベントの API 名、またはイベントの適切なクラス名を持つ AbstractDTOBase から拡張されたクラスに設定する必要があります。

たとえば、DTO を使用すると、次のようになります。

class Order_Event__e extends AbstractDTOBase {
  @JsonProperty("OrderNumber")
  private String orderNumber;
  // ... other properties and getters/setters
}

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + exchange.getProperty(Exchange.TIMER_COUNTER);
        Order_Event__e event = new Order_Event__e();
        event.setOrderNumber(orderNumber);
        in.setBody(event);
    })
    .to("salesforce:createSObject");

または、JSON イベントデータを使用します。

from("timer:tick")
    .process(exchange -> {
        final Message in = exchange.getIn();
        String orderNumber = "ORD" + exchange.getProperty(Exchange.TIMER_COUNTER);
        in.setBody("{\"OrderNumber\":\"" + orderNumber + "\"}");
    })
    .to("salesforce:createSObject?sObjectName=Order_Event__e");

プラットフォームイベントを受信するには、プラットフォームイベントの API 名の前に event/ (または /event/) を付けたコンシューマーエンドポイントを使用します (例: salesforce:events/Order_Event__e)。そのエンドポイントから消費するプロセッサーは、rawPayload がそれぞれ false または true であるかに応じて、本文で org.apache.camel.component.salesforce.api.dto.PlatformEvent オブジェクトまたは org.cometd.bayeux.Message のいずれかを受け取ります。

たとえば、1 つのイベントを消費する最も単純な形式では、次のようになります。

PlatformEvent event = consumer.receiveBody("salesforce:event/Order_Event__e", PlatformEvent.class);

42.7.6. 変更データキャプチャイベント

一方で、Salesforce は、選択したオブジェクトのレコード変更に関する通知を発行するように設定できます。一方、Camel Salesforce コンポーネントはそのような通知に反応し、たとえば、これらの変更を外部システムに同期する ことができます。

関心のある通知は、サブスクリプションチャネルを介して Camel ルートの from ("salesforce:XXX") 句で指定できます。次に例を示します。

from("salesforce:data/ChangeEvents?replayId=-1").log("being notified of all change events")
from("salesforce:data/AccountChangeEvent?replayId=-1").log("being notified of change events for Account records")
from("salesforce:data/Employee__ChangeEvent?replayId=-1").log("being notified of change events for Employee__c custom object")

受信したメッセージには、rawPayload がそれぞれ false または true に応じて、本文に java.util.Map<String,Object> または org.cometd.bayeux.Message が含まれます。CamelSalesforceChangeType ヘッダーは、CREATEUPDATEDELETE または UNDELETE のいずれかに値を付けることができます。

Camel Salesforce コンポーネントの変更データキャプチャ機能の使用方法の詳細については、ChangeEventsConsumerIntegrationTest を参照してください。

Salesforce 開発者ガイド は、変更データキャプチャ統合アプリケーションの実装の些細な点をよりよく理解するのに適しています。変更イベント本文フィールドの動的な性質、高レベルのレプリケーション手順、およびセキュリティーの考慮事項は興味深いものになる可能性があります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る