286.9. 承認の操作

すべてのプロパティーの名前は、Salesforce REST API とまったく同じで、approval.の接頭辞が付いています。テンプレートとして使用されるエンドポイントの approval.PropertyName を設定することで、承認プロパティーを設定できます。つまり、本文にもヘッダーにも存在しないプロパティーは、エンドポイント設定から取得されます。または、approval プロパティーをレジストリー内の Bean への参照に割り当てることで、エンドポイントに承認テンプレートを設定できます。

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

最後に、本文には、バッチとして処理する 1 つの AprovalRequest または ApprovalRequest オブジェクトの Iterable を含めることができます。

覚えておくべき重要なことは、これら 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);