Serverseitige Anpassung

⇐ Funktionsgrundlagen Client-seitige Anpassung imetall
SCF-Handlebars Helpers imetall

Java-APIs

HINWEIS

Der Paketspeicherort der Communities-APIs kann sich ändern, wenn von einer Hauptversion zur nächsten aktualisiert wird.

SocialComponent-Schnittstelle

SocialComponents sind POJOs, die eine Ressource für eine AEM Communities-Funktion darstellen. Idealerweise stellt jede SocialComponent einen bestimmten resourceType mit offen gelegten GETters dar, die dem Client Daten bereitstellen, damit die Ressource korrekt dargestellt wird. Alle Geschäftslogik und Ansichtslogik sind in der SocialComponent eingeschlossen, einschließlich der Sitzungsinformationen des Site-Besuchers, sofern erforderlich.

Die Schnittstelle definiert einen grundlegenden Satz von GETters, die zur Darstellung einer Ressource erforderlich sind. Wichtig ist, dass die Schnittstelle die Methoden Map<String, Object> getAsMap() und String toJSONString() vorschreibt, die zum Rendern von Handlebars-Vorlagen und zum Bereitstellen von GET JSON-Endpunkten für Ressourcen erforderlich sind.

Alle SocialComponent-Klassen müssen die Schnittstelle com.adobe.cq.social.scf.SocialComponent implementieren

SocialCollectionComponent-Schnittstelle

Die Schnittstelle SocialCollectionComponent erweitert die Schnittstelle SocialComponent , um Ressourcen besser darzustellen, die Sammlungen anderer Ressourcen sind.

Alle SocialCollectionComponent-Klassen müssen die Schnittstelle com.adobe.cq.social.scf.SocialCollectionComponent implementieren

SocialComponentFactory-Schnittstelle

Eine SocialComponentFactory (Factory) registriert eine SocialComponent mit dem Framework. Die Factory bietet eine Möglichkeit, dem Framework mitzuteilen, welche SocialComponents für einen bestimmten resourceType verfügbar sind und welche Priorität darin besteht, ranking&ast; wenn mehrere SocialComponents identifiziert werden.

Eine SocialComponentFactory ist für das Erstellen einer Instanz der ausgewählten SocialComponent verantwortlich, die es ermöglicht, alle Abhängigkeiten, die von der SocialComponent benötigt werden, mithilfe von DI-Verfahren aus der Factory einzufügen.

Eine SocialComponentFactory ist ein OSGi-Dienst und hat Zugriff auf andere OSGi-Dienste, die über einen Konstruktor an die SocialComponent übergeben werden können.

Alle SocialComponentFactory-Klassen müssen die Schnittstelle com.adobe.cq.social.scf.SocialComponentFactory implementieren

Eine Implementierung der Methode SocialComponentFactory.getPriority() sollte den höchsten Wert zurückgeben, damit die Factory für den angegebenen resourceType verwendet wird, wie von getResourceType() zurückgegeben.

SocialComponentFactoryManager-Schnittstelle

Der SocialComponentFactoryManager (manager) verwaltet alle im Framework registrierten SocialComponents und ist für die Auswahl der SocialComponentFactory für eine bestimmte Ressource (resourceType) verantwortlich. Wenn für einen bestimmten resourceType keine Fabriken registriert sind, gibt der Manager eine Factory mit dem nächsten Supertyp für die jeweilige Ressource zurück.

Ein SocialComponentFactoryManager ist ein OSGi-Dienst und hat Zugriff auf andere OSGi-Dienste, die über einen Konstruktor an die SocialComponent übergeben werden können.

Ein Handle für den OSGi-Dienst wird durch Aufrufen von com.adobe.cq.social.scf.SocialComponentFactoryManager abgerufen

HTTP-API - POST Requests

PostOperation-Klasse

Die HTTP-API-POST-Endpunkte sind PostOperation-Klassen, die durch Implementierung der SlingPostOperationSchnittstelle (package org.apache.sling.servlets.post) definiert werden.

Die PostOperationEndpunkt-Implementierung setzt sling.post.operationauf einen Wert, auf den der Vorgang reagieren wird. Alle POST-Anfragen mit einem:operation -Parameter, der auf diesen Wert gesetzt ist, werden dieser Implementierungsklasse zugewiesen.

Der PostOperationruft SocialOperationauf, der die für den Vorgang erforderlichen Aktionen durchführt.

PostOperationempfängt das Ergebnis von SocialOperationund gibt die entsprechende Antwort an den Client zurück.

