Fermer

décembre 10, 2020

Implémentation du flux de travail dans Sitecore: une mini-série partie 6 – Archivage des anciennes versions


Pour éviter les problèmes de performances des auteurs de contenu dans l'éditeur de contenu, Sitecore recommande de ne pas conserver plus de 10 versions d'éléments. Dans cet article de blog de ma mini-série, je vais expliquer comment effectuer un nettoyage automatisé des anciennes versions des éléments obsolètes tout en les conservant dans l'archive pour enregistrement historique. Les anciennes versions trouvées dans l'archive peuvent être restaurées pour une utilisation ultérieure si nécessaire.

Le script PowerShell

 $ tenantItem = Get-Item -Path 'master: '
$ versionsToNotArchive = 10
$ archive = [Sitecore.Data.Archiving.ArchiveManager] :: GetArchive ("archive", $ tenantItem.Database)

Get-ChildItem -Path $ tenantItem.FullPath -Recurse -WithParent |
    ForEach-Object {
        $ versionsNotArchived = 0

        $ itemVersionCount = $ _. Versions.Count
        if ($ itemVersionCount -gt $ versionsToNotArchive) {
            $ itemVersions = $ _. Versions.GetVersions ($ true) | Sort-Object {[int] ($ _. Version -replace '( d +). *', '$ 1')} -Descendant
            foreach ($ itemVersion dans $ itemVersions) {
                if ($ itemVersion.Fields ["__Workflow State"] .Value -eq "{}" -AND $ versionsNotArchived -lt $ versionsToNotArchive) {
                    $ versionsNotArchived + = 1
                }
                autre {
                    if ($ itemVersion.Fields ["__Workflow State"] .Value -eq "{}" -AND $ versionsNotArchived -ge $ versionsToNotArchive) {
                        Write-Host "version d'archivage" $ itemVersion.Version "de" $ _. FullPath
                        $ archive.archiveVersion ($ itemVersion)
                    }
                }
            }
        }
    } 

Créez un script PowerShell dans PowerShell ISE. Copiez et collez ce script ci-dessus dans votre nouveau fichier. Vous devrez insérer le chemin vers votre dossier racine dans la première ligne du script. Vous devrez également insérer deux fois le GUID de l’élément d’état «Approuvé» de votre flux de travail dans la boucle for.

Décrivons exactement ce que fait ce script avec un exemple. Supposons que le script examine un élément qui a 15 versions dans l'éditeur de contenu. Les versions 1 à 14 sont à l'état «Approuvé». La version 15 est à l'état «Brouillon». Il commandera d'abord les versions des articles dans le tableau de la version numérotée la plus élevée à la version numérotée la plus basse. Considérez cela comme une commande de la version la plus récente à la version la plus ancienne. Il commencera alors à compter de la version 15 à la version 1 en gardant une trace du nombre de versions «approuvées» que la boucle for a réussi. Une fois la 10e version «approuvée» atteinte, toute version «approuvée» après celle-ci sera envoyée aux archives. Dans notre exemple, les versions d'élément 1 à 4 seront envoyées à l'archive tandis que les versions d'élément 5 à 15 seront conservées pour affichage dans l'éditeur de contenu.

Si vous souhaitez conserver les versions moins approuvées dans l'éditeur de contenu pour vos éléments, réduisez simplement la variable $ versionsToNotArchive dans le script ci-dessus. Notez également que la valeur de $ _. Versions.Count est égale au nombre de versions qui existent pour l'élément dans l'éditeur de contenu PAS le nombre total de versions d'un élément qui existent dans l'archive plus le nombre de versions qui existent pour l'élément dans l'éditeur de contenu.

Automatisation du script selon un calendrier

 Sitecore - Comprendre les approches de développement: un Outlook Sitecore

 Simpleworkflowarchiveschedulelocation

Sous / System / Tasks / Schedules, insérez un nouveau calendrier et nommez-le «Calendrier des commandes d'archivage des anciennes versions». Remplissez ensuite ses valeurs avec ce qui suit:

 Simpleworkflowarchiveschedule

Remplacez la valeur trouvée dans Items par le chemin d'accès au script que nous avons créé plus tôt dans l'article de blog. La valeur Schedule indique à Sitecore d'exécuter mon script "Archiver les anciennes versions" une fois par semaine tous les dimanches jusqu'à la fin des temps.

Restauration d'anciennes versions à partir des archives

 Archivelocation

Pour accéder aux archives, accédez au bureau Sitecore et ouvrez le sous-menu Toutes les applications. L'archive sera là.

 Restauration des versions archivées

Pour restaurer les versions d'un élément, cliquez simplement sur l'élément, puis cliquez sur Restaurer. Notez que la restauration d'un élément restaurera TOUTES les versions de l'élément dans l'éditeur de contenu. Il sera ensuite nettoyé par notre script automatisé, mais vous pourrez voir les anciennes versions pendant une courte période.






Source link