Was aktualisiert wird
Die folgenden Aktualisierungen werden durchgeführt:
-
Felder der Datentypen:
- Inhaltsreferenz wird in Inhaltsreferenz (UUID) umgewandelt.
- Fragmentreferenz wird in Fragmentreferenz (UUID) umgewandelt.
-
Die Werte der pfadbasierten Referenzen in diesen Feldern werden durch die entsprechenden UUIDs ersetzt.
Was NICHT aktualisiert wird
Die folgenden Verweise (Referenzen) werden nicht aktualisiert:
-
Seitenverweise – UUIDs werden noch nicht unterstützt.
-
Alle ungültigen Referenzen, z. B. wenn das Ziel des Inhaltsfragment- oder Asset-Pfads nicht vorhanden ist.
-
Ungültige Referenzen werden nicht aktualisiert, wenn der Inhaltsfragmentpfad oder der Asset-Pfad ungültig ist und so keine entsprechende UUID zugewiesen werden kann. Die ursprüngliche Referenz bleibt hiervon unberührt.
-
Führen Sie einen Probelauf durch, um ungültige Referenzen zu erkennen.
NOTEWenn sie ungültig sind, können sie unabhängig von der Aktualisierung nicht verwendet werden. -
Wann nicht aktualisiert werden sollte
Es sollte nicht aktualisiert werden:
- wenn eines Ihrer Inhaltsfragmente Seitenverweise verwendet, da UUIDs für Seitenverweise noch nicht unterstützt werden.
Einschränkungen bei UUID-Referenzen
Derzeit gelten die folgenden Einschränkungen beim Verwenden von Referenzen, die auf einer UUID basieren:
-
Modelle
- Neue Inhaltsfragmentmodelle mit Inhaltsfragment-UUID- oder Inhaltsreferenz-UUID-Feldern können nicht über die OpenAPI erstellt werden.
- Das Feld
id
für Modelle wurde nicht dahingehend geändert, dass es UUID-basiert ist. Es verwendet den dekodierten base64-Pfad des Modells. Modelle können nicht verschoben werden. Daher ist dieser Wert weiterhin stabil.
-
Assets
- Beim Erstellen eines Inhaltsfragments über die OpenAPI müssen die Feldtypen
fragment-reference
odercontent-reference
verwendet werden, um Verweise auf ein Fragment bzw. ein Asset anzugeben. Dies gilt selbst dann, wenn der Wert eines UUID-basierten Referenzfelds festgelegt wird.
- Beim Erstellen eines Inhaltsfragments über die OpenAPI müssen die Feldtypen
Aktualisierungsplanung
Es gibt einige vorbereitende Schritte, bevor Sie Ihre Aktualisierung ausführen.
Ausführen eines Probelaufs
Es wird empfohlen, bei jeder Aktualisierung Ihres Inhalts zunächst einen Probelauf durchzuführen. Dadurch werden Protokolldateien mit Einträgen erstellt, die auf potenzielle Probleme hinweisen:
- Ungültige Verweise
- Seitenverweise
Führen Sie die Inhaltsaktualisierung im Modus dryRun
aus, um:
- ungültige Referenzen zu identifizieren, indem Sie sie in den Protokolldateien auflisten.
Sie können diese Referenzen dann vor der eigentlichen Inhaltsaktualisierung korrigieren. - alle Seitenverweise zu identifizieren, indem sie sie in den Protokolldateien auflisten.
Wenn Seitenverweise erkannt werden, sollten Sie die Inhaltsaktualisierung nicht ausführen.
Erzwingen des Einfrierens von Inhalten
Inhalte sollten aktualisiert werden, wenn sie eingefroren sind.
Wie lange Inhalte eingefroren sind, hängt von der Menge der Inhaltsfragmente ab, die aktualisiert werden. Dementsprechend kann die Aktualisierung zwischen einigen Minuten und einigen Stunden dauern und richtet sich auch nach den Parametern, die beim Starten der Inhaltsaktualisierung verwendet werden.
Ausführen der Inhaltsaktualisierung
Die Inhaltsaktualisierung kann mithilfe des Endpunkts /libs/dam/cfm/maintenance.json
gesteuert werden.
Administrator
.Starten der Inhaltsaktualisierung
Endpunkt | HTTP-Anfragetyp | Kommentar |
---|---|---|
/libs/dam/cfm/maintenance.json | POST | |
Anfrageparameter | Wert | |
action | start | |
serviceTypeId | uuidUpgradeService | Die Diensttyp-ID (vordefinierter, fester Wert). |
segmentSize | 1000 | Die Anzahl der Inhaltsfragmente oder Modelle, die in einem Segment (Batch) aktualisiert werden. |
basePath | /conf |
Geben Sie Folgendes an:
|
interval | 10 | Das Intervall in Sekunden, nach dem das nächste Segment von Inhaltsfragmenten oder Modellen aktualisiert wird. |
mode | replicate , noReplicate |
|
dryRun | true , false |
|
Antwortdetails | Wert | |
jobId | UUID |
Die ID des Auftrags, der die Inhaltsaktualisierung ausführt.
|
Parameter | Die Parameter für die Inhaltsaktualisierung | Dazu gehören die anfänglichen Parameter, die zum Starten der Inhaltsaktualisierung bereitgestellt werden, sowie einige interne Standardeinstellungen. |
Beispielhafte Anfrage zur Inhaltsaktualisierung
Anfrage
POST http://localhost:4502/libs/dam/cfm/maintenance.json
Content-Type: application/json
Authorization: _REPLACE_WITH_VALID_AUTH_
Accept: application/json
{
"action": "start",
"serviceTypeId": "uuidUpgradeService",
"segmentSize": 1000,
"basePath": "/conf/wknd-shared",
"interval": 10,
"mode": "replicate",
"dryRun": true
}
Antwort
HTTP/1.1 200 OK
Date: Wed, 16 Oct 2024 14:34:37 GMT
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Length: 386
{
"jobId": "91af43a6-63ff-45e5-ac7b-06ccf565bdfa",
"jcr:created": 1729089277309,
"parameters": {
"mode": "replicate",
"dryRun": true,
"segmentSize": 1000,
"serviceTypeId": "uuidUpgradeService",
"action": "start",
"basePath": "/conf/wknd-shared",
"topic": "cfm/maintenance",
"interval": 10,
"cronSchedule": "*/10 * * * * ?"
}
}
Abrufen des Status einer Inhaltsaktualisierung
Endpunkt | HTTP-Anfragetyp | Kommentar |
---|---|---|
/libs/dam/cfm/maintenance.json | GET | |
Anfrageparameter | Wert | |
action | status | |
jobId | <UUID> | Die jobId , die beim Aufruf zum Starten der Inhaltsaktualisierung zurückgegeben wurde. |
Antwortdetails | Wert | |
status | JSON-Werte |
Enthält den detaillierten Status der Inhaltsaktualisierung:
|
Beispiel einer Anfrage zum Status der Inhaltsaktualisierung
Anfrage
GET http://localhost:4502/libs/dam/cfm/maintenance.json?action=status&jobId=91af43a6-63ff-45e5-ac7b-06ccf565bdfa
Authorization: _REPLACE_WITH_VALID_AUTH_
Accept: application/json
Antwort
HTTP/1.1 200 OK
Date: Wed, 16 Oct 2024 14:35:51 GMT
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Content-Length: 1116
{
"jobId": "91af43a6-63ff-45e5-ac7b-06ccf565bdfa",
"jcr:created": 1729089277309,
"eventProcessed": 1,
"parameters": {
"mode": "replicate",
"dryRun": true,
"segmentSize": 1000,
"serviceTypeId": "uuidUpgradeService",
"action": "start",
"confPath": "/conf/wknd-shared",
"topic": "cfm/uuid-migration",
"interval": 10,
"cronSchedule": "*/10 * * * * ?"
},
"status": {
"jobStatus": "COMPLETED",
"lastModified": 1729089310301,
"currentPhaseIndex": 1,
"phases": {
"phase-0": {
"bookmark": 1727183332520,
"stats": {
"successCount": 2,
"skippedCount": 1,
"errorCount": 0
},
"name": "modelUpgrade",
"lastModified": 1729089290040,
"isCompleted": true
},
"phase-1": {
"bookmark": 1727183347990,
"stats": {
"successCount": 29,
"skippedCount": 0,
"errorCount": 1
},
"name": "cfUpgrade",
"lastModified": 1729089310298,
"isCompleted": true
}
}
}
}
Beispielhafte Protokolldateien
Zusätzlich zum Status einer laufenden Inhaltsaktualisierung, die vom HTTP-Endpunkt abgerufen wurde, liefern AEM-Protokolle detaillierte Informationen zum Fortschritt auf Inhaltsebene. Zum Beispiel:
#Successful model upgrade
com.adobe.cq.dam.cfm.impl.servicing.uuid.* Phase phase-0: resource: /conf/wknd-shared/settings/dam/cfm/models/article , status: SUCCESS, skips: [], errors: []
#Successful content fragment upgrade
com.adobe.cq.dam.cfm.impl.servicing.uuid.* Phase phase-1: resource: /content/dam/wknd-shared/en/magazine/san-diego-surf-spots/san-diego-surfspots , status: SUCCESS, skips: [], errors: []
#Unsuccessful/Skipped model upgrade
com.adobe.cq.dam.cfm.impl.servicing.uuid.* Phase phase-0: resource: /conf/wknd-shared/settings/dam/cfm/models/adventure , status: SKIPPED, skips: [Model: '/conf/wknd-shared/settings/dam/cfm/models/adventure', no upgradeable fields found], errors: []
#Unsuccessful content fragment upgrade
com.adobe.cq.dam.cfm.impl.servicing.uuid.* Phase phase-1: resource: /content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van , status: FAILED, skips: [], errors: [Path '/content/dam/wknd-shared/en/magazine/western-australia/western-australia-by-camper-van', Variation: 'master' Field 'featuredImage', Value '/content/dam/wknd-shared/en/magazine/western-australia/adobestock_156407519.jpeg' is invalid; will not upgrade this field.]
Außerdem wird nach der Verarbeitung jedes Segments (Batches) von Inhaltsfragmenten und Modellen ein kumulierter Status protokolliert, der den bisher erzielten Fortschritt zusammenfasst. Zum Beispiel:
com.adobe.cq.dam.cfm.impl.servicing.PhaseChainProcessor Phase phase-x, processed a segment, stats: {successCount=29, skippedCount=0, errorCount=1}