지원되는 데이터 유형

REST 요청을 사용하여 AEM Forms 서비스를 호출할 때 다음 데이터 형식이 지원됩니다.

  • 문자열 및 정수와 같은 Java 기본 데이터 유형

  • com.adobe.idp.Document 데이터 형식

  • org.w3c.Documentorg.w3c.Element과(와) 같은 XML 데이터 형식

  • java.util.Listjava.util.Map과(와) 같은 컬렉션 개체

    이러한 데이터 유형은 일반적으로 Workbench에서 생성된 프로세스에 대한 입력 값으로 수락됩니다.

    HTTP POST 메서드를 사용하여 Forms 서비스를 호출하면 인수가 HTTP 요청 본문 내에 전달됩니다. AEM Forms 서비스의 서명에 문자열 입력 매개 변수가 있는 경우 요청 본문에 입력 매개 변수의 텍스트 값이 포함될 수 있습니다. 서비스 시그니처가 여러 문자열 매개 변수를 정의하는 경우 요청은 HTTP의 application/x-www-form-urlencoded 표기법을 따르며 매개 변수의 이름을 양식의 필드 이름으로 사용할 수 있습니다.

    Forms 서비스가 문자열 매개 변수를 반환하는 경우 결과는 출력 매개 변수의 텍스트 표현입니다. 서비스가 여러 문자열 매개 변수를 반환하는 경우 결과는 출력 매개 변수를 다음 형식으로 인코딩하는 XML 문서입니다.
     <result> <output-paramater1>output-parameter-value-as-string</output-paramater1> . . . <output-paramaterN>output-parameter-value-as-string</output-paramaterN> </result>

    노트
    output-paramater1 값은 출력 매개 변수 이름을 나타냅니다.

    Forms 서비스에 com.adobe.idp.Document 매개 변수가 필요한 경우 HTTP POST 메서드를 사용해야만 서비스를 호출할 수 있습니다. 서비스에 하나의 com.adobe.idp.Document 매개 변수가 필요한 경우 HTTP 요청 본문이 입력 Document 개체의 콘텐츠가 됩니다.

    AEM Forms 서비스에 여러 입력 매개 변수가 필요한 경우 HTTP 요청 본문은 RFC 1867에서 정의한 다중 부분 MIME 메시지여야 합니다. (RFC 1867은 웹 브라우저에서 웹 사이트에 파일을 업로드하는 데 사용하는 표준입니다.) 각 입력 매개 변수는 다중 부분 메시지의 개별 부분으로 보내고 multipart/form-data 형식으로 인코딩해야 합니다. 각 부품의 이름은 매개변수의 이름과 일치해야 합니다.

    목록 및 맵은 Workbench에서 생성된 AEM Forms 프로세스에 대한 입력 값으로도 사용됩니다. 따라서 REST 요청을 사용할 때 이러한 데이터 유형을 사용할 수 있습니다. Java 배열은 AEM Forms 프로세스에 대한 입력 값으로 사용되지 않으므로 지원되지 않습니다.

    입력 매개 변수가 목록인 경우 REST 클라이언트는 매개 변수를 여러 번 지정하여 목록을 보낼 수 있습니다(목록의 각 항목에 대해 한 번). 예를 들어, A가 문서 목록이면 입력은 A라는 이름의 여러 부분으로 구성된 다중 부분 메시지여야 합니다. 이 경우 A라는 이름의 각 부품은 입력 목록의 항목이 됩니다. B가 문자열 목록이면 B라는 여러 필드로 구성된 application/x-www-form-urlencoded 메시지가 입력일 수 있습니다. 이 경우 이름이 B인 각 양식 필드는 입력 목록의 항목이 됩니다.

    입력 매개변수가 맵이고 서비스 전용 입력 매개변수인 경우 입력 메시지의 모든 부분/필드는 맵에서 키/값 레코드가 됩니다. 각 부품/필드의 이름이 레코드의 키가 됩니다. 각 부분/필드의 내용이 레코드의 값이 됩니다.

    입력 맵이 서비스 전용 입력 매개변수가 아닌 경우 맵에 속하는 각 키/값 레코드는 매개변수 이름과 레코드 키의 연결로 명명된 매개변수를 사용하여 전송될 수 있습니다. 예를 들어 다음 키/값 쌍 목록을 사용하여 attributes(이)라는 입력 맵을 보낼 수 있습니다.

    attributesColor=red

    attributesShape=box

    attributesWidth=5

    Color=red, Shape=box, Width=5 레코드 세 개의 맵으로 변환됩니다.

    목록 및 맵 유형의 출력 매개 변수는 결과 XML 메시지의 일부가 됩니다. 출력 목록은 목록의 각 항목에 대해 하나의 요소가 있는 일련의 XML 요소로 XML에 표시됩니다. 모든 요소에는 출력 목록 매개 변수와 동일한 이름이 지정됩니다. 각 XML 요소의 값은 다음 두 가지 중 하나입니다.

  • 목록에 있는 항목의 텍스트 표현(목록이 문자열 유형으로 구성된 경우)

  • 문서 내용을 가리키는 URL(목록이 com.adobe.idp.Document개의 개체로 구성된 경우)

    다음 예제는 정수 목록인 list(이)라는 단일 출력 매개 변수가 있는 서비스에서 반환되는 XML 메시지입니다.
     <result>   <list>12345</list>   . . .   <list>67890</list>  </result>결과 XML 메시지에 출력 맵 매개 변수가 맵의 각 레코드에 대해 하나의 요소가 있는 일련의 XML 요소로 표시됩니다. 모든 요소에는 맵 레코드의 키와 동일한 이름이 지정됩니다. 각 요소의 값은 맵 레코드 값의 텍스트 표현이거나(맵이 문자열 값이 있는 레코드로 구성된 경우) 문서 내용을 가리키는 URL입니다(맵이 com.adobe.idp.Document 값이 있는 레코드로 구성된 경우). 다음은 이름이 map인 단일 출력 매개 변수를 가진 서비스에서 반환한 XML 메시지의 예입니다. 이 매개 변수 값은 문자를 com.adobe.idp.Document 개체와 연결하는 레코드로 구성된 맵입니다.
     <result>   http://localhost:8080/DocumentManager/docm123/4567   . . .   <Z>http://localhost:8080/DocumentManager/docm987/6543</Z>  </result>  

