⇐ Funzioni Essenziali | Personalizzazione lato client ⇒ |
---|---|
Helper manubrio SCF |
La posizione del pacchetto delle API Community è soggetta a modifiche quando si esegue l'aggiornamento da una versione principale a quella successiva.
I componenti social sono POJO che rappresentano una risorsa per una funzione AEM Communities . Idealmente, ogni SocialComponent rappresenta uno specifico resourceType con GETters esposti che forniscono i dati al client in modo che la risorsa sia correttamente rappresentata. Tutta la logica di business e di visualizzazione è racchiusa in SocialComponent, incluse le informazioni sulla sessione del visitatore del sito, se necessario.
L'interfaccia definisce un set base di GETters necessari per rappresentare una risorsa. È importante notare che l'interfaccia specifica i metodi Map<String, Object> getAsMap() e String toJSONString() necessari per eseguire il rendering dei modelli Handlebars ed esporre gli endpoint JSON GET per le risorse.
Tutte le classi SocialComponent devono implementare l'interfaccia com.adobe.cq.social.scf.SocialComponent
L'interfaccia SocialCollectionComponent estende l'interfaccia SocialComponent per rappresentare meglio le risorse che sono raccolte di altre risorse.
Tutte le classi SocialCollectionComponent devono implementare l'interfaccia com.adobe.cq.social.scf.SocialCollectionComponent
Un SocialComponentFactory (factory) registra un SocialComponent con il framework. La fabbrica fornisce un mezzo per far sapere al framework quali SocialComponents sono disponibili per un dato resourceType e la loro priorità graduazione* quando vengono identificati più componenti social.
SocialComponentFactory è responsabile della creazione di un'istanza del SocialComponent selezionato che consente di inserire tutte le dipendenze necessarie dal SocialComponent dalla fabbrica utilizzando le procedure DI.
SocialComponentFactory è un servizio OSGi e ha accesso ad altri servizi OSGi che possono essere passati a SocialComponent tramite un costruttore.
Tutte le classi SocialComponentFactory devono implementare l'interfaccia com.adobe.cq.social.scf.SocialComponentFactory
L'implementazione del metodo SocialComponentFactory.getPriority() deve restituire il valore più alto affinché la fabbrica venga utilizzata per il resourceType specificato come restituito da getResourceType().
SocialComponentFactoryManager (manager) gestisce tutti i SocialComponents registrati con il framework ed è responsabile della selezione di SocialComponentFactory da utilizzare per una determinata risorsa (resourceType). Se non sono registrate fabbriche per uno specifico resourceType, il manager restituirà una fabbrica con il super type più vicino per la risorsa specificata.
Un SocialComponentFactoryManager è un servizio OSGi e ha accesso ad altri servizi OSGi che possono essere passati a SocialComponent tramite un costruttore.
Un handle per il servizio OSGi viene ottenuto richiamando com.adobe.cq.social.scf.SocialComponentFactoryManager
Gli endpoint POST API HTTP sono classi PostOperation definite implementando l'interfaccia SlingPostOperation
pacchetto org.apache.sling.servlets.post
.
L'implementazione dell'endpoint PostOperation
imposta sling.post.operation
su un valore a cui l'operazione risponderà. Tutte le richieste di POST con un parametro:operation impostato su tale valore verranno delegate a questa classe di implementazione.
Il PostOperation
richiama il SocialOperation
che esegue le azioni necessarie per l'operazione.
Il PostOperation
riceve il risultato dal SocialOperation
e restituisce la risposta appropriata al client.
Ogni SocialOperation
endpoint estende la classe AbstractSocialOperation e sostituisce il metodo performOperation().
Questo metodo esegue tutte le azioni necessarie per completare l'operazione e restituire un SocialOperationResult
oppure genera un OperationException
, nel qual caso viene restituito uno stato di errore HTTP con un messaggio, se disponibile, al posto del normale codice di stato HTTP di risposta JSON o di riuscita.
L'estensione di AbstractSocialOperation
consente il riutilizzo di SocialComponents
per inviare risposte JSON.
La classe SocialOperationResult
viene restituita come risultato della classe SocialOperation
ed è composta da un SocialComponent
, da un codice di stato HTTP e da un messaggio di stato HTTP.
La SocialComponent
rappresenta la risorsa interessata dall'operazione.
Per un'operazione di creazione, la SocialComponent
inclusa nella SocialOperationResult
rappresenta la risorsa appena creata e, per un'operazione di aggiornamento, rappresenta la risorsa modificata dall'operazione. Per un'operazione di eliminazione non viene restituito nessun SocialComponent
.
I codici di stato HTTP utilizzati per il successo sono:
Se la richiesta non è valida o si verifica un altro errore, ad esempio errori interni, valori errati dei parametri, autorizzazioni non corrette e così via, è possibile generare un OperationExcepton
durante l'esecuzione di un'operazione. Un OperationException
è composto da un codice di stato HTTP e un messaggio di errore, che vengono restituiti al client come risposta al PostOperatoin
.
Il framework dei componenti social consiglia di non implementare la logica aziendale responsabile dell'esecuzione dell'operazione all'interno della classe SocialOperation
ma di delegarla a un servizio OSGi. L'utilizzo di un servizio OSGi per la logica aziendale consente di integrare un SocialComponent
, basato su un SocialOperation
endpoint, con un altro codice e applicare una logica aziendale diversa.
Tutte le classi OperationService
estendono AbstractOperationService
, consentendo estensioni aggiuntive che possono collegarsi all'operazione in corso. Ogni operazione nel servizio è rappresentata da una SocialOperation
classe. La classe OperationExtensions
può essere richiamata durante l'esecuzione dell'operazione chiamando i metodi
performBeforeActions()
performAfterActions()
OperationExtension
le classi sono pezzi di codice personalizzati che possono essere inseriti in un'operazione che consente la personalizzazione delle operazioni per soddisfare le esigenze aziendali. Gli utenti del componente possono aggiungere al componente in modo dinamico e incrementale funzionalità. Il pattern di estensione/gancio consente agli sviluppatori di concentrarsi esclusivamente sulle estensioni stesse e elimina la necessità di copiare e sovrascrivere intere operazioni e componenti.
Il codice di esempio è disponibile nell'archivio Adobe Marketing Cloud GitHub. Cercare progetti con il prefisso aem-communities
o aem-scf
.
Per informazioni su diverse linee guida di codifica e best practice per sviluppatori AEM Communities, vedere la sezione Linee guida di codifica.
Vedere anche Storage Resource Provider (SRP) per UGC per informazioni sull'accesso ai contenuti generati dall'utente.
⇐ Funzioni Essenziali | Personalizzazione lato client ⇒ |
---|---|
Helper manubrio SCF |