异步调用

某些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返回负责此调用的作业的标识符值(采用“文本/普通”格式)。

通过使用被替换为async_statusservices的调用URL,可以检索异步调用的状态。 URL必须包含一个job_id参数,该参数指定与此调用关联的作业的标识符值。 例如:

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

此URL会根据作业管理器的规范(例如,2表示正在运行,3表示已完成,4表示失败,等等)返回一个整数值(以“文本/纯”格式),用于编码作业状态。

如果作业已完成,则URL将返回与同步调用服务相同的结果。

作业完成并检索到结果后,可以使用具有services的调用URL将作业处理为async_dispose。 URL还应包含指定作业的标识符值的job_id参数。 例如:

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

如果作业处置成功,则此URL将返回空消息。

错误报告

如果由于服务器上抛出异常而无法完成同步或异步调用请求,则该异常将作为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的实例时才会出现。