Sviluppo proxy risorse

Adobe Experience Manager (AEM) Assets utilizza un proxy per distribuire l'elaborazione per determinate attività.

Un proxy è un'istanza AEM specifica (e a volte separata) che utilizza i proxy worker come processori responsabili della gestione di un processo e della creazione di un risultato. Un lavoratore proxy può essere utilizzato per un'ampia gamma di attività. Nel caso di un proxy AEM Assets può essere utilizzato per caricare le risorse per il rendering all'interno AEM Assets. Ad esempio, il lavoratore proxy IDS utilizza un InDesign Server per elaborare i file da utilizzare in AEM Assets.

Se il proxy è un’istanza AEM separata, questo consente di ridurre il carico sulle istanze di authoring AEM. Per impostazione predefinita, AEM Assets esegue le attività di elaborazione delle risorse nella stessa JVM (esternalizzata tramite proxy) per ridurre il carico sull’istanza di creazione AEM.

Proxy (accesso HTTP)

Un proxy è disponibile tramite il servlet HTTP quando è configurato per accettare processi di elaborazione in: /libs/dam/cloud/proxy. Questo servlet crea un processo di sling dai parametri inseriti. Questo viene aggiunto alla coda di processo del proxy e collegato al lavoratore proxy appropriato.

Operazioni supportate

  • job

    Requisiti: il parametro jobevent deve essere impostato come una mappa di valore serializzata. Viene utilizzato per creare un Event per un processore di processo.

    Risultato: Aggiunge un nuovo processo. In caso di esito positivo, viene restituito un ID di processo univoco.

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

    Requisiti: il parametro jobid deve essere impostato.

    Risultato: Restituisce una rappresentazione JSON del nodo risultato creato dal processore del processo.

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

    Requisiti: il parametro jobid deve essere impostato.

    Risultato: Restituisce una risorsa associata al processo specificato.

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

    Requisiti: il parametro jobid deve essere impostato.

    Risultati: Rimuove un processo se viene trovato.

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

Proxy Worker

Un lavoratore proxy è un processore responsabile della gestione di un processo e della creazione di un risultato. I lavoratori risiedono nell'istanza proxy e devono implementare sling JobProcessor per essere riconosciuti come proxy.

NOTA

Il lavoratore deve implementare sling JobProcessor per essere riconosciuto come lavoratore proxy.

API client

JobService è disponibile come servizio OSGi che fornisce metodi per creare processi, rimuovere processi e ottenere risultati da tali processi. L'implementazione predefinita di questo servizio (JobServiceImpl) utilizza il client HTTP per comunicare con il servlet proxy remoto.

Esempio di utilizzo delle 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);

Configurazioni Cloud Service

NOTA

La documentazione di riferimento per l'API proxy è disponibile in com.day.cq.dam.api.proxy.

Sia le configurazioni di proxy che quelle di proxy sono disponibili tramite configurazioni di servizi cloud accessibili dalla console AEM Assets Tools o in /etc/cloudservices/proxy. Ogni lavoratore proxy deve aggiungere un nodo in /etc/cloudservices/proxy per i dettagli di configurazione specifici del lavoratore (ad esempio, /etc/cloudservices/proxy/workername).

Esempio di utilizzo delle 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");

Sviluppo di un Proxy Worker personalizzato

Il lavoratore proxy IDS è un esempio di un lavoratore proxy AEM Assets già fornito out-of-the-box per esternalizzare l'elaborazione delle risorse Indesign.

È inoltre possibile sviluppare e configurare un proprio AEM Assets proxy Worker per creare un lavoratore specializzato per l'invio e l'outsourcing attività di elaborazione AEM Assets.

Per impostare un lavoratore proxy personalizzato è necessario:

  • Configurare e implementare (utilizzando Sling eventing):

    • un argomento del processo personalizzato
    • un gestore eventi di processo personalizzato
  • Quindi utilizzate l'API JobService per:

    • invio del processo personalizzato al proxy
    • gestire il lavoro
  • Se desiderate utilizzare il proxy da un flusso di lavoro, dovete implementare un passaggio esterno personalizzato utilizzando l'API WorkflowExternalProcess e l'API JobService.

Nel diagramma seguente e nei passaggi viene descritto come procedere:

chlimage_1-249

NOTA

Nei passaggi seguenti, gli equivalenti di Indesign sono indicati come esempi di riferimento.

  1. Viene utilizzato un processo Sling, pertanto è necessario definire un argomento del processo per il caso d'uso.

    Ad esempio, vedere IDSJob.IDS_EXTENDSCRIPT_JOB per il lavoratore proxy IDS.

  2. Il passaggio esterno viene utilizzato per attivare l’evento e quindi attendere che sia terminato; questo viene fatto tramite un sondaggio sull'ID. Per implementare le nuove funzionalità è necessario sviluppare un proprio passaggio.

    Implementate un WorkflowExternalProcess, quindi utilizzate l'API JobService e l'argomento del processo per preparare un evento di processo e inviarlo a JobService (un servizio OSGi).

    Ad esempio, vedere INDDMediaExtractProcess.java per il lavoratore proxy IDS.

  3. Implementare un gestore di processi per l’argomento. Questo gestore richiede lo sviluppo in modo che esegua l'azione specifica e sia considerato come implementazione del lavoratore.

    Ad esempio, vedere IDSJobProcessor.java per il lavoratore proxy IDS.

  4. Utilizzare ProxyUtil.java in dam-commons. Questo consente di inviare i processi ai lavoratori utilizzando il proxy DAM.

NOTA

Ciò che il framework proxy AEM Assets non fornisce è il meccanismo del pool.

L'integrazione InDesign consente l'accesso a un pool di server indesign (IDSPool). Questo pool è specifico per l'integrazione Indesign e non fa parte del framework proxy AEM Assets .

NOTA

Sincronizzazione dei risultati:

In caso di n istanze che utilizzano lo stesso proxy, il risultato dell'elaborazione rimane con il proxy. È compito del client (AEM Author) richiedere il risultato utilizzando lo stesso ID processo univoco fornito al client al momento della creazione del processo. Il proxy ottiene semplicemente il lavoro e mantiene il risultato pronto per essere richiesto.

In questa pagina

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free