miércoles, 1 de diciembre de 2010

Timer Jobs & UserProfile Tips

 

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:

image

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:

image

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:

image 

Timer Job4Fun!,

Manolo Herrera

No hay comentarios.: