第139章 Salesforce


Salesforce コンポーネント

Camel 2.12 以降で利用可能
このコンポーネントにより、プロデューサーおよびコンシューマーエンドポイントは Java DTO を使用して Salesforce と通信できます。これらの DTO を生成するコンパニオン Maven プラグインである Camel Salesforce プラグインがあります(以下を参照)。
TLS (Transport Layer Security)を使用するように camel-salesforce コンポーネントを設定するには、Security Guide の Configuring Transport Security for Camel Components の章を参照してください
Maven ユーザーは、以下の依存関係を pom.xml に追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-salesforce</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

Camel on EAP デプロイメント

このコンポーネントは、Red Hat JBoss Enterprise Application Platform (JBoss EAP) コンテナー上で簡素化されたデプロイメントモデルを提供する Camel on EAP (Wildfly Camel) フレームワークによってサポートされます。このモデルの詳細は、Deploying into a Web Server の Apache Camel on JBoss EAP の章を参照してください

URI 形式

salesforce コンポーネントの URI スキームは以下のとおりです。
salesforce:topic?options
Copy to Clipboard Toggle word wrap
URI にクエリーオプションは ?option=value&option=value&.. の形式で追加できます。

サポートされる Salesforce API

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

Rest API

  • getVersions - サポートされる Salesforce REST API バージョンの取得
  • getResources - 利用可能な Salesforce REST リソースエンドポイントを取得します。
  • 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 クエリーを実行します。
たとえば、以下のプロデューサーエンドポイントは upsertSObject API を使用し、sObjectIdName パラメーターが外部 id フィールドとして指定されています。リクエストメッセージのボディーは、maven プラグインを使用して生成された SObject DTO である必要があります。応答メッセージは、既存のレコードが更新された場合、または新規レコードの ID を持つ CreateSObjectResult、または新規オブジェクトの作成時のエラーの一覧のいずれかです。
...to("salesforce:upsertSObject?sObjectIdName=Name")...
Copy to Clipboard Toggle word wrap

REST Bulk API

プロデューサーエンドポイントは、次の API を使用できます。すべてのジョブデータ形式(xml、csv、zip/xml、および zip/csv)がサポートされます。要求と応答は、ルートによってマーシャリング/アンマーシャリングされる必要があります。通常、要求は CSV ファイルのようなストリームソースであり、応答もファイルに保存され、要求と関連付けられます。
  • createJob - Salesforce 一括ジョブを作成します。
  • getJob - Salesforce ID を使用してジョブを取得します。
  • closeJob : ジョブを閉じる
  • abortJob : ジョブを中止します。
  • createBatch - 一括ジョブ内でバッチを送信します。
  • getBatch - Id を使用してバッチを取得します。
  • getAllBatches - 一括ジョブ ID のすべてのバッチを取得します。
  • getRequest - バッチのリクエストデータ(XML/CSV)を取得します。
  • getResults : バッチの完了時に結果を取得します。
  • createBatchQuery : SOQL クエリーから Batch を作成します。
  • getQueryResultIds - バッチクエリーの結果 ID の一覧を取得します。
  • getQueryResult : 結果 ID の結果を取得します。
たとえば、以下のプロデューサーエンドポイントは createBatch API を使用して Job Batch を作成します。in メッセージには、XML、CSV、ZIP\_XML または ZIP\_CSV の InputStream (通常は UTF-8 CSV または XML コンテンツ)および Job および contentType のヘッダーフィールド jobId に変換できるボディーが含まれている必要があります。put メッセージのボディーには、成功時に BatchInfo が含まれたり、SalesforceException をエラーに出力したりします。
...to("salesforce:createBatchJob")..
Copy to Clipboard Toggle word wrap

REST Streaming API

コンシューマーエンドポイントは、以下の sytax を使用して、エンドポイントをストリーミングし、作成/更新時に Salesforce の通知を受信することができます。
トピックを作成してサブスクライブするには、以下を行います。
from("salesforce:CamelTestTopic?notifyForFields=ALL&notifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...
Copy to Clipboard Toggle word wrap
既存のトピックにサブスクライブするには、以下を実行します。
from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...
Copy to Clipboard Toggle word wrap

ContentWorkspace へのドキュメントのアップロード

Processor インスタンスを使用して、Java で ContentVersion を作成します。
public class ContentProcessor implements Processor {
    public void process(Exchange exchange) throws Exception {
        Message message = exchange.getIn();
 
        ContentVersion cv = new ContentVersion();
        ContentWorkspace cw = getWorkspace(exchange);
        cv.setFirstPublishLocationId(cw.getId());
        cv.setTitle("test document");
        cv.setPathOnClient("test_doc.html");
        byte[] document = message.getBody(byte[].class);
        ObjectMapper mapper = new ObjectMapper();
        String enc = mapper.convertValue(document, String.class);
        cv.setVersionDataUrl(enc);
        message.setBody(cv);
    }
 
    protected ContentWorkspace getWorkSpace(Exchange exchange) {
        // Look up the content workspace somehow, maybe use enrich() to add it to a
        // header that can be extracted here
        ....
    }
}
Copy to Clipboard Toggle word wrap
プロセッサーから Salesforce コンポーネントに出力を付与します。
from("file:///home/camel/library")
    .to(new ContentProcessor())     // convert bytes from the file into a ContentVersion SObject
                                    // for the salesforce component
    .to("salesforce:createSObject");
Copy to Clipboard Toggle word wrap

Camel Salesforce Maven プラグイン

この Maven プラグインは、Camel Salesforce の DTO を生成します。

使用方法

プラグイン設定には、以下のプロパティーがあります。
Expand
オプション 説明
clientId Salesforce client Id for Remote API access.
clientSecret リモート API アクセス用の Salesforce クライアントシークレット。
userName Salesforce アカウントのユーザー名。
password Salesforce アカウントパスワード(シークレットトークンを含む)
version Salesforce Rest API バージョン。デフォルトは 34.0 です。
outputDirectory 生成された DTO を配置するディレクトリー。デフォルトは ${project.build.directory}/generated-sources/camel-salesforce です。
includes 追加する SObject タイプのリスト。
excludes 除外する SObject タイプのリスト。
includePattern 含める SObject タイプの Java RegEx。
excludePattern 除外する SObject タイプの Java RegEx。
packageName 生成された DTO の Java パッケージ名。デフォルトは org.apache.camel.salesforce.dto です。
mvn camel-salesforce:generate -DclientId=<clientid> -DclientSecret=<clientsecret> -DuserName=<username> -Dpassword=<password>
Copy to Clipboard Toggle word wrap
生成された DTO は Jackson および XStream アノテーションを使用します。すべての Salesforce フィールドタイプがサポートされます。日時フィールドは Joda DateTime にマッピングされ、リストフィールドは生成された Java Enumerations にマッピングされます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat