Red Hat Training

A Red Hat training course is available for Red Hat Fuse

268.9. 承認の使用

すべてのプロパティーには、承認が付けられた Salesforce REST API と同じ名前が付けられます。承認プロパティーは、Endpoint の approval.PropertyName を設定して設定できます。これらは、body または header のいずれかに存在しないプロパティーが Endpoint 設定から取得することをテンプレートに使用 します。または、レジストリーの Bean への参照に approval プロパティーを割り当てることにより、Endpoint で承認テンプレートを設定できます。

受信メッセージヘッダーで同じ approval.PropertyName を使用してヘッダー値を指定することもできます。

また、最後に ボディー には AprovalRequest または Iterable of ApprovalRequest オブジェクトを 1 つ追加してバッチとして処理できます。

覚えておくべき重要なことは、以下の 3 つのメカニズムで指定された値の優先度です。

  1. ボディーの値は、他の値よりも先に優先されます。
  2. メッセージヘッダーの値は、テンプレート値の前に優先されます。
  3. ヘッダーまたはボディーに他の値が指定されていない場合に、テンプレートの値が設定されます。

たとえば、ヘッダーの値を使用して承認のために 1 つのレコードを送信するには、以下を使用します。

ルートを指定します。

from("direct:example1")//
        .setHeader("approval.ContextId", simple("${body['contextId']}"))
        .setHeader("approval.NextApproverIds", simple("${body['nextApproverIds']}"))
        .to("salesforce:approval?"//
            + "approvalActionType=Submit"//
            + "&approvalComments=this is a test"//
            + "&approvalProcessDefinitionNameOrId=Test_Account_Process"//
            + "&approvalSkipEntryCriteria=true");

以下を使用して承認のレコードを送信できます。

final Map<String, String> body = new HashMap<>();
body.put("contextId", accountIds.iterator().next());
body.put("nextApproverIds", userId);

final ApprovalResult result = template.requestBody("direct:example1", body, ApprovalResult.class);