286.9. 承認の操作
すべてのプロパティーの名前は、Salesforce REST API とまったく同じで、approval.
の接頭辞が付いています。テンプレートとして使用されるエンドポイントの approval.PropertyName
を設定することで、承認プロパティーを設定できます。つまり、本文にもヘッダーにも存在しないプロパティーは、エンドポイント設定から取得されます。または、approval
プロパティーをレジストリー内の Bean への参照に割り当てることで、エンドポイントに承認テンプレートを設定できます。
受信メッセージヘッダーで同じ approval.PropertyName
を使用してヘッダー値を指定することもできます。
最後に、本文には、バッチとして処理する 1 つの AprovalRequest
または ApprovalRequest
オブジェクトの Iterable
を含めることができます。
覚えておくべき重要なことは、これら 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);