第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>
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
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")...
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")..
REST Streaming API リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーエンドポイントは、以下の sytax を使用して、エンドポイントをストリーミングし、作成/更新時に Salesforce の通知を受信することができます。
トピックを作成してサブスクライブするには、以下を行います。
from("salesforce:CamelTestTopic?notifyForFields=ALL¬ifyForOperations=ALL&sObjectName=Merchandise__c&updateTopic=true&sObjectQuery=SELECT Id, Name FROM Merchandise__c")...
既存のトピックにサブスクライブするには、以下を実行します。
from("salesforce:CamelTestTopic&sObjectName=Merchandise__c")...
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
....
}
}
プロセッサーから 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");
Camel Salesforce Maven プラグイン リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この Maven プラグインは、Camel Salesforce の DTO を生成します。
使用方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プラグイン設定には、以下のプロパティーがあります。
| オプション | 説明 |
|---|---|
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>
生成された DTO は Jackson および XStream アノテーションを使用します。すべての Salesforce フィールドタイプがサポートされます。日時フィールドは Joda DateTime にマッピングされ、リストフィールドは生成された Java Enumerations にマッピングされます。