289.9. 使用批准

所有属性都与带有批准的 Salesforce REST API 中的名称 完全相同。您可以通过设置 Endpoint .PropertyName 设置批准 属性来设置批准属性,这些端点将用作 template","- themeaning,这些属性在 body 或 header 中都不会显示任何属性。或者,您可以通过将 批准 属性分配给 Registry 中 bean 的引用,来设置端点上的批准模板。

您还可以在传入消息标头中使用相同的 approval.PropertyName 来提供标头值。

最后,正文可以包含一个 AprovalRequestIterable of ApprovalRequest 对象作为批处理。

要记住的重要事项是这三个机制中指定的值的优先级:

  1. body 中的值优先于其它值
  2. message 标头中的值在模板值前具有优先权
  3. 如果没有提供标头或正文中的其他值,则设置模板中的值

例如,使用标头使用中的值发送一条记录进行批准:

给定路由:

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);