Dentro de un Timer Job que es un proceso que se ejecuta del lado del servidor y no esta asociado al WorkProcess del IIS, necesitamos acceder a la colección de Sitios y Webs de nuestro portal de otra forma.
Dentro del Timer Job al sobreescribr el método Excecute a través del parametro targetInstanceId podemos obtener la instancia de la base de datos de contenido que estamos ejecutando el Timer Job, como se muestra abajo en el segmento de código:
public override void Execute(Guid targetInstanceId)
{
base.Execute(targetInstanceId);
try
{
var miWebApp = Parent as SPWebApplication;
if (miWebApp != null)
{
SPContentDatabase contentDb = miWebApp.ContentDatabases[targetInstanceId];
….
Si estamos escribiendo un Timer Job para SharePoint Server y necesitamos obtener información de los perfiles de usuario, necesitamos hacerlo a través de la clase SPContentDatabase que obtuvimos del Timer Job, esto facilitará el acceso ya que no tenemos ningún contexto Web corriendo desde el Timer Job. Abajo el código de ejemplo:
Para acceder a las propiedades de los perfiles de usuario tenemos la clase de ayuda PropertyConstants que nos da el nombre de cada propiedad predeterminada de los perfiles de usuario, si necesitamos acceder una propiedad personalizada deberemos de hacerlo por medio de un string o cada de caracteres.
Cuando cambies de periodicidad de un Timer Job en SharePoint 2007 recuerda siempre en desactivar y activar nuevamente la feature para que aplique el cambio:
Si utilizas WSPBuilder y nunca desactiva la feature debes de comentar la siguiente línea que para SharePoint 2007 no aplica, como te muestro abajo:
Timer Job4Fun!,
Manolo Herrera
No hay comentarios.:
Publicar un comentario
Favor dejar su correo electrónico para poder responder el mensaje.
Nota: sólo los miembros de este blog pueden publicar comentarios.