Automatizzare il blocco delle pagine in AEM Sites Cloud con un’estensione Universal Editor personalizzata

Questo articolo spiega come automatizzare il blocco delle pagine in Adobe Experience Manager (AEM) Sites as a Cloud Service creando un’estensione Universal Editor personalizzata e un servizio AEM autenticato, in modo che le pagine vengano bloccate dopo la prima modifica del contenuto da parte di un autore.

Descrizione description

Ambiente

Adobe Experience Manager as a Cloud Service (tutte le versioni)

Problema/Sintomi

  • Le organizzazioni potrebbero voler evitare conflitti di modifica simultanei bloccando automaticamente una pagina di AEM Sites dopo la prima modifica intenzionale del contenuto, invece di ricorrere al blocco manuale o al blocco all’apertura della pagina.
  • Le pagine non vengono bloccate automaticamente dopo la prima modifica, il che richiede un’azione manuale e aumenta il rischio di conflitti di modifica.

Causa

L’estensione standard AEM Page Lock in Universal Editor non fornisce un’API pubblica per l’automazione o l’estensione. Il supporto dell’automazione richiede un’estensione Universal Editor personalizzata e un servizio AEM di proprietà del cliente che utilizza API documentate per bloccare le pagine dopo la modifica del contenuto.

Risoluzione resolution

Per risolvere il problema, segui la procedura riportata di seguito.

  1. Crea un’estensione personalizzata per Universal Editor.

    • Utilizzare i punti di estensibilità dell’editor universale per ascoltare il primo evento di modifica del contenuto intenzionale o persistente. Non attivare il blocco all’apertura della pagina o alla selezione.
    • Esempio (pseudo-codice):
    code language-none
    editor.on('contentChanged', (event) => {
        if (!pageLocked) {
            lockPage(event.pagePath);
            pageLocked = true;
        }
    });
    
  2. Implementare un servizio AEM di proprietà del cliente.

    • Crea un servizio OSGi lato server o un servlet Sling in AEM che espone gli endpoint per:
    • Verifica dello stato di blocco corrente
    • Acquisizione di un blocco di pagina
    • Rilascio di un blocco pagina
    • Utilizza l’API PageManager di AEM WCM per le operazioni di blocco e sblocco. Esempio (Java):
    code language-none
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
    Page page = pageManager.getPage(pagePath);
    
    if (page != null && !page.isLocked()) {
        page.lock();
    }
    
  3. Autentica le richieste con l’identità dell’editor.

    • L’estensione Universal Editor deve inoltrare il token Bearer IMS dell’editor corrente all’endpoint AEM come intestazione di autorizzazione.
    • Assicurati che il gestore di autenticazione Granite Bearer di AEM sia abilitato e configurato per accettare l’ID client OAuth presente nel token.
    • Il servizio AEM deve utilizzare ResourceResolver della richiesta (ad esempio request.getResourceResolver()) per garantire che il blocco sia attribuito all’editor e non a un utente del servizio.
  4. Gestisce i conflitti di blocco e le autorizzazioni.

    • Convalida il percorso della pagina e risolvi la pagina.
    • Controlla se la pagina è già bloccata e da chi.
    • Restituisce una risposta chiara se il blocco non può essere acquisito (ad esempio, già bloccato da un altro autore).
    • Applica le autorizzazioni AEM e le protezioni CSRF.
  5. Aggiorna lo stato dell’editor.

    • Dopo un’operazione di blocco riuscita, aggiorna l’interfaccia utente dell’editor universale in modo che rifletta il nuovo stato di blocco.
    • Visualizza un messaggio di cancellazione se la pagina è già bloccata da un altro autore.
  6. Sblocca la pagina prima di pubblicarla.

    • Per consentire ai processi del flusso di lavoro di procedere, gli autori devono sbloccare manualmente la pagina prima di pubblicarla.

Per verificare il funzionamento, verifica l’estensione modificando una pagina in Universal Editor. Verifica che la pagina sia bloccata dopo la prima modifica del contenuto e che solo l’autore della modifica possa sbloccarla.

Lettura correlata

Panoramica dell’editor universale

recommendation-more-help
experience-cloud-kcs-help-kbarticles