54.10. 使用批准
所有属性都与带有 批准前缀的 Salesforce REST API 中完全相同。
您可以通过设置 Endpoint 的 approval.PropertyName
来设置批准属性,这些属性将用作 template,即 body 或 header 中没有的任何属性都将从 Endpoint 配置中获取。或者,您可以通过将批准属性分配给 Registry 中的 bean 的引用来设置端点上 的批准
模板。
您还可以使用传入消息标头中使用相同的 approval.PropertyName
提供标头值。
最后,正文可以包含一个 AprovalRequest
或 ApprovalRequest
对象的 Iterable
,以作为批处理处理。
要记住的重要事项是这三个机制中指定的值的优先级:
- 正文中的值在任何其他前具有优先级
- 消息标头中的值在模板值前具有优先权
- 如果未指定标头或正文中的其他值,则会设置模板中的值
例如,要使用标头中的值为批准发送一个记录:
给定路由:
from("direct:example1")// .setHeader("approval.ContextId", simple("${body['contextId']}")) .setHeader("approval.NextApproverIds", simple("${body['nextApproverIds']}")) .to("salesforce:approval?"// + "approval.actionType=Submit"// + "&approval.comments=this is a test"// + "&approval.processDefinitionNameOrId=Test_Account_Process"// + "&approval.skipEntryCriteria=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);