SocialOperation-Klasse

Jeder SocialOperationEndpunkt erweitert die Klasse AbstractSocialOperation und überschreibt die Methode performOperation().Diese Methode führt alle Aktionen durch, die zum Abschließen des Vorgangs und zum Zurückgeben eines SocialOperationResultoder zum Ausgeben eines OperationException erforderlich sind. In diesem Fall wird anstelle der normalen JSON-Antwort- oder Erfolgs-HTTP-Status-Code ein HTTP-Fehlerstatus mit einer Meldung zurückgegeben, sofern verfügbar.

Die Erweiterung AbstractSocialOperationermöglicht die Wiederverwendung von SocialComponentszum Senden von JSON-Antworten.

SocialOperationResult Class

Die SocialOperationResultKlasse wird als Ergebnis von SocialOperationzurückgegeben und besteht aus einer SocialComponent-, HTTP-Status-Code- und HTTP-Statusmeldung.

SocialComponentstellt die Ressource dar, die vom Vorgang betroffen war.

Bei einem Vorgang vom Typ Erstellen stellt das im SocialOperationResultenthaltene SocialComponentdie soeben erstellte Ressource dar und stellt für den Vorgang Aktualisieren die Ressource dar, die durch den Vorgang verändert wurde. Für einen Löschvorgang wird kein SocialComponentzurückgegeben.

Die verwendeten Erfolgs-HTTP-Status-Codes sind

  • 201 für Vorgänge zum Erstellen
  • 200 für Aktualisierungsvorgänge
  • 204 für Löschvorgänge

OperationException-Klasse

Bei Ausführung eines Vorgangs kann ein OperationExceptonausgegeben werden, wenn die Anfrage ungültig ist oder ein anderer Fehler auftritt, z. B. interne Fehler, ungültige Parameterwerte, falsche Berechtigungen usw. Ein OperationExceptionbesteht aus einem HTTP-Statuscode und einer Fehlermeldung, die an den Client als Antwort auf PostOperatoin zurückgegeben werden.

OperationService-Klasse

Das Social-Komponenten-Framework empfiehlt, dass die für die Ausführung des Vorgangs verantwortliche Geschäftslogik nicht innerhalb der SocialOperationKlasse implementiert, sondern stattdessen an einen OSGi-Dienst delegiert wird. Durch die Verwendung eines OSGi-Dienstes für Geschäftslogik kann ein SocialComponent, auf den ein SocialOperationEndpunkt reagiert, in anderen Code integriert werden und unterschiedliche Geschäftslogik angewendet werden.

Alle OperationServiceKlassen erweitern AbstractOperationService, wodurch zusätzliche Erweiterungen möglich sind, die in den ausgeführten Vorgang eingebunden werden können. Jeder Vorgang im Dienst wird durch eine SocialOperationKlasse dargestellt. Die Klasse OperationExtensionskann während der Ausführung des Vorgangs durch Aufruf der Methoden aufgerufen werden

  • performBeforeActions()
    Ermöglicht Vorab-Prüfungen/Vorab-Bearbeitung und Überprüfungen
  • performAfterActions()
    Ermöglicht die weitere Änderung von Ressourcen oder das Aufrufen benutzerdefinierter Ereignisse, Workflows usw.

OperationExtension-Klasse

OperationExtension-Klassen sind benutzerdefinierte Code-Abschnitte, die in einen Vorgang eingefügt werden können, der eine Anpassung der Vorgänge an die Geschäftsanforderungen ermöglicht. Die Verbraucher der Komponente können der Komponente dynamisch und schrittweise Funktionen hinzufügen. Das Erweiterungs-/Erweiterungs-Muster ermöglicht es Entwicklern, sich ausschließlich auf die Erweiterungen selbst zu konzentrieren, und macht das Kopieren und Überschreiben ganzer Vorgänge und Komponenten überflüssig.

Beispielcode

Beispielcode ist im Repository Adobe Marketing Cloud GitHub verfügbar. Suchen Sie nach Projekten mit dem Präfix aem-communities oder aem-scf.

Best Practices

Im Abschnitt Coding Guidelines finden Sie verschiedene Codierungsrichtlinien und Best Practices für AEM Communities-Entwickler.

Weitere Informationen zum Zugriff auf benutzergenerierte Inhalte finden Sie unter Storage Resource Provider (SRP) for UGC .

⇐ Funktionsgrundlagen Client-seitige Anpassung imetall
SCF-Handlebars Helpers imetall

Auf dieser Seite