Salesforce Connector 10.17 の追加設定情報 - Mule 4

次の目的で Salesforce 用 Anypoint Connector (Salesforce Connector) を設定します。

  • データのバッチ読み込み

  • Lead Convert Request 操作のリード ID の指定

  • null​ への項目値の更新

  • OAuth 2.0 キーストアファイルの生成

  • APEX Rest メソッドの呼び出し

データのバッチ読み込み

Salesforce Bulk API は、組織のデータのバッチを Salesforce に読み込みます。Salesforce Connector には、Bulk API と連動する ​Create​ 操作と ​Create Bulk​ 操作が用意されています。

一括操作はすべて、Salesforce が作成プロセスをバックグラウンドで処理します。コネクタは ​BatchInfo​ オブジェクトで応答します。このオブジェクトにはバッチの ID と、バッチオブジェクトをアップロードするために作成するジョブの ID が含まれます。

Salesforce で、一括データ読み込みジョブのジョブ ID を使用して、一括データ読み込みジョブと関連するバッチの状況を追跡できます。

  1. <​YOUR_NAME​ > [Setup (設定)] > [Monitoring (監視)] > [Bulk Data Load Jobs (一括データ読み込みジョブ)]​ をクリックします。

  2. ジョブ ID をクリックすると、ジョブの詳細ページが表示されます。

ジョブの詳細ページに、ジョブに関連する全バッチのリストが表示されます。リストには、各バッチの [​View Request​ (要求を表示)] および [​View Response​ (応答を参照)] リンクが表示されます。バッチが CSV ファイルの場合は、これらのリンクから CSV 形式の要求や応答が返されます。バッチが XML ファイルの場合は、これらのリンクから XML 形式の要求や応答が返されます。

リード取引開始要求 ID

LeadConvertRequest​ 操作でリード ID を指定するには、DataWeave transform message を使用します。操作の前で transform message を使用するには、操作のメタデータで指定されないため ​leadId​ 項目を追加する必要があります。

<ee:transform doc:name="Transform Message" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
    leadId: "LEAD_ID",
    accountId: "ACCOUNT_ID",
    convertedStatus: "Closed - Converted",
    doNotCreateOpportunity: true
} as Object {
    class : "org.mule.extension.salesforce.api.core.LeadConvertRequest"
}]]></ee:set-payload>
            </ee:message>
</ee:transform>

項目値を Null に更新する

項目値を ​null​ に設定するには、​Update​ または ​Upsert​ 要求操作を使用して、null にする項目の名前を ​Transform Message​ コンポーネントの ​fieldsToNull​ 項目に挿入します。

項目を null に設定する
Figure 1. Transform Message​ コンポーネントの ​fieldsToNull​ 項目で null にする項目の名前を指定します。

キーストアファイルの生成

Salesforce Connector は、Bouncy Castle 暗号ライブラリを使用して、キーストアから証明書を読み込み、認証要求のペイロードに署名します。

ライブラリには、BKS-V1 キーストアファイル種別に関連する 脆弱性 (CVE-2018-5382)​ があります。デフォルトでは、Salesforce Connector は JKS または PKCS12 キーストアを使用します。 Bouncy Castle で提案されるソリューション​に記載されているように BKS-V1 キーストアファイルを使用することは避けてください。

JKS キーストアファイルを生成する手順は、次のとおりです。

  1. Mule ワークスペースに移動し、コマンドプロンプト (Windows) またはターミナル (Mac) を開きます。

  2. 次のコマンドを入力します。

    keytool -genkeypair -alias salesforce-cert -keyalg RSA -keystore salesforce-cert.jks
  3. 次の情報を入力します。

    • キーストアのパスワード

    • 自身の姓名

    • 自身の組織単位

    • 都道府県と 2 文字の国コード

      システムが、ワークスペースに非公開キーと公開キーのペアが含まれる Java キーストアファイル (JKS 形式) を生成します。

  4. コネクタ設定でキーストアのファイルパスを指定します。

    次のコマンドを入力します。

    keytool -exportcert -alias salesforce-cert -file salesforce-cert.crt -keystore salesforce-cert.jks

    システムが、キーストアからワークスペースに公開キーをエクスポートします。これは、Salesforce インスタンスに入力する公開キーです。

  5. ワークスペースにキーストア (​salesforce-cert.jks​) と公開キー (​salesforce-cert.crt​) の両方のファイルがあることを確認します。

Invoke APEX Rest Method

Invoke APEX Rest 操作を使用すると、ユーザーは REST サービスとして公開されている Apex クラスからメソッドを呼び出すことができます。次の例は、この操作のペイロードを示しています。

<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[output application/java
---
{
	body: {
		URLParameters: {
			Parameter1: "parameter1Value",
			Parameter2: "parameter2Value"
		},
		account: {
			Name: "Example",
			AccountNumber: "55"
		}
	},
	headers: {
		header1:"header1Value"
	},
	cookies: {
		cookie1:"cookie1Value"
	},
	queryParameters: {
		queryParam1Name:"queryParam1Value",
		queryParam2Name:"queryParam2Value"
	}
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>

例について説明します。

  • body​ 要素に含まれる ​URLParameters​ は、Apex クラスに記述されている REST リソースのパス内のワイルドカードを置き換えるパラメーターが含まれるマップです。

    たとえば、REST リソースが ​@RestResource(urlMapping='/myResource/\​/mySubResource/​')​ に設定されている場合、​Parameter1​ の値で 1 番目の ​*​ が置き換えられ、​Parameter2​ の値で 2 番目の ​*​ が置き換えられます。

  • キー名は ​Parameter​ で始まり、その後に、置き換える ​*​ の位置を示す数値が続く必要があります。

  • URLParameters​ ブロックの後に、REST リソースに送信する ​body​ 値のコンテンツを指定します (例の ​account​ ブロックを参照)。

  • headers​ および ​cookies​ 項目では、HTTP 要求と共に目的のサービスに渡すヘッダーと Cookie を記述します。

  • queryParameters​ 項目では、使用するクエリパラメーターのほか、指定した Apex クラスで受け入れられる必要があるこのマップ内のキーと値を記述します。