Partager via


Procédure : provoquer l’expiration d’actions avec des post actions et contourner les verrous

Dernière modification : mardi 10 août 2010

S’applique à : SharePoint Server 2010

Une utilisation correcte des enregistrements nécessite une utilisation correcte des actions de stratégies personnalisées. Étant donné que le modèle objet fournit peu d’avertissements ou de messages d’erreur dans les cas où des actions de stratégies sont enregistrées ou utilisées de manière incorrecte, l’utilisation d’actions de stratégies personnalisées requiert une solide compréhension du fonctionnement du modèle objet.

Cette rubrique fournit des conseils et des exemples de code pour vous aider à utiliser le modèle objet afin de faire expirer des actions avec des actions de publication et de contourner les verrous. La stratégie de rétention étant censée fonctionner pour les enregistrements dans tous les cas, nous vous recommandons d’écrire une action personnalisée de sorte que la stratégie de rétention puisse gérer un enregistrement même si l’action spécifique que vous écrivez n’est pas censée gérer d’enregistrement. Cette rubrique explique comment envelopper une action de stratégie personnalisée dans du code qui implémente la méthode OnExpirationWithPostActions(SPListItem, XmlNode, Time) pour fonctionner avec des enregistrements et comment contourner les verrous sur les enregistrements si vous ne souhaitez pas que votre code traite les enregistrements verrouillés.

  1. Si vous utilisez la nouvelle interface IExpirationActionWithPostActions et que vous implémentez la méthode OnExpirationWithPostActions(SPListItem, XmlNode, Time), renvoyez l’action ExpirationPostActions correcte afin de mettre à jour l’objet SPItem s’il s’agit d’un enregistrement.

  2. Si vous utilisez l’interface IExpirationAction ou que vous implémentez uniquement la classe Expiration, la solution Gestion des enregistrements dans Microsoft SharePoint Server 2010 gère les actions de stratégies personnalisées correctement par défaut.

Exemple

L’exemple ExpirationPostActions montre comment déclarer une action de publication qui s’exécute pour un élément lors de son expiration. Le code recalcule la date d’expiration de l’élément, met à jour l’élément et enregistre un événement d’audit pour l’action après l’exécution d’une action personnalisée définie par l’utilisateur.

Le code vérifie également si la fonctionnalité Gestion des enregistrements sur place a verrouillé l’élément. Il utilise des actions de publication pour rejeter les enregistrements extraits vers le Compte système, met à jour l’élément, puis extrait de nouveau l’élément vers le Compte système.

public ExpirationPostActions OnExpirationWithPostActions(SPListItem item, XmlNode parametersData, DateTime expiredDate)
{
    /* Recalculates the item's expiration date, updates 
     * the item, and logs an audit event for the action. */
    ExpirationPostActions postActions = ExpirationPostActions.Default;

    //Do whatever you want to do on the item.

    //Check to see whether In-Place Records Management has locked the item.
    if (Records.IsLocked(item))
    {
        /* In-Place Records Management locks items by checking them 
         * out to the System Account. For our changes to persist 
         * for these items, the code updates the checked-in version. */
         
        postActions |=
                /* Discards the check-out to System Account before 
                 * updating the item. */
                ExpirationPostActions.UndoCheckOutBeforeUpdate |
                /* Checks the item back out to the System Account after 
                 * updating the item. */
                ExpirationPostActions.KeepCheckedOutToSystem;
    }

    return postActions;
}

Pour mettre à jour un élément verrouillé, toutes les autres demandes doivent appeler la méthode BypassLocks(SPListItem, ByPassLockedItemDelegateMethod) dans une portée élevée.

using Microsoft.SharePoint;
using Microsoft.SharePoint.Publishing;
using Microsoft.Office.RecordsManagement.RecordsRepository;

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    Records.BypassLocks(myListItem, delegate(SPListItem item)
    {
        //Perform any action on the item.
    });
});

Voir aussi

Concepts

Gestion de la stratégie de gestion des informations

Gestion des enregistrements et eDiscovery