288.7. 使用批准
所有属性的名称与带有 批准前缀的 Salesforce REST API 中完全相同。您可以通过设置端点的 approval.PropertyName 来设置批准属性,这些端点将用作模板在主题或标题中不存在的任何属性,从 Endpoint 配置中获取。或者,您可以通过为 registry 中的 Bean 分配 批准 属性来设置端点上的批准模板。
您还可以使用在传入邮件标头中使用相同的 approval.PropertyName 来提供标头值。
最后,正文可以包含一个 AprovalRequest 或一个 可识别的 ApprovalRequest 对象,以作为一个批处理处理。
请记住,需要记住的是以下三种机制中指定的值的优先级:
- 正文中的值优先于其它值
- 邮件标题中的值优先于模板值前。
- 如果没有给定标题或正文中的其他值,则设置模板中的值
例如,使用标头中的值发送一条记录进行批准:
给定路由:
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);