288.7. 승인 작업

모든 속성의 이름은 Salesforce REST API 앞에 있는 승인과 정확히 동일합니다. . Endpoint의 approval.PropertyName 을 설정하여 승인 속성을 설정할 수 있습니다. 이는 본문 또는 헤더 중 하나에 존재하지 않는 모든 속성이 끝점 구성에서 가져오는 templatedatabind-databindmeaning으로 사용됩니다. 또는 레지스트리의 빈에 대한 참조에 승인 속성을 할당하여 엔드포인트에서 승인 템플릿을 설정할 수 있습니다.

들어오는 메시지 헤더에서 동일한 approval.PropertyName 을 사용하여 헤더 값을 제공할 수도 있습니다.

그리고 마지막으로 본문에는 하나의 AprovalRequest 또는 Iterable of ApprovalRequest 개체를 포함할 수 있습니다.

중요한 것은 다음 세 가지 메커니즘에 지정된 값의 우선 순위입니다.

  1. 본문의 값이 다른 값보다 우선합니다.
  2. 메시지 헤더의 값이 템플릿 값보다 우선함
  3. 헤더 또는 본문에서 다른 값을 지정하지 않은 경우 template의 값이 설정됩니다.

예를 들어 헤더의 값을 사용하여 승인을 위해 하나의 레코드를 보내려면 다음을 사용합니다.

경로 지정:

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