Assets-Proxy-Entwicklung assets-proxy-development

Adobe Experience Manager Assets verwendet einen Proxy, um die Verarbeitung bestimmter Aufgaben zu verteilen.

Ein Proxy ist eine bestimmte (und gelegentlich separate) Experience Manager-Instanz, die Proxy-Worker als Prozessoren verwendet, um Aufträge zu bearbeiten und Ergebnisse zu generieren. Ein Proxy-Worker kann für eine Vielzahl von Aufgaben verwendet werden. Assets-Proxys können Assets laden, die in Assets gerendert werden sollen. Beispielsweise verarbeitet der IDS-Proxy-Worker Dateien, die in Assets verwendet werden sollen, mit einem Adobe InDesign-Server.

Wenn der Proxy eine separate Experience Manager-Instanz ist, wird die Last für die Experience Manager-Autorinstanz(en) reduziert. Standardmäßig führt Assets die Aufgaben zur Asset-Verarbeitung in derselben JVM (externalisiert über Proxy) aus, um die Last für die Experience Manager-Autorinstanz zu reduzieren.

Proxy (HTTP-Zugriff) proxy-http-access

Ein Proxy ist über das HTTP-Servlet verfügbar, wenn die Konfiguration Verarbeitungsaufträge unter /libs/dam/cloud/proxy zulässt. Dieses Servlet erstellt einen Sling-Auftrag aus den geposteten Parametern. Der Auftrag wird dann der Proxy-Auftragswarteschlange hinzugefügt und mit dem entsprechenden Proxy-Worker verbunden.

Unterstützte Vorgänge supported-operations

  • job

    Anforderungen: Der Parameter jobevent muss als serialisierte Wertezuordnung festgelegt werden. Damit wird ein Event für einen Auftragsprozessor erstellt.

    Ergebnis: Fügt einen neuen Auftrag hinzu. Wenn der Vorgang erfolgreich ist, wird eine eindeutige Auftrags-ID zurückgegeben.

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

    Anforderungen: Der Parameter jobid muss festgelegt werden.

    Ergebnis: Gibt die JSON-Darstellung des Ergebnisknotens zurück, wie er durch den Auftragsprozessor erstellt wurde.

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

    Anforderungen: Der Parameter „jobid“ must festgelegt sein.

    Ergebnis: Gibt eine Ressource zurück, die dem jeweiligen Auftrag zugeordnet ist.

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

    Anforderungen: Der Parameter „jobid“ must festgelegt sein.

    Ergebnisse:: Entfernt einen gefundenen Auftrag.

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

Proxy-Worker proxy-worker

Ein Proxy-Worker ist ein Prozessor, der für die Verarbeitung von Aufträgen und die Generierung von Ergebnissen zuständig ist. Worker befinden sich auf der Proxy-Instanz und müssen sling JobProcessor implementieren, damit sie als Proxy-Worker erkannt werden.

NOTE
Worker müssen sling JobProcessor implementieren, damit sie als Proxy-Worker erkannt werden.

Client-API client-api

JobService ist als OSGi-Dienst verfügbar, der Methoden zur Erstellung und Entfernung von Aufträgen und dem Abruf von Ergebnissen aus den Aufträgen bereitstellt. Die Standardimplementierung des Service (JobServiceImpl) verwendet den HTTP-Client für die Kommunikation mit dem Remote-Proxy-Servlet.

Nachstehend finden Sie ein Beispiel für die API-Verwendung:

@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);

Cloud Service-Konfigurationen cloud-service-configurations

Proxy- und Proxy-Worker-Konfigurationen sind über Cloud-Service-Konfigurationen verfügbar, die in der Tools-Konsole von Assets verfügbar sind oder unter /etc/cloudservices/proxy. Von jedem Proxy-Worker wird erwartet, dass er einen Knoten unter /etc/cloudservices/proxy für Worker-spezifische Konfigurationsdetails (z. B. /etc/cloudservices/proxy/workername) hinzufügt.

NOTE
Weitere Informationen finden Sie unter Konfiguration von InDesign Server Proxy-Worker und Cloud Service-Konfiguration.

Nachstehend finden Sie ein Beispiel für die API-Verwendung:

@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");

Entwickeln eines benutzerdefinierten Proxy-Workers developing-a-customized-proxy-worker

Der IDS-Proxy-Worker ist ein Beispiel für einen Assets-Proxy-Worker, der vorkonfiguriert bereitgestellt wird, um die Verarbeitung der InDesign-Assets auszulagern.

Sie können auch einen eigenen Assets-Proxy-Worker für entwickeln und konfigurieren. Dieser spezialisierte Worker kann die Verarbeitungsaufgaben von Assets verteilen und auslagern.

Für die Einrichtung eines eigenen benutzerdefinierten Proxy-Workers müssen Sie die folgenden Aufgaben ausführen:

  • Einrichten und Implementieren (mit Sling Eventing):

    • ein Thema für den benutzerdefinierten Auftrag
    • einen Ereignis-Handler für benutzerdefinierte Aufträge
  • Verwenden Sie dann die JobService-API, um:

    • benutzerdefinierten Auftrag an Proxy senden
    • Ihren Auftrag zu verwalten
  • Wenn Sie den Proxy aus einem Workflow verwenden möchten, müssen Sie einen benutzerdefinierten, externen Schritt mithilfe der WorkflowExternalProcess-API und der JobService-API implementieren.

Das folgende Diagramm und die folgenden Schritte beschreiben den weiteren Ablauf:

chlimage_1-249

NOTE
In den folgenden Schritten werden InDesign-Äquivalente als Referenzbeispiele angegeben.
  1. Da ein Sling-Auftrag verwendet wird, müssen Sie ein Auftragsthema für Ihren Anwendungsfall definieren.

    Als Beispiel dient IDSJob.IDS_EXTENDSCRIPT_JOB für den IDS-Proxy-Worker.

  2. Mit dem externen Schritt wird das Ereignis ausgelöst, anschließend wird auf den Abschluss gewartet. Hierfür wird die ID abgerufen. Entwickeln Sie einen eigenen Schritt, um eine neue Funktionalität zu implementieren.

    Implementieren Sie einen WorkflowExternalProcess. Bereiten Sie dann mit der JobService-API und Ihrem Auftragsthema ein Auftragsereignis vor und senden Sie es an den JobService (einen OSGi-Dienst).

    Als Beispiel dient INDDMediaExtractProcess.java für den IDS-Proxy-Worker.

  3. Implementieren Sie einen Auftrags-Handler für Ihr Thema. Der Handler muss entwickelt werden, damit er die von Ihnen gewünschte spezifische Aktion ausführt und als Worker-Implementierung betrachtet wird.

    Als Beispiel dient IDSJobProcessor.java für den IDS-Proxy-Worker.

  4. Verwenden Sie ProxyUtil.java in dam-commons. Damit können Sie Aufträge mit dem dam-Proxy an Worker senden.

NOTE
Das Proxy-Framework von Assets stellt keinen vorkonfigurierten Pool-Mechanismus bereit.
Die Integration mit InDesign ermöglicht jedoch den Zugriff auf einen Pool von InDesign-Servern (IDSPool). Dieses Pooling ist spezifisch für die InDesign-Integration und ist kein Teil des Proxy-Frameworks von Assets.
NOTE
Synchronisierung der Ergebnisse:
Bei n Instanzen, die denselben Proxy verwenden, bleibt das Verarbeitungsergebnis beim Proxy. Der Client (Experience Manager-Autor) hat die Aufgabe, das Ergebnis anzufordern. Dabei wird dieselbe eindeutige Auftrags-ID verwendet, die dem Client beim Erstellen des Auftrags zugewiesen wurde. Der Proxy erledigt einfach den Auftrag und hält das Ergebnis abrufbereit.
recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2