Server-seitige Anpassung server-side-customization

Java™-APIs java-apis

NOTE
Der Paketspeicherort von Communities-APIs kann sich beim Upgrade von einer Hauptversion zur nächsten ändern.

SocialComponent-Benutzeroberfläche socialcomponent-interface

Social-Komponenten sind POJOs, die eine Ressource für eine AEM Communities-Funktion darstellen. Idealerweise stellt jede SocialComponent einen bestimmten resourceType mit bereitgestellten GETters dar, die dem Client Daten bereitstellen, damit die Ressource korrekt dargestellt wird. Die gesamte Geschäfts- und Ansichtslogik ist in der SocialComponent gekapselt, einschließlich der Sitzungsinformationen der Site-Besuchenden, falls erforderlich.

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

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

SocialCollectionComponent-Schnittstelle socialcollectioncomponent-interface

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

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

SocialComponentFactory-Schnittstelle socialcomponentfactory-interface

Eine SocialComponentFactory (Factory) registriert eine SocialComponent im Framework. Die Factory bietet eine Möglichkeit, dem Framework mitzuteilen, welche Social-Komponenten für einen bestimmten resourceType verfügbar sind, und deren Prioritätsreihenfolge, wenn mehrere Social-Komponenten identifiziert werden.

Eine SocialComponentFactory ist für die Erstellung einer Instanz der ausgewählten SocialComponent verantwortlich, sodass alle von der SocialComponent benötigten Abhängigkeiten von der Factory mithilfe von ID-Praktiken eingefügt werden können.

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 für die Factory zurückgeben, die für den angegebenen resourceType verwendet werden soll, wie er von getResourceType() zurückgegeben wird.

SocialComponentFactoryManager-Schnittstelle socialcomponentfactorymanager-interface

Der SocialComponentFactoryManager (Manager) verwaltet alle beim Framework registrierten SocialComponents und ist für die Auswahl der für eine bestimmte Ressource (resourceType) zu verwendenden SocialComponentFactory verantwortlich. Wenn für einen bestimmten resourceType keine Factories registriert sind, gibt der Manager eine Factory mit dem nächsten Supertyp für die angegebene 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-Anfragen http-api-post-requests

PostOperation-Klasse postoperation-class

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

Die PostOperation-Endpunktimplementierung setzt sling.post.operation auf einen Wert, auf den der Vorgang antwortet. Alle POST-Anforderungen, für die ein:operation-Parameter auf diesen Wert festgelegt ist, werden an diese Implementierungsklasse delegiert.

Die PostOperation ruft die SocialOperation auf, die die für den Vorgang erforderlichen Aktionen ausführt.

Der PostOperation empfängt das Ergebnis vom SocialOperation und gibt die entsprechende Antwort an den Client zurück.

SocialOperation-Klasse socialoperation-class

Jeder SocialOperation Endpunkt erweitert die AbstractSocialOperation-Klasse und überschreibt die performOperation(). Diese Methode führt alle Aktionen aus, die zum Abschließen des Vorgangs und Zurückgeben eines SocialOperationResult erforderlich sind. Andernfalls wird ein OperationException ausgelöst. In diesem Fall wird anstelle der normalen JSON-Antwort oder des Erfolgs-HTTP-Status-Codes ein HTTP-Fehlerstatus mit einer Meldung zurückgegeben, sofern verfügbar.

Die Erweiterung von AbstractSocialOperation ermöglicht die Wiederverwendung von SocialComponents zum Senden von JSON-Antworten.

SocialOperationResult-Klasse socialoperationresult-class

Die SocialOperationResult-Klasse wird als Ergebnis der SocialOperation zurückgegeben und besteht aus einer SocialComponent, einem HTTP-Status-Code und einer HTTP-Statusmeldung.

Die SocialComponent stellt die Ressource dar, die von dem Vorgang betroffen war.

Bei einem Erstellungsvorgang stellt der im SocialOperationResult enthaltene SocialComponent die erstellte Ressource dar und bei einem Aktualisierungsvorgang die Ressource, die durch den Vorgang geändert wurde. Für einen Löschvorgang wird kein SocialComponent zurückgegeben.

Die verwendeten HTTP-Erfolgs-Status-Codes sind:

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

OperationException-Klasse operationexception-class

Beim Ausführen eines Vorgangs wird ein OperationExcepton ausgelöst, wenn die Anfrage ungültig ist oder ein anderer Fehler auftritt. Beispielsweise interne Fehler, ungültige Parameterwerte oder falsche Berechtigungen. Ein OperationException besteht aus einem HTTP-Status-Code und einer Fehlermeldung, die als Antwort auf die PostOperatoin an den Client zurückgegeben werden.

OperationService-Klasse operationservice-class

Im Social Component Framework wird empfohlen, die für die Durchführung des Vorgangs verantwortliche Geschäftslogik nicht innerhalb der SocialOperation-Klasse zu implementieren, sondern stattdessen an einen OSGi-Dienst zu delegieren. Durch die Verwendung eines OSGi-Dienstes für die Geschäftslogik kann ein SocialComponent, auf den ein SocialOperation-Endpunkt einwirkt, in anderen Code integriert werden und eine andere Geschäftslogik angewendet werden.

Alle OperationService Klassen erweitern AbstractOperationService und ermöglichen so zusätzliche Erweiterungen, die in den ausgeführten Vorgang eingebunden werden können. Jeder Vorgang im Dienst wird durch eine SocialOperation-Klasse dargestellt. Die OperationExtensions-Klasse kann während der Ausführung des Vorgangs durch Aufruf der Methoden aufgerufen werden

  • performBeforeActions()

    Ermöglicht Vorabprüfungen/Vorab-Bearbeitung und Validierungen

  • performAfterActions()

    Ermöglicht die weitere Bearbeitung von Ressourcen oder das Aufrufen benutzerdefinierter Ereignisse, Workflows usw.

OperationExtension-Klasse operationextension-class

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

Beispielcode sample-code

Beispielcode ist im Repository Adobe Experience Cloud GitHub verfügbar. Nach Projekten mit dem Präfix aem-communities oder aem-scf suchen.

Best Practices best-practices

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

Informationen Zugriff auf benutzergenerierte Inhalte finden Sie unterSpeicherressourcenanbieter (SRP) für benutzergenerierte Inhalte).

recommendation-more-help
81e2cd9d-0789-409d-b87c-2a8ce4f28791