비동기 호출

인간 중심의 장기 관리 프로세스와 같은 일부 AEM Forms 서비스는 완료하는 데 오랜 시간이 소요됩니다. 이러한 서비스는 비차단 방식으로 비동기적으로 호출할 수 있습니다. (사람 중심의 장기 실행 프로세스 호출을 참조하십시오.)

다음 예제와 같이 호출 URL에서 services을(를) async_invoke(으)로 대체하여 AEM Forms 서비스를 비동기적으로 호출할 수 있습니다.

 http://localhost:8080/rest/async_invoke/SomeService. SomeOperation?integer_input_variable=123&string_input_variable=abc

이 URL은 이 호출을 담당하는 작업의 식별자 값("text/plain" 형식)을 반환합니다.

services이(가) async_status(으)로 대체된 호출 URL을 사용하여 비동기 호출의 상태를 검색할 수 있습니다. URL에는 이 호출과 연결된 작업의 식별자 값을 지정하는 job_id 매개 변수가 포함되어야 합니다. 예:

 http://localhost:8080/rest/async_status/SomeService.SomeOperation?job_id=2345353443366564

이 URL은 작업 관리자의 사양에 따라 작업 상태를 인코딩하는 정수 값("text/plain" 형식)을 반환합니다(예: 2는 실행 중, 3은 완료 중, 4는 실패 중).

작업이 완료되면 URL은 서비스가 동기적으로 호출된 것과 동일한 결과를 반환합니다.

작업이 완료되고 결과가 검색되면 services이(가) 있는 호출 URL을 사용하여 작업을 async_dispose(으)로 대체하여 삭제할 수 있습니다. URL에는 작업의 식별자 값을 지정하는 job_id 매개 변수도 포함되어야 합니다. 예:

 http://localhost:8080/rest/async_dispose/SomeService.SomeOperation?job_id=2345353443366564

작업이 성공적으로 처리되면 이 URL은 빈 메시지를 반환합니다.

오류 보고

서버에서 예외가 throw되어 동기 또는 비동기 호출 요청을 완료할 수 없는 경우 이 예외는 HTTP 응답 메시지의 일부로 보고됩니다. 호출 URL(또는 비동기 호출이 있는 경우 async_result URL)에 .xml 접미사가 없는 경우 REST 공급자는 HTTP 코드 500 Internal Server Error을(를) 반환한 다음 예외 메시지를 반환합니다.

호출 URL(또는 비동기 호출이 있는 경우 async_result URL)에 .xml 접미사가 있으면 REST 공급자는 HTTP 코드 200 OK을(를) 반환한 다음 다음 형식의 예외를 설명하는 XML 문서를 반환합니다.

 <exception>
       <exception_class_name>[
       <DSCError>
          <componentUID>component_UUD</componentUID>
         <errorCode>error_code</errorCode>
         <minorCode>minor_code</minorCode>
         <message>error_message</message>
       </DSCError>
 ]
       <message>exception_message</message>
     <stackTrace>exception_stack_trace</stackTrace>
       </exception_class_name>
     <exception>
       </exception>
 </exception>

DSCError 요소는 선택 사항이며 예외가 com.adobe.idp.dsc.DSCException의 인스턴스인 경우에만 존재합니다.

보안 및 인증

REST 호출에 보안 전송을 제공하기 위해 AEM Forms 관리자는 AEM Forms을 호스팅하는 J2EE 애플리케이션 서버에서 HTTPS 프로토콜을 활성화할 수 있습니다. 이 구성은 J2EE 애플리케이션 서버에만 해당되며, Forms 서버 구성의 일부가 아닙니다.

노트
REST 엔드포인트를 통해 프로세스를 노출하려는 Workbench 개발자는 XSS 취약성 문제를 염두에 두십시오. XSS 취약성은 쿠키를 훔치거나 조작하고, 컨텐츠 표시를 수정하고, 기밀 정보를 손상하는 데 사용할 수 있습니다. XSS 취약성이 문제인 경우 추가 입력 및 출력 데이터 유효성 검사 규칙으로 프로세스 논리를 확장하는 것이 좋습니다.

REST 호출을 지원하는 AEM Forms 서비스

서비스가 아닌 Workbench를 사용하여 생성된 프로세스를 직접 호출하는 것이 좋지만, REST 호출을 지원하는 일부 AEM Forms 서비스가 있습니다. 서비스가 아닌 프로세스를 직접 호출하는 것이 권장되는 이유는 프로세스를 호출하는 것이 더 효율적이기 때문입니다. 다음 시나리오를 고려하십시오. REST 클라이언트에서 정책을 만들려고 한다고 가정합니다. 즉, REST 클라이언트가 정책 이름, 오프라인 임대 기간과 같은 값을 정의하게 됩니다.

정책을 만들려면 PolicyEntry 개체와 같은 복잡한 데이터 형식을 정의해야 합니다. PolicyEntry 개체는 정책과 연결된 권한과 같은 특성을 정의합니다. (정책 만들기를 참조하십시오.)

정책(예: PolicyEntry 개체와 같은 복잡한 데이터 형식 정의 포함)을 만들기 위해 REST 요청을 보내는 대신 Workbench를 사용하여 정책을 만드는 프로세스를 만듭니다. 프로세스 이름을 정의하는 문자열 값 또는 오프라인 임대 기간을 정의하는 정수와 같은 원시 입력 변수를 수락하는 프로세스를 정의합니다.

이렇게 하면 작업에 필요한 복잡한 데이터 형식을 포함하는 REST 호출 요청을 만들 필요가 없습니다. 프로세스는 복잡한 데이터 유형을 정의하며 REST 클라이언트에서 프로세스를 호출하고 원시 데이터 유형을 전달하면 됩니다. REST를 사용하여 프로세스를 호출하는 방법에 대한 자세한 내용은 REST를 사용하여 MyApplication/EncryptDocument 프로세스 호출을 참조하십시오.

다음 목록은 직접 REST 호출을 지원하는 AEM Forms 서비스를 지정합니다.

  • Distiller 서비스
  • Rights Management 서비스
  • GeneratePDF 서비스
  • 3dPDF 서비스 생성
  • 양식 데이터 통합