Adobe Experience Manager (AEM) LiveCycle Connector ermöglicht unterbrechungsfreies Abrufen von Adobe LiveCycle ES4 Document Services aus AEM-Web-Apps und -Workflows. LiveCycle stellt einen Rich-Client-SDK bereit, der es Clientanwendungen ermöglicht, die Dienste von LiveCycle mit Java-APIs zu starten. AEM LiveCycle Connector vereinfacht die Verwendung dieser APIs innerhalb der OSGi-Umgebung.
AEM LiveCycle Connector ist Teil des AEM Forms-Add-On-Pakets. Nachdem Sie das Add-On-Paket für AEM Forms installiert haben, führen Sie die folgenden Schritte aus, um Details des LiveCycle-Servers zur AEM Web Console hinzuzufügen.
- Durchsuchen Sie die Adobe LiveCycle Client SDK-Konfigurationskomponente im Konfigurationsmanager der AEM-Webkonsole.
- Klicken Sie auf die Komponente, um URL, Benutzernamen und Kennwort des Konfigurationsservers zu bearbeiten.
- Überprüfen Sie die Einstellungen und klicken Sie auf Speichern.
Obwohl die Eigenschaften selbsterklärend sind, werden im Folgenden die wichtigsten erläutert:
- Server URL – gibt die URL für den LiveCycle-Server an. Wenn LiveCycle und AEM über HTTPS kommunizieren sollen, starten Sie AEM mit der folgenden JVM-Option Argument
-Djavax.net.ssl.trustStore=<Pfad zu LC-Keystore>. - Benutzername – gibt den Benutzernamen des Kontos an, das verwendet wird, um die Kommunikation zwischen AEM und LiveCycle herzustellen. Das Konto ist ein LiveCycle-Benutzerkonto, das zum Start von Document Services berechtigt ist.
- Kennwort – gibt das Kennwort an.
- Dienstname – gibt die Dienste an, die mit den Benutzeranmeldedaten aus den Feldern für Benutzernamen und Kennwort gestartet werden. Standardmäßig werden beim Starten von LiveCycle-Diensten keine Benutzerinformationen weitergegeben.
Clientanwendungen können LiveCycle-Dienste programmgesteuert über eine Java API, Webdienste, Remoting und REST starten. Bei Java-Clients kann die Anwendung LiveCycle SDK verwenden. Das LiveCycle SDK stellt eine Java-API für den ferngesteuerten Start dieser Dienste zur Verfügung. Um beispielsweise ein Microsoft Word-Dokument in ein PDF-Dokument zu konvertieren, startet der Client GeneratePDFService. Der Aufruf wird mittels folgender Schritte ausgeführt:
- Clientinstanzen als OSGi-Dienst – Die als OSGI-Pakete gebündelten Clients sind im Abschnitt Document Services-Liste aufgeführt. Jede Client-JAR-Datei registriert die Client-Instanz als OSGi-Dienst in der OSGi Service Registry.
- Weitergabe von Benutzerinformationen: Die erforderlichen Verbindungsdetails für die Verbindung mit dem LiveCycle-Server werden an einem zentralen Speicherort verwaltet.
- ServiceClientFactory-Dienst: Zum Starten der Prozesse kann die Client-Anwendung auf die ServiceClientFactory-Instanz zugreifen.
-
Legen Sie Maven-Abhängigkeiten fest. Fügen Sie „dependency“ in der erforderlichen Client-JAR-Datei in der maven pom.xml-Datei hinzu. Fügen Sie „dependency“ mindestens zu den JARs „adobe-livecycle-client“ und „adobe-usermanager-client“ hinzu.
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-livecycle-client</artifactId> <version>11.0.0</version> </dependency> <dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-usermanager-client</artifactId> <version>11.0.0</version> </dependency> <dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-cq-integration-api</artifactId> <version>11.0.0</version> </dependency>
Um einen Dienst zu starten, fügen Sie für den Dienst die zugehörige Maven-Abhängigkeit hinzu. Eine Liste der Abhängigkeiten finden Sie unter Document Service-Liste. Fügen Sie beispielsweise zum Dienst für das Generieren von PDF-Dokumenten die folgende Abhängigkeit hinzu:
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-generatepdf-client</artifactId> <version>11.0.0</version> </dependency>
-
Rufen Sie die Dienstreferenz ab. Machen Sie sich mit der Dienstinstanz vertraut. Wenn Sie eine Java-Klasse schreiben, können Sie die Declarative Services-Anmerkungen verwenden.
import com.adobe.livecycle.generatepdf.client.GeneratePdfServiceClient; import com.adobe.livecycle.generatepdf.client.CreatePDFResult; import com.adobe.idp.Document; @Reference GeneratePdfServiceClient generatePDF; ... Resource r = resourceResolver.getResource("/path/tp/docx"); Document sourceDoc = new Document(r.adaptTo(InputStream.class)); CreatePDFResult result = generatePDF.createPDF2( sourceDoc, extension, //inputFileExtension null, //fileTypeSettings null, //pdfSettings null, //securitySettings settingsDoc, //settingsDoc null //xmpDoc );
Im obigen Code-Fragment wird die createPDF-API von GeneratePdfServiceClient gestartet, um ein Dokument das PDF-Format zu konvertieren. Auf einer JSP-Seite können Sie einen ähnlichen Aufruf mithilfe des folgenden Codes durchführen. Der wesentliche Unterschied besteht darin, dass der folgende Code Sling ScriptHelper verwendet, um auf GeneratePdfServiceClient zuzugreifen.
<%@ page import="com.adobe.livecycle.generatepdf.client.GeneratePdfServiceClient" %> <%@ page import="com.adobe.livecycle.generatepdf.client.CreatePDFResult" %> <%@ page import="com.adobe.idp.Document" %> GeneratePdfServiceClient generatePDF = sling.getService(GeneratePdfServiceClient.class); Document sourceDoc = ... CreatePDFResult result = generatePDF.createPDF2( sourceDoc, extension, //inputFileExtension null, //fileTypeSettings null, //pdfSettings null, //securitySettings settingsDoc, //settingsDoc null //xmpDoc );
In einigen Fällen ist die ServiceClientFactory-Klasse erforderlich. Beispielsweise benötigen Sie ServiceClientFactory, um Prozesse aufzurufen.
import com.adobe.livecycle.dsc.clientsdk.ServiceClientFactoryProvider; import com.adobe.idp.dsc.clientsdk.ServiceClientFactory; @Reference ServiceClientFactoryProvider scfProvider; ... ServiceClientFactory scf = scfProvider.getDefaultServiceClientFactory(); ...
Für nahezu jeden Document Service in LiveCycle ist eine Authentifizierung erforderlich. Sie können eine der folgenden Optionen verwenden, um diese Dienste zu starten, ohne explizit Anmeldedaten im Code anzugeben:
Die LiveCycle Client SDK-Konfiguration enthält eine Einstellung für Dienstnamen. Diese Konfiguration ist eine Liste der Dienste, für die die Aufruflogik Administratorberechtigungen für den sofortigen Einsatz verwendet. Wenn Sie beispielsweise DirectoryManager-Dienste (Teil der User Management-API) zur Liste hinzufügen, kann jeder Client-Code den Dienst direkt verwenden und die Aufrufebene gibt die konfigurierten Benutzerdaten automatisch im Rahmen der an den LiveCycle-Server gesendeten Anfrage weiter.
Als Teil der Integration wird ein neuer RunAsManager-Dienst zur Verfügung gestellt. Dieser ermöglicht es Ihnen, die zu verwendenden Anmeldedaten programmgesteuert zu kontrollieren, wenn ein Aufruf zum LiveCycle-Server erfolgt.
import com.adobe.livecycle.dsc.clientsdk.security.PasswordCredential; import com.adobe.livecycle.dsc.clientsdk.security.PrivilegedAction; import com.adobe.livecycle.dsc.clientsdk.security.RunAsManager; import com.adobe.idp.dsc.registry.component.ComponentRegistry; @Reference private RunAsManager runAsManager; List<Component> components = runAsManager.doPrivileged(new PrivilegedAction<List<Component>>() { public List<Component> run() { return componentRegistry.getComponents(); } }); assertNotNull(components);
Wenn Sie andere Anmeldedaten weitergeben möchten, können Sie die Overloading-Methode verwenden, die eine PasswordCredential-Instanz in Anspruch nimmt.
PasswordCredential credential = new PasswordCredential("administrator","password"); List<Component> components = runAsManager.doPrivileged(new PrivilegedAction<List<Component>>() { public List<Component> run() { return componentRegistry.getComponents(); } },credential);
Wenn Sie einen Prozess aufrufen oder die ServiceClientFactory-Klasse direkt verwenden und eine InvocationRequest erstellen, können Sie eine Eigenschaft festlegen, um anzugeben, dass die Aufrufebene konfigurierte Benutzerdaten verwenden soll.
import com.adobe.idp.dsc.InvocationResponse import com.adobe.idp.dsc.InvocationRequest import com.adobe.livecycle.dsc.clientsdk.ServiceClientFactoryProvider import com.adobe.idp.dsc.clientsdk.ServiceClientFactory import com.adobe.livecycle.dsc.clientsdk.InvocationProperties ServiceClientFactoryProvider scfp = sling.getService(ServiceClientFactoryProvider.class) ServiceClientFactory serviceClientFactory = scfp.getDefaultServiceClientFactory() InvocationRequest ir = serviceClientFactory.createInvocationRequest("sample/LetterSubmissionProcess", "invoke", new HashMap(), true); //Here we are invoking the request with system user ir.setProperty(InvocationProperties.INVOKER_TYPE,InvocationProperties.INVOKER_TYPE_SYSTEM) InvocationResponse response = serviceClientFactory.getServiceClient().invoke(ir);
Document Services-Liste
Adobe LiveCycle Client SDK API Bundle
Adobe LiveCycle Client SDK Bundle
Adobe LiveCycle TaskManager Client Bundle
Adobe LiveCycle Workflow Client Bundle
Adobe LiveCycle PDF Generator Client Bundle
Adobe LiveCycle Application Manager Client Bundle
Adobe LiveCycle Assembler Client Bundle
Adobe LiveCycle Form Data Integration Client Bundle
Adobe LiveCycle Forms Client Bundle
Adobe LiveCycle Output Client Bundle
Adobe LiveCycle Reader Extensions Client Bundle
Adobe LiveCycle Rights Manager Client Bundle
Adobe LiveCycle Signatures Client Bundle
Folgende Dienste sind verfügbar:
- com.adobe.idp.um.api.AuthenticationManager
- com.adobe.idp.um.api.DirectoryManager
- com.adobe.idp.um.api.AuthorizationManager
- com.adobe.idp.dsc.registry.service.ServiceRegistry
- com.adobe.idp.dsc.registry.component.ComponentRegistry
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-livecycle-client</artifactId> <version>11.0.0</version> </dependency> <dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-usermanager-client</artifactId> <version>11.0.0</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.livecycle.dsc.clientsdk.security.RunAsManager
- com.adobe.livecycle.dsc.clientsdk.ServiceClientFactoryProvider
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-livecycle-cq-integration-api</artifactId> <version>1.1.10</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.idp.taskmanager.dsc.client.task.TaskManager
- com.adobe.idp.taskmanager.dsc.client.TaskManagerQueryService
- com.adobe.idp.taskmanager.dsc.client.queuemanager.QueueManager
- com.adobe.idp.taskmanager.dsc.client.emailsettings.EmailSettingService
- com.adobe.idp.taskmanager.dsc.client.endpoint.TaskManagerEndpointClient
- com.adobe.idp.taskmanager.dsc.client.userlist.UserlistService
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-taskmanager-client</artifactId> <version>11.0.0</version> </dependency>
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-workflow-client-sdk</artifactId> <version>11.0.0</version> </dependency>
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-generatepdf-client</artifactId> <version>11.0.0</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.idp.applicationmanager.service.ApplicationManager
- com.adobe.livecycle.applicationmanager.client.ApplicationManager
- com.adobe.livecycle.design.service.DesigntimeService
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-applicationmanager-client-sdk</artifactId> <version>11.0.0</version> </dependency>
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-assembler-client</artifactId> <version>11.0.0</version> </dependency>
Der folgende Dienst ist verfügbar:
- com.adobe.livecycle.formdataintegration.client.FormDataIntegrationClient
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-formdataintegration-client</artifactId> <version>11.0.0</version> </dependency>
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-forms-client</artifactId> <version>11.0.0</version> </dependency>
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-output-client</artifactId> <version>11.0.0</version> </dependency>
Der folgende Dienst ist verfügbar:
- com.adobe.livecycle.readerextensions.client.ReaderExtensionsServiceClient
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-reader-extensions-client</artifactId> <version>11.0.0</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.livecycle.rightsmanagement.client.DocumentManager
- com.adobe.livecycle.rightsmanagement.client.EventManager
- com.adobe.livecycle.rightsmanagement.client.ExternalUserManager
- com.adobe.livecycle.rightsmanagement.client.LicenseManager
- com.adobe.livecycle.rightsmanagement.client.WatermarkManager
- com.adobe.livecycle.rightsmanagement.client.PolicyManager
- com.adobe.livecycle.rightsmanagement.client.AbstractPolicyManager
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-rightsmanagement-client</artifactId> <version>11.0.0</version> </dependency>
Der folgende Dienst ist verfügbar:
- com.adobe.livecycle.signatures.client.SignatureServiceClientInterface
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-signatures-client</artifactId> <version>11.0.0</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.truststore.dsc.TrustConfigurationService
- com.adobe.truststore.dsc.CRLService
- com.adobe.truststore.dsc.CredentialService
- com.adobe.truststore.dsc.CertificateService
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-truststore-client</artifactId> <version>11.0.0</version> </dependency>
Folgende Dienste sind verfügbar:
- com.adobe.repository.bindings.ResourceRepository
- com.adobe.repository.bindings.ResourceSynchronizer
<dependency> <groupId>com.adobe.livecycle</groupId> <artifactId>adobe-repository-client</artifactId> <version>11.0.0</version> </dependency>