Procedimiento para caducar o expirar acciones con acciones posteriores y evitar bloqueos
Última modificación: martes, 10 de agosto de 2010
Hace referencia a: SharePoint Server 2010
Para trabajar con registros correctamente se precisa de un uso adecuado de las acciones de directiva personalizadas. Dado que el modelo de objetos muestra muy pocas advertencias o errores si las acciones de directiva personalizadas no se registran o usan correctamente, es necesario tener un profundo conocimiento del funcionamiento del modelo de objetos para trabajar con las acciones de directiva personalizadas.
En este tema se proporcionan sugerencias y ejemplos de código que sirven para usar el modelo de objetos para caducar o expirar acciones con acciones posteriores y evitar bloqueos. Como se espera que la directiva de retención funcione para los registros en cualquier caso, se recomienda escribir una acción personalizada para que la directiva de retención pueda administrar un registro, aunque la finalidad de la acción específica que se va a escribir no sea controlar los registros. En este tema se explica cómo encapsular una acción de directiva personalizada en código que implementa el método OnExpirationWithPostActions(SPListItem, XmlNode, Time) para trabajar con registros y, asimismo, cómo evitar los bloqueos de registros si no se desea que el código procese los registros bloqueados.
Si usa la nueva interfaz IExpirationActionWithPostActions e implementa el método OnExpirationWithPostActions(SPListItem, XmlNode, Time), devuelva la acción ExpirationPostActions correcta para actualizar el objeto SPItem si es un registro.
Si usa la interfaz IExpirationAction o implementa únicamente la clase Expiration, la solución de administración de registros de Microsoft SharePoint Server 2010 administrará correctamente las acciones de directiva personalizadas de manera predeterminada.
Ejemplo
El ejemplo ExpirationPostActions refleja cómo declarar una acción posterior que se ejecuta en relación con un elemento cuando éste expira. El código vuelve a calcular la fecha de expiración del elemento, lo actualiza y registra un evento de auditoría para la acción una vez ejecutada una acción personalizada definida por el usuario.
El código también comprueba si la característica de administración de registros locales ha bloqueado el elemento. El código usa acciones posteriores para descartar registros desprotegidos en la cuenta del sistema, actualiza el elemento y, a continuación, vuelve a desproteger el elemento en la cuenta del sistema.
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;
}
Para actualizar un elemento bloqueado, todas las demás solicitudes deben llamar al método BypassLocks(SPListItem, ByPassLockedItemDelegateMethod) en un ámbito con privilegios elevados.
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.
});
});
Vea también
Conceptos
Administración de la directiva de administración de la información
Administración de registros y exhibición de documentos electrónicos