Desarrollo de proxy de recursos

Adobe Experience Manager Assets utiliza un proxy para distribuir el procesamiento de determinadas tareas.

Un proxy es una instancia Experience Manager específica (y a veces independiente) que utiliza trabajadores proxy como procesadores responsables de administrar un trabajo y crear un resultado. Un trabajador proxy puede utilizarse para una amplia variedad de tareas. En el caso de un proxy de Experience Manager Assets, se puede utilizar para cargar recursos para procesarlos en Experience Manager Assets. Por ejemplo, el IDS proxy worker utiliza un InDesign Server para procesar archivos para usarlos en Experience Manager Assets.

Cuando el proxy es una instancia Experience Manager independiente, esto ayuda a reducir la carga en las instancias de creación Experience Manager. De forma predeterminada, Experience Manager Assets ejecuta las tareas de procesamiento de recursos en la misma JVM (externalizada mediante proxy) para reducir la carga en la instancia de creación Experience Manager.

Proxy (acceso HTTP)

Hay un proxy disponible a través del servlet HTTP cuando está configurado para aceptar trabajos de procesamiento en: /libs/dam/cloud/proxy. Este servlet crea un trabajo de sling a partir de los parámetros registrados. A continuación, esto se agrega a la cola de trabajos del proxy y se conecta al trabajador del proxy adecuado.

Operaciones compatibles

  • job

    Requisitos: el parámetro jobevent debe establecerse como mapa de valores serializado. Se utiliza para crear un Event para un procesador de trabajos.

    Resultado: Agrega un nuevo trabajo. Si se realiza correctamente, se devuelve un identificador de trabajo único.

curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
    -F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy
  • result

    Requisitos: se jobid debe configurar el parámetro .

    Resultado: Devuelve una representación JSON del nodo de resultado creado por el procesador de trabajos.

curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502   /libs/dam/cloud/proxy
  • resource

    Requisitos: se debe establecer el parámetro jobid .

    Resultado: Devuelve un recurso asociado al trabajo dado.

curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
    -F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy
  • remove

    Requisitos: se debe establecer el parámetro jobid .

    Resultados: Elimina un trabajo si se encuentra.

curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502/libs/dam/cloud/proxy

Trabajador de proxy

Un trabajador proxy es un procesador responsable de gestionar un trabajo y crear un resultado. Los trabajadores residen en la instancia de proxy y deben implementar sling JobProcessor para que se reconozca como trabajador de proxy.

NOTA

El trabajador debe implementar sling JobProcessor para que se reconozca como trabajador proxy.

API de cliente

JobService está disponible como servicio de OSGi que proporciona métodos para crear trabajos, eliminarlos y obtener resultados de esos trabajos. La implementación predeterminada de este servicio (JobServiceImpl) utiliza el cliente HTTP para comunicarse con el servlet proxy remoto.

El siguiente es un ejemplo de uso de API:

@Reference
 JobService proxyJobService;

 // to create a new job
 final Hashtable props = new Hashtable();
 props.put("someproperty", "some value");
 props.put(JobUtil.PROPERTY_JOB_TOPIC, "myworker/job"); // this is an identifier of the worker
 final String jobId = proxyJobService.addJob(props, new Asset[]{asset});

 // to check status (returns JobService.STATUS_FINISHED or JobService.STATUS_INPROGRESS)
 int status = proxyJobService.getStatus(jobId)

 // to get the result
 final String jsonString = proxyJobService.getResult(jobId);

 // to remove job and cleanup
 proxyJobService.removeJob(jobId);

Configuraciones de Cloud Service

NOTA

La documentación de referencia para la API proxy está disponible en com.day.cq.dam.api.proxy.

Tanto las configuraciones de trabajo proxy como las del proxy están disponibles a través de las configuraciones de servicios en la nube como accesibles desde la consola Experience Manager Assets Tools o en /etc/cloudservices/proxy. Se espera que cada trabajador proxy agregue un nodo en /etc/cloudservices/proxy para detalles de configuración específicos del trabajador (por ejemplo, /etc/cloudservices/proxy/workername).

El siguiente es un ejemplo de uso de API:

@Reference(policy = ReferencePolicy.STATIC)
 ProxyConfig proxyConfig;
 
 // to get proxy config
 Configuration cloudConfig = proxyConfig.getConfiguration();
 final String value = cloudConfig.get("someProperty", "defaultValue");

 // to get worker config
 Configuration cloudConfig = proxyConfig.getConfiguration("workername");
 final String value = cloudConfig.get("someProperty", "defaultValue");

Desarrollo de un Trabajador de Proxy Personalizado

El IDS proxy worker es un ejemplo de Experience Manager Assets proxy worker que ya se proporciona de forma predeterminada para externalizar el procesamiento de los recursos de Indesign.

También puede desarrollar y configurar su propio Experience Manager trabajador proxy de recursos para crear un trabajador especializado para distribuir y externalizar sus tareas de procesamiento de Experience Manager recursos.

La configuración de su propio trabajador proxy personalizado requiere que:

  • Configure e implemente (mediante eventos de Sling):

    • un tema de trabajo personalizado
    • un controlador de eventos de trabajo personalizado
  • A continuación, utilice la API de JobService para:

    • envíe su trabajo personalizado al proxy
    • administrar su trabajo
  • Si desea utilizar el proxy desde un flujo de trabajo, debe implementar un paso externo personalizado mediante la API WorkflowExternalProcess y la API JobService.

El diagrama y los pasos siguientes detallan cómo continuar:

chlimage_1-249

NOTA

En los pasos siguientes, los equivalentes de Indesign se indican como ejemplos de referencia.

  1. Se utiliza un trabajo de Sling, por lo que debe definir un tema de trabajo para su caso de uso.

    Como ejemplo, consulte IDSJob.IDS_EXTENDSCRIPT_JOB para el programa de trabajo del proxy IDS.

  2. El paso externo se utiliza para almacenar en déclencheur el evento y luego esperar hasta que finalice; esto se hace sondeando en el id. Debe desarrollar su propio paso para implementar la nueva funcionalidad.

    Implemente un WorkflowExternalProcess, luego use la API de JobService y el tema de su trabajo para preparar un evento de trabajo y enviarlo al JobService (un servicio OSGi).

    Como ejemplo, consulte INDDMediaExtractProcess.java para el programa de trabajo del proxy IDS.

  3. Implemente un controlador de trabajo para su tema. Este controlador requiere desarrollo para que realice su acción específica y se considere la implementación del trabajador.

    Como ejemplo, consulte IDSJobProcessor.java para el programa de trabajo del proxy IDS.

  4. Utilice ProxyUtil.java en dam-commons. Esto le permite enviar trabajos a los trabajadores usando el proxy de la represa.

NOTA

Lo que el marco de proxy de Experience Manager Assets no proporciona de forma predeterminada es el mecanismo de agrupación.

La integración de InDesign permite el acceso a un grupo de servidores de indesign (IDSPool). Este agrupamiento es específico de la integración de Indesign y no forma parte del marco de proxy de Experience Manager Assets.

NOTA

Sincronización de resultados:

Con n instancias que utilizan el mismo proxy, el resultado de procesamiento permanece con el proxy. Es tarea del cliente (Experience Manager Author) solicitar el resultado utilizando el mismo identificador de trabajo único que se le da al cliente en la creación de trabajos. El proxy simplemente realiza el trabajo y mantiene el resultado listo para ser solicitado.

En esta página