Show Menu
TÓPICOS×

Desenvolvimento de proxy de ativos

O Adobe Experience Manager (AEM) Assets usa um proxy para distribuir o processamento de determinadas tarefas.
Um proxy é uma instância específica (e às vezes separada) do AEM que usa os funcionários proxy como processadores responsáveis por manipular um trabalho e criar um resultado. Um funcionário proxy pode ser usado para uma grande variedade de tarefas. No caso de um proxy do AEM Assets, isso pode ser usado para carregar ativos para renderização nos ativos AEM. Por exemplo, o trabalho proxy do IDS usa um InDesign Server para processar arquivos para uso nos ativos AEM.
Quando o proxy é uma instância do AEM separada, isso ajuda a reduzir a carga nas instâncias de criação do AEM. Por padrão, o AEM Assets executa as tarefas de processamento de ativos na mesma JVM (externalizada por proxy) para reduzir a carga na instância de criação do AEM.

Proxy (Acesso HTTP)

Um proxy está disponível via Servlet HTTP quando está configurado para aceitar trabalhos de processamento em: /libs/dam/cloud/proxy . Este servlet cria um trabalho sling a partir dos parâmetros publicados. Isso é adicionado à fila de trabalhos proxy e conectado ao trabalhador proxy apropriado.

Operações suportadas

  • job
    Requisitos : o parâmetro jobevent deve ser definido como um mapa de valores serializado. Isso é usado para criar um Event para um processador de trabalho.
    Resultado : Adiciona um novo trabalho. Se bem-sucedido, uma ID de trabalho exclusiva será retornada.
curl -u admin:admin -F":operation=job" -F"someproperty=xxxxxxxxxxxx"
    -F"jobevent=serialized value map" http://localhost:4502/libs/dam/cloud/proxy

  • result
    Requisitos : o parâmetro jobid deve ser definido.
    Resultado : Retorna uma representação JSON do Nó de resultado, conforme criado pelo processador de trabalho.
curl -u admin:admin -F":operation=result" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502   /libs/dam/cloud/proxy

  • resource
    Requisitos : o parâmetro jobid deve ser definido.
    Resultado : Retorna um recurso associado ao trabalho especificado.
curl -u admin:admin -F":operation=resource" -F"jobid=xxxxxxxxxxxx"
    -F"resourcePath=something.pdf" http://localhost:4502/libs/dam/cloud/proxy

  • remove
    Requisitos : o parâmetro jobid deve ser definido.
    Resultados : Remove um trabalho, se encontrado.
curl -u admin:admin -F":operation=remove" -F"jobid=xxxxxxxxxxxx"
    http://localhost:4502/libs/dam/cloud/proxy

Proxy Worker

Um trabalhador proxy é um processador responsável por manipular um trabalho e criar um resultado. Os funcionários residem na instância proxy e devem implementar o sling JobProcessor para serem reconhecidos como um trabalhador proxy.
O trabalhador deve implementar o sling JobProcessor para ser reconhecido como um trabalhador proxy.

API do cliente

JobService está disponível como um serviço OSGi que fornece métodos para criar trabalhos, remover trabalhos e obter resultados desses trabalhos. A implementação padrão deste serviço ( JobServiceImpl ) usa o cliente HTTP para se comunicar com o servlet proxy remoto.
Este é um exemplo de uso da 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);

Configurações do Cloud Service

A documentação de referência da API de proxy está disponível em com.day.cq.dam.api.proxy .
As configurações de proxy e de trabalho proxy estão disponíveis por meio de configurações de serviços em nuvem, conforme acessado pelo console de ferramentas do AEM Assets ou em /etc/cloudservices/proxy . Espera-se que cada representante adicione um nó em /etc/cloudservices/proxy para detalhes de configuração específicos do trabalhador (por exemplo, /etc/cloudservices/proxy/workername ).
Consulte Configuração do Agente Proxy do Servidor Indesign e configuração do Cloud Services para obter mais informações.
Este é um exemplo de uso da 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");

Desenvolvendo um representante personalizado

O funcionário proxy IDS é um exemplo de um funcionário proxy do AEM Assets que já é fornecido prontamente para terceirizar o processamento de ativos do Indesign.
Você também pode desenvolver e configurar seu próprio funcionário proxy do AEM Assets para criar um funcionário especializado para despachar e terceirizar suas tarefas de processamento do AEM Assets.
A configuração de seu próprio representante personalizado requer que você:
  • Configure e implemente (usando o evento Sling):
    • um tópico de trabalho personalizado
    • um manipulador de eventos de trabalho personalizado
  • Em seguida, use a API JobService para:
    • despache seu trabalho personalizado para o proxy
    • gerenciar seu trabalho
  • Se quiser usar o proxy de um fluxo de trabalho, você deve implementar uma etapa externa personalizada usando a API WorkflowExternalProcess e a API JobService.
O diagrama e as etapas a seguir detalham como proceder:
Nas etapas a seguir, os equivalentes do Indesign são indicados como exemplos de referência.
  1. Um trabalho do Sling é usado, portanto, é necessário definir um tópico de trabalho para seu caso de uso.
    Como exemplo, consulte IDSJob.IDS_EXTENDSCRIPT_JOB para obter o representante do IDS.
  2. A etapa externa é usada para acionar o evento e, em seguida, aguardar até que ele seja concluído; isso é feito por pesquisa no id. Você deve desenvolver sua própria etapa para implementar novas funcionalidades.
    Implemente um WorkflowExternalProcess e, em seguida, use a API JobService e o tópico de seu trabalho para preparar um evento de trabalho e enviá-lo para o JobService (um serviço OSGi).
    Como exemplo, consulte INDDMediaExtractProcess .java para o trabalho proxy do IDS.
  3. Implemente um gerenciador de tarefas para o seu tópico. Esse manipulador requer desenvolvimento para que execute sua ação específica e seja considerado a implementação do trabalhador.
    Como exemplo, consulte IDSJobProcessor.java para obter o representante do IDS.
  4. Aproveite o ProxyUtil.java dialeto comum. Isso permite que você despache trabalhos para trabalhadores usando o proxy dam.
O que a estrutura proxy do AEM Assets não fornece prontamente é o mecanismo de pool.
A integração do InDesign permite o acesso de um pool de servidores do InDesign (IDSPool). Esse pooling é específico para a integração do Indesign e não faz parte da estrutura proxy do AEM Assets.
Sincronização dos resultados:
Com nenhuma instância usando o mesmo proxy, o resultado do processamento permanece com o proxy. É tarefa do cliente (autor de AEM) solicitar o resultado usando a mesma ID de trabalho exclusiva que foi fornecida ao cliente na criação do trabalho. O proxy simplesmente faz o trabalho e mantém o resultado pronto para ser solicitado.