Aggiornamenti sostenibili sustainable-upgrades
Framework di personalizzazione customization-framework
Architettura (funzionale/infrastruttura/contenuto/applicazione) architecture-functional-infrastructure-content-application
La funzione framework di personalizzazione è progettata per contribuire a ridurre le violazioni in aree non estensibili del codice (come API) o del contenuto (come sovrapposizioni) che non sono compatibili con l’aggiornamento.
Sono disponibili due componenti del framework di personalizzazione: API Surface e Content Classification.
Superficie API api-surface
Nelle versioni precedenti di Adobe Experience Manager (AEM), molte API sono state esposte tramite il file JAR di Uber. Alcune di queste API non erano destinate all’uso da parte dei clienti, ma sono state esposte per supportare la funzionalità AEM tra i bundle. In futuro, le API Java™ saranno contrassegnate come pubbliche o private per indicare ai clienti quali API sono sicure da utilizzare nel contesto degli aggiornamenti. Altre specifiche includono:
-
Le API Java™ contrassegnate come
Public
possono essere utilizzate e utilizzate come riferimento dai bundle di implementazione personalizzati. -
Le API pubbliche sono compatibili con le versioni precedenti dell’installazione di un pacchetto di compatibilità.
-
Il pacchetto di compatibilità contiene un file JAR Uber di compatibilità per garantire la compatibilità con le versioni precedenti
-
Le API Java™ contrassegnate come
Private
devono essere utilizzate solo da bundle interni AEM, non da bundle personalizzati.
Private
e Public
in questo contesto non deve essere confuso con le nozioni Java™ di classi pubbliche e private.
Classificazioni contenuto content-classifications
L’AEM utilizza da tempo il principio delle sovrapposizioni e Sling Resource Merger per consentire ai clienti di estendere e personalizzare la funzionalità dell’AEM. Le funzionalità predefinite che alimentano le console e l'interfaccia utente di AEM sono memorizzate in /libs. I clienti non devono mai modificare nulla sotto /libs, ma potrebbero aggiungere contenuto aggiuntivo sotto /apps per sovrapporre ed estendere la funzionalità definita in /libs (Per ulteriori informazioni, consulta Sviluppo con sovrapposizioni). Ciò causava ancora numerosi problemi durante l'aggiornamento dell'AEM poiché il contenuto in /libs poteva cambiare causando l'interruzione della funzionalità di sovrapposizione in modi imprevisti. I clienti possono inoltre estendere i componenti AEM tramite l'ereditarietà tramite sling:resourceSuperType
o semplicemente fare riferimento a un componente in /libs direttamente tramite sling:resourceType. Problemi di aggiornamento simili potrebbero verificarsi con casi di utilizzo di riferimento e di sostituzione.
Per rendere più sicuro e semplice per i clienti capire quali aree di /libs sono sicure da utilizzare e sovrapporre il contenuto in /libs è stato classificato con i seguenti mixin:
-
Pubblico (granite:PublicArea) - Definisce un nodo come pubblico in modo che possa essere sovrapposto, ereditato (
sling:resourceSuperType
) o utilizzato direttamente (sling:resourceType
). I nodi sotto /libs contrassegnati come pubblici possono essere aggiornati con l’aggiunta di un pacchetto di compatibilità. In generale, i clienti devono utilizzare solo nodi contrassegnati come pubblici. -
Astratto (granite:AbstractArea) - Definisce un nodo come astratto. I nodi possono essere sovrapposti o ereditati (
sling:resourceSupertype
) ma non utilizzati direttamente (sling:resourceType
). -
Finale (granite:FinalArea) - Definisce un nodo come finale. I nodi classificati come finali idealmente non devono essere sovrapposti o ereditati. I nodi finali possono essere utilizzati direttamente tramite
sling:resourceType
. Per impostazione predefinita, i sottonodi sotto il nodo finale sono considerati interni. -
Interno (granite:InternalArea) *- *Definisce un nodo interno. I nodi classificati come interni idealmente non devono essere sovrapposti, ereditati o utilizzati direttamente. Questi nodi sono destinati solo alle funzionalità interne dell’AEM
-
Nessuna annotazione - I nodi ereditano la classificazione in base alla gerarchia della struttura. La directory principale / è per impostazione predefinita Public. Anche i nodi con un elemento padre classificato come Interno o Finale devono essere trattati come Interno.
Internal
, ma possono ancora essere utilizzate con l'inclusione clientlib standard. In questi casi è importante che il cliente continui a rispettare la classificazione interna.Indicatori del tipo di contenuto CRXDE Lite crxde-lite-content-type-indicators
I mixin applicati in CRXDE Lite mostrano i nodi di contenuto e gli alberi contrassegnati come INTERNAL
in grigio. Per FINAL
, solo l'icona è oscurata. Anche i figli di questi nodi vengono visualizzati in grigio. La funzionalità Sovrapponi nodo è disabilitata in entrambi questi casi.
Pubblico
Finale
Interno
Verifica stato contenuto
L’AEM 6.5 viene fornito con un controllo di integrità per avvisare i clienti se il contenuto sovrapposto o di riferimento viene utilizzato in modo incoerente con la classificazione del contenuto.
Il Sling/Granite Content Access Check è un nuovo controllo di integrità che monitora l’archivio per verificare se il codice del cliente accede in modo errato ai nodi protetti in AEM.
Questa operazione esegue la scansione di /apps e in genere richiede diversi secondi.
Per accedere a questa nuova verifica stato, eseguire le operazioni seguenti:
-
Dalla schermata iniziale dell'AEM, passa a Strumenti > Operazioni > Rapporti stato
-
Fai clic su Controllo accesso a contenuti Sling/Granite.
Al termine dell’analisi, viene visualizzato un elenco di avvisi per informare l’utente finale del nodo protetto a cui si fa riferimento in modo errato:
Dopo aver corretto le violazioni, torna allo stato verde:
La verifica stato visualizza le informazioni raccolte da un servizio in background che controlla in modo asincrono ogni volta che viene utilizzato un tipo di risorsa o sovrapposizione in tutti i percorsi di ricerca Sling. Se i mixin di contenuto non vengono utilizzati correttamente, viene segnalata una violazione.