Desarrollo de proxy Assets assets-proxy-development
Adobe Experience Manager Assets utiliza un proxy para distribuir el procesamiento de ciertas tareas.
Un proxy es una instancia de Experience Manager específica (y a veces independiente) que utiliza los proxies como procesadores responsables de gestionar un trabajo y crear un resultado. Un trabajador proxy puede utilizarse para una amplia variedad de tareas. Si hay un proxy Assets, se puede usar para cargar recursos para procesar en Assets. Por ejemplo, el trabajador de proxy IDS usa un servidor Adobe InDesign para procesar archivos y usarlos en Assets.
Cuando el proxy es una instancia de Experience Manager independiente, esto ayuda a reducir la carga en las instancias de creación de Experience Manager. De manera predeterminada, 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 de Experience Manager.
Proxy (acceso HTTP) proxy-http-access
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, se agrega a la cola de trabajos del proxy y se conecta al trabajador del proxy correspondiente.
Operaciones admitidas supported-operations
-
job
Requisitos: el parámetro
jobevent
debe establecerse como un mapa de valor serializado. Se usa para crear unEvent
para un procesador de trabajos.Resultado: Agrega un nuevo trabajo. Si se realiza correctamente, se devuelve un ID 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 debe establecer el parámetro
jobid
.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 con el 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: quita un trabajo si se encuentra.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
http://localhost:4502/libs/dam/cloud/proxy
Trabajador Proxy proxy-worker
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.
API de cliente client-api
JobService
está disponible como servicio OSGi que proporciona métodos para crear trabajos, quitar trabajos 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.
A continuación se muestra un ejemplo de uso de API:
@Reference
JobService proxyJobService;
// to create a 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 del Cloud Service cloud-service-configurations
Las configuraciones de trabajo de proxy y proxy están disponibles mediante configuraciones de servicios en la nube a las que se puede acceder desde la consola Assets Herramientas o en /etc/cloudservices/proxy
. Se espera que cada trabajador proxy agregue un nodo bajo /etc/cloudservices/proxy
para los detalles de configuración específicos del trabajador (por ejemplo, /etc/cloudservices/proxy/workername
).
A continuación se muestra 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 proxy personalizado developing-a-customized-proxy-worker
El trabajador de proxy IDS es un ejemplo de un trabajador de proxy Assets que ya se proporciona de forma predeterminada para externalizar el procesamiento de los recursos de InDesign.
También puede desarrollar y configurar su propio trabajador proxy Assets para crear un trabajador especializado que distribuya y subcontrate sus tareas de procesamiento Assets.
La configuración de su propio trabajador de proxy personalizado requiere lo siguiente:
-
Configurar e implementar (con eventos de Sling):
- un tema de trabajo personalizado
- un controlador de eventos de trabajo personalizado
-
A continuación, utilice la API de JobService para:
- enviar el trabajo personalizado al proxy
- administre su trabajo
-
Si desea utilizar el proxy de un flujo de trabajo, debe implementar un paso externo personalizado mediante la API WorkflowExternalProcess y la API JobService.
El siguiente diagrama y pasos detallan cómo proceder:
-
Se ha usado un trabajo de Sling, por lo que debe definir un tema de trabajo para su caso de uso.
Por ejemplo, vea
IDSJob.IDS_EXTENDSCRIPT_JOB
para el trabajador del proxy IDS. -
El paso externo se utiliza para almacenar en déclencheur el evento y luego esperar hasta que termine; esto se hace sondeando el ID. Desarrolle su propio paso para implementar nuevas funciones.
Implemente un
WorkflowExternalProcess
y, a continuación, utilice la API de JobService y el tema del trabajo para preparar un evento de trabajo y enviarlo al JobService (un servicio OSGi).Por ejemplo, consulte
INDDMediaExtractProcess
.java para el trabajador del proxy IDS. -
Implemente un controlador de trabajo para el tema. Este controlador requiere desarrollo para que realice la acción específica y se considere la implementación de trabajador.
Por ejemplo, vea
IDSJobProcessor.java
para el trabajador del proxy IDS. -
Use
ProxyUtil.java
en dam-commons. Esto permite enviar trabajos a los trabajadores mediante el proxy DAM.