SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

lunes, 23 de julio de 2012

Ocultar columnas en base al valor de otra columna en SharePoint 2007

Introducción

En este breve artículo vamos a explicar cómo ocultar o mostrar columnas en base al valor que tome una columna en la pantalla NewForm.aspx. La solución la implementaremos a través de jQuery y JavaScript dentro de una CEWP (content editor webpart).

Comportamiento de la pantalla

Imaginemos que tenemos una pantalla de alta que posee una columna llamada “SiNo” y que dependiendo del valor de esa columna, queremos que se muestren u oculten otras columnas. Si el valor de la columna “SiNo” es “Si”, entonces queremos que la pantalla se vea de esta manera:

image

Pero si el valor de la columna “SiNo” es NO, entonces queremos que se oculte el campo “Eleccion” y se muestren los campos “Texto” y “Busqueda”

image

Enfoque de la solución

Para ello trabajamos con una solución que agrega un evento “click” en la casilla de verificación “SiNo”. Este evento oculta o muestra campos en base al valor de esta casilla.

Esta porción de código está realizada con jQuery y está basada en la idea de este artículo: http://www.codeproject.com/Articles/252468/Hide-column-in-SharePoint-custom-list-based-on-val

La forma de encontrar, ocultar y mostrar columnas en SharePoint se realiza a través de JavaScript, aprovechando los comentarios de SharePoint que indican los nombres internos de las columnas. Nos basamos en este artículo: http://www.cleverworkarounds.com/2008/02/28/more-sharepoint-branding-customisation-using-javascript-part-2/

Configuración del código

Para utilizar el código, podemos pegar el mismo en una CEWP o integrarlo dentro de alguna librería JavaScript. El código posee tres partes a configurar:

1. La indicación de cuál es el campo que nos permite decidir qué campos mostrar u ocultar. Debe ser un campo de tipo “Si/No”

image

2. La especificación de los campos a mostrar u ocultar cuando el valor es Si

image

3. La especificación de los campos a mostrar u ocultar cuando el valor es No

image

Código de la solución

Por último les dejo el código completo, espero les sea útil. Hasta la próxima!

<!--

Esta función oculta y muestra un conjunto de columnas de acuerdo al valor de un campo Si/No
Se aplica dentro de una CEWP en la página NewForm.aspx

Utiliza una variante de la función de CleverWorkarounds para ocultar y encontrar controles de SharePoint
http://www.cleverworkarounds.com/2008/02/28/more-sharepoint-branding-customisation-using-javascript-part-2/

Utiliz una variante de la función de CodeProject para agregar el evento click con jQuery a una columna Si/No
http://www.codeproject.com/Articles/252468/Hide-column-in-SharePoint-custom-list-based-on-val

Requiere jQuery

El código puede ser insertado dentro de una CEWP

-->

<script src="/internal/jquery-1.7.2.min.js">
</script>

<script type="text/javascript">

OcultarMostrarCondicional ('SiNo'); // Internal Name del campo de tipo Si/No que decide

/* Completar en esta función los controles a mostral u ocultar cuando la opción es SI */

function OcultarMostrar_Cuando_SI () {
ocultar_control('Texto');
ocultar_control('Busqueda');
mostrar_control('Eleccion');
}

/* Completar en esta función los controles a mostral u ocultar cuando la opción es NO */

function OcultarMostrar_Cuando_NO () {
mostrar_control('Texto');
mostrar_control('Busqueda');
ocultar_control('Eleccion');
}

/*************************************/
/* A PARTIR DE ACA NO MODIFICAR NADA */
/*************************************/

function OcultarMostrarCondicional (CampoSiNo) {

// Busco el campo Si/No que decide que campos ocultar y qué campos mostrar
var SiNo = retornar_id_control(CampoSiNo);

// Situación predeterminada de la pantalla
if($("#"+SiNo).is(':checked')) {
OcultarMostrar_Cuando_SI ();
}
else {
OcultarMostrar_Cuando_NO ();
}


// Agrego el evento click
$("#"+SiNo).bind('click',function() {

if($(this).is(':checked')) {
OcultarMostrar_Cuando_SI();
}
else {
OcultarMostrar_Cuando_NO();
}
});

}

function ocultar_control (FieldName) {
var arr = document.getElementsByTagName("!");
for (var i=0;i < arr.length; i++ ) {
if (arr[i].innerHTML.indexOf("FieldInternalName=\""+FieldName+"\"") > 0) {
arr[i].parentNode.parentNode.style.display="none";
}
}
}

function mostrar_control (FieldName) {
var arr = document.getElementsByTagName("!");
for (var i=0;i < arr.length; i++ ) {
if (arr[i].innerHTML.indexOf("FieldInternalName=\""+FieldName+"\"") > 0) {
arr[i].parentNode.parentNode.style.display="inline";
}
}
}

function retornar_id_control (FieldName) {
var arr = document.getElementsByTagName("!");
for (var i=0;i < arr.length; i++ ) {
if (arr[i].innerHTML.indexOf("FieldInternalName=\""+FieldName+"\"") > 0) {
return arr[i].parentNode.lastChild.firstChild.id;
}
}
}

</script>

viernes, 20 de julio de 2012

Filtros por rangos de fechas en SharePoint 2007 [Alternativa 2]

En el artículo anterior explicamos como activar un filtro por rango de fechas utilizando SharePoint Designer y el elemento web de MOSS para filtro de fechas. El método es bastante sencillo y viene “fuera de la caja”, sin embargo posee algunas limitaciones que a continuación enumeramos:

  1. Requiere MOSS.
  2. Requiere convertir nuestra vista a una vista XSLT con SharePoint Designer.
  3. En la conversión perdemos algunas opciones estándar como:
    • Filtros estándar. Esto implica que tenemos que comenzar a utilizar otros elementos web de filtro si queremos que nuestra vista sea funcional. Por ejemplo filtro por lista de SharePoint o filtro por opciones.
    • La posibilidad de editar la vista desde la interfaz web
  4. Requiere usar SharePoint Designer, herramienta de la que cual no soy muy amigo (esta es una opinión personal)
  5. El look & feel no es hermoso.
  6. No es sencillo colocar fechas nulas para que no aplique el filtro.

Investigando un poco que hay en la web, encontré un componente de terceras partes que tienes tres sabores, uno gratuito y dos pagos. Su nombre es FilterZen de SharePoint Zen.

El componente es sencillo de instalar. Luego de hacerlo, contamos con un elemento web para realizar filtros que nos permite crear fácilmente filtros de rangos de fechas, usando 2 clics, logrando una interfaz como la siguiente:

image

Les dejo los enlaces para trabajar con este componente:

Espero que les resulte útil.

¿Ustedes tienen algún otro método para el filtrado por rango de fechas en SharePoint que puedan recomendarme?

jueves, 19 de julio de 2012

Muro de fotos en SharePoint 2007

Imaginemos que tenemos una lista en SharePoint con un campo de tipo persona que muestra la imagen del usuario. Una vista estándar de lista de SharePoint nos mostraría una foto en cada renglón. ¿Pero cómo podríamos hacer para mostrar las fotos como en un muro, una al lado de la otra? Algo así:

image

Seguramente hay muchas formas de resolverlo con SharePoint Designer por ejemplo. Sin embargo, aquí vamos a mostrar una opción con jQuery y una CEWP. Espero les resulte interesante:

/*

Este script convierte una vista con estilo tabla basica con un sólo campo de usuario (con foto) en un muro de fotos

*/
function fotos () {

    // alert ('Controlo si hay fotos para mostrar');

    var hay_fotos = true;

    // Verifico si hay elementos a mostrar
    $("td:contains('No hay elementos que mostrar en esta vista de la'):last").each(function(index) {
        hay_fotos = false;
        });

    // Oculto la vista y el tìtulo de la vista
    document.writeln("<style> .ms-listviewtable {display: none;} .ms-listdescription {display: none;} </style>");

    // Si hay elementos, aplico formato
    if ( hay_fotos ) {

        // alert ('Busco las fotos');

        // Obtengo fotos de la lista
        var fotos = new Array();
        z = 0;
        $('.ms-listviewtable > tbody > tr > td > table > tbody > tr > td > a > img').each(function(index) {
            //alert ($(this).attr("src"));
            if ( !( $(this).attr("src") == '/_layouts/images/person.gif') ) {
                // Sólo tomo aquellos que usuarios que tengan foto
                fotos[z] = '<img OnError=\"foto_error()\" class=\"fotomuro\" src=\"' + $(this).attr("src") + '\" title=\"' + $(this).attr("alt").substring(8) + '\"></img>';
                z = z +1;
                }
            });

        // alert ('Armo el muro');

        // Armo el muro de fotos
        document.writeln ('<p class=\"muro\" >');
        document.writeln ('<div>¿Tu foto no está? <a title=\"\" href=\"/sites/Intranet/_layouts/MySite.aspx\" target=_blank>Subí tu foto</A></div></BR>');
        //for (i = 0; i < 5; i++) {
        for (i = 0; i < fotos.length; i++) {
            document.writeln (fotos[i]);
        }

        document.writeln ('</p></BR></BR>');

        // Un poco de estilo a las fotos
        document.writeln("<style> .muro {} .fotomuro { width:62px; height:62px; } </style>");
    }
}

function foto_error() {
    window.event.srcElement.style.display = "none";
}

El código de la CEWP sería:

<script type="text/javascript"
src="/sites/Intranet/Internal/jquery142min.js"></script>

<script type="text/javascript"
src="/sites/Intranet/Internal/fotos.js"></script>

<script type="text/javascript">

fotos();

</script>

Hasta el próximo truco jQuery! Nos vemos…

SharePoint 2007: sincronización entre “My Site” y “My Settings”

Si trabajan con las opciones de “My Site” en SharePoint 2007, es posible que hayan experimentado algún problema de sincronización entre las opciones de configuración del perfil dentro de “Mi Sitio” y la configuración de WSS a la que pueden entrar mediante el enlace “Mi Configuración”:

image

image

 

Existen muchas razones que pueden generar un problema de sincronización. A continuación les dejo dos puntos a verificar:

  • La correcta ejecución de los jobs de sincronización cuyos nombre son:
    • Profile Synchronization 
    • Quick Profile Synchronization
  • Los posibles problemas de sincronización en laguna de nuestras bases. Para ello podemos utilizar el comando STSADM de la siguiente forma para controlar:

stsadm -o sync –listolddatabases 2

En caso que encontremos alguna base con problemas, podemos utilizar este comando:

stsadm -o sync –deleteolddatabases 2

Si necesitamos modificar el tiempo de ejecución de los jobs, para que sincronicen con mayor frecuencia, esta es una opción posible:

stsadm -o sync -synctiming m:5

User profiles architecture

El tema es bastante amplio. Les dejo un conjunto de enlaces que seguramente serán de utilidad para ampliar el tema:

Hasta la próxima!

miércoles, 18 de julio de 2012

10 puntos para entender a Project Server 2010

1. La evolución de Microsoft Project

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos. Posee más de 15 años de historia y ha intentado cubrir siempre funcionalidades como:

· Confección del diagrama de Gantt.

· Identificación de la WBS y las tareas.

· Asignación de recursos.

· Asignación de fechas y estimación.

· Determinación del camino crítico.

· Monitoreo y control del proyecto.

Project es una herramienta que podríamos considerar de oficina, así como Word graba documentos, Project guarda archivos de proyectos individuales.

A pesar de ser una herramienta que resuelve muy bien los temas enumerados, se ha quedado chica a la hora de resolver situaciones de manejo de proyectos algo más complejas como:

· Relaciones entre proyectos.

· Manejo de programas de proyectos.

· Pool de recursos.

· Carga de horas.

· Colaboración.

· Escalabilidad.

La solución de Microsoft a estas necesidades ha sido hacer evolucionar el producto hacia una versión corporativa, creando Project Server, una robusta solución que ya va por su cuarta versión y 10 años de historia.

Al tratarse de una evolución, Project Server es el cambio natural para las organizaciones que vienen utilizando Project.

2. Los pilares de Project Server

Project Server es bastante sencillo de entender si comprendemos sus conceptos principales a los que propongo llamar pilares.

El primero: la información de Proyectos en Project Server se almacena en una base de datos, lo que significa que está centralizada y puede analizarse en forma conjunta. Con Project Server se hace realidad la aplicación del concepto de Cartera de Proyectos.

Lo mismo sucede con los Recursos, al estar centralizados, pueden ser compartidos entre los proyectos, permitiendo responder preguntas como la sobreasignación de recursos.

Vean como con esta centralización se hace posible implementar un sistema de carga de horas y reporte de avance, otro de los pilares de la herramienta. Toda esta información genera la historia de los proyectos, pudiendo construir métricas importantes para las organizaciones.

Si a esto sumamos la creación de un sitio de trabajo para cada proyecto, nos encontramos con una herramienta que lejos de estar orientada a un único proyecto, se focaliza en la organización completa, el manejo de múltiples proyectos y recursos, el manejo de la relación entre los mismos y la gestión de los procesos de administración de proyectos: una solución completa y corporativa.

3. Project Web Application

PWA es la aplicación web de Project Server. Fue pensada para dos objetivos principales:

· Soportar la configuración de Project Server.

· Brindar acceso a la información que no sea exclusiva de un único proyecto.

El primer uso que se le dará a PWA, luego de configurar las opciones, es crear vistas en Project Center. Estas vistas nos permiten agrupar, filtrar y ordenar los proyectos de acuerdo a distintos criterios de organización de nuestra cartera. Desde allí podemos ver el detalle de tareas y Gantt de los proyectos, sin necesidad de distribuir archivos, así como también acceder al sitio de cada proyecto.

El segundo uso más común tiene que ver con la posibilidad de cargar horas o informar el avance de las tareas. Aquí también contamos con información de varios proyectos ya que una persona puede estar asignada a varios. Lo interesante es que un usuario puede acceder a una vista de sus tareas, es decir, sus asignaciones.

Por último, a partir del centro de recursos, podremos analizar las asignaciones de uno o varios, sus disponibilidad y sobre-asignación, además de gestionar los datos de cada uno.

Noten como mientras en Project el usuario principal era el líder de proyecto, con PWA hemos agregado por lo menos tres roles:

· Miembros del equipo de trabajo.

· Jefes de áreas o responsable de recursos.

· Interesados en visualizar y controlar la cartera de proyectos.

4. Los sitios de proyecto

Los sitios de proyecto constituyen la tercera pata de esta solución de EPM (Enterprise Project Management). La idea es sencilla, se crea un sitio web en SharePoint para manejar la información propia de cada proyecto. Fuera de la caja, estos sitios poseen:

· Documentos

· Riesgos

· Asuntos (issues)

· Entregables

Todas estas listas están relacionadas con funcionalidad de Project, por ejemplo se puede vincular un documento a una tarea, se pueden ver los riegos de todos los proyectos en la base de datos de Reportes de Project Server o se pueden vincular proyectos entre sí través de la funcionalidad de entregables.

Pero no sólo eso, cuando se descubre el potencial de los sitios de proyecto, se avanza en el uso de los mismos. Enumero a modo de ejemplo, algunas de las funcionalidades que me ha tocado ver implementadas como extensiones a lo estándar:

· Cambios a los proyectos.

· Plantillas de documentos.

· Indicadores claves de performance.

· Acuerdos.

· Micro blogging.

· Información cualitativa del proyecto.

· Defectos.

· Requerimientos.

· Implementaciones de metodologías ágiles.

· Etc.

El sitio de proyecto se termina convirtiendo en una herramienta súper potente, a veces la más utilizada, entre otras cosas porque está orientada a todo el equipo de proyecto.

image

5. Arquitectura

Project Server está conformado por cuatro herramientas:

· Project Server

· SharePoint Server

· SQL Server

· Project Professional

El modelo es totalmente escalable, pudiendo ser instalado en un único servidor o en forma de granja. También son soportadas las instancias de Project Server, las cuales permiten crear diferentes instalaciones dentro de la misma instalación de SharePoint.

Se trata de un modelo flexible y robusto, pero la arquitectura es lo suficientemente compleja como para dedicarle un tiempo a su diseño.

6. Project Server no es SharePoint

Atención administradores de SharePoint: Project Server no es SharePoint. Si bien podemos decir que utiliza su infraestructura, hay muchas diferencias que si no las tenemos en cuenta, nos pueden hacer cometer errores:

· Project Server posee 4 bases de datos propias.

· Project Server posee un modelo de seguridad propietario.

· Los sitios de proyecto de SharePoint en Project Server poseen particularidades y conexiones con Project Server.

· El modelo de programación de Project Server es propietario.

· Los flujos de trabajo de Project Server sólo se pueden crear con Visual Studio y poseen particularidades como actividades propias o entidades que se configuran desde Project Server.

· Todas las operaciones de Project Server se procesan través de un servicio de cola propietario.

· Las alertas de Project Server son propietarias.

· La forma de dimensionar Project Server se basa en otras variables, distintas a las de SharePoint.

Y hay mucho más. No se puede encarar un proyecto de Project Server como si fuera de SharePoint.

7 ¿Cuánto cuesta Project Server?

Para utilizar Project Server necesitarán las licencias de servidor de SharePoint Enterprise y de Project Server, además de lo que respecta a Windows y SQL Server.

Desde el punto de vista del cliente tenemos dos tipos de usuarios:

· Los que necesitan Project Pro. Esta licencia incluye la CAL de PWA.

· Los que sólo acceden a PWA y necesitan CAL de Project Server, de SharePoint Enterprise y de SharePoint Standard.

8. La incorporación de los flujos de trabajo

Una de las novedades más importante de la versión 2010 de Project Server es el manejo de los portfolios de proyectos y todo el circuito de la gestión de la demanda. El foco principal es que esta herramienta nos permite seleccionar qué proyectos ejecutar, a partir de ciertos parámetros como drivers, costos, beneficios, etc.

En mi opinión, la incorporación de flujos de trabajo es clave, porque entre otras cosas nos permite manejar el proceso de aprobación de los proyectos. Con esto Microsoft ha logrado que el circuito comience mucho antes que el momento de la construcción del Gantt y con otros actores como los solicitantes o las gerencias que aprueban. Sin duda un gran paso que posiciona a la herramienta un escalón más arriba.

9 ¿Para quién está pensado?

Project Server está pensado para las organizaciones que manejen parte de sus actividades por Proyectos. No es necesario que la organización posea implementada una oficina de Administración de Proyectos (PMO). En mi opinión personal funciona mejor en organizaciones no pequeñas, que suelen ser las que manejan los proyectos grandes y con mayor cantidad de involucrados.

10 ¿Cómo se implementa?

La respuesta da para un artículo completo, que escapa al alcance de este, pero dejo algunas ideas. Lo primero que hay que saber es que se trata de un proyecto con fuertes componentes técnicos y más fuertes componentes funcionales y de procesos. Les dejo un primer nivel de WBS posible que por supuesto puede variar de acuerdo a cada caso:

· Alcance.

· Definición del proceso de Administración de Proyectos.

· Diseño de la solución.

· Diseño y acuerdo de la arquitectura técnica.

· Implementación de la arquitectura técnica.

· Configuración y parametrización.

· Desarrollo de customizaciones.

· Pruebas de Aceptación.

· Capacitación.

· Definición de los procedimientos de Soporte, Mantenimiento y Operación.

· Despliegue.

· Puesta en marcha del Soporte y Operación.

· Post implementación.

Conclusión

Espero que estos 10 puntos hayan colaborado en la comprensión del alcance de esta herramienta y los animen a encarar una implementación de la misma. Si su organización va por el camino de la gestión de proyectos, entonces una herramienta EPM como Project Server será de una ayuda increíble.

Hasta la Próxima.

 

Juan Pablo Pussacq Laborde

SharePoint MVP

Blog: http://surpoint.blogspot.com/

Facebook: http://facebook.com/surpointblog/

Twitter: http://twitter.com/jpussacq/

 

Artículo publicado originalmente en CompartiMOSS:

http://surpoint.blogspot.com.ar/2012/06/compartimoss-numero-12.html

Filtros por rangos de fechas en SharePoint 2007 [Alternativa 1]

En este artículo vamos a mostrar una forma de crear filtros por rangos de fechas sobre una lista de SharePoint 2007 utilizando SharePoint Designer y el elemento web “Date Filter” de MOSS 2007. Lo que queremos resolver es la limitación de filtrar sólo por una fecha específica, que es lo que ofrece SharePoint fuera de la caja, sin tener que utilizar Visual Studio.

Los pasos que seguiremos son:

  1. Crear una lista en SharePoint
  2. Convertir la lista a Data View con SharePoint Designer
  3. Filtrar la vista usando un parámetro
  4. Agregar elementos web de “Date Filter”
  5. Conectar el “Date Filter” a la Date View

 

1. Creación de la lista

Creamos una lista sencilla con dos campos: Título y Fecha tal como se ve en la imagen:

image

 

2. Convertir la lista a Data View con SharePoint Designer

Abrimos SharePoint Desiner y luego abrimos la vista que hemos creado, tal como se ve en la imagen:

image

Hacemos clic con el botón derecho del mouse sobre la vista y elegimos la opción “Convert to XSLT Data View”:

image

 

3. Filtrar la vista usando un parámetro

Una vez realizada la conversión, se nos habilitan las opciones “Common Data View Tasks”. Dentro de esas opciones elegimos “Parámetros”:

image

En nuestro caso, agregaremos dos parámetros:

  • Fecha Desde
  • Fecha Hasta

image

Una vez creado los parámetros, lo que haremos es filtrar la vista utilizando esos parámetros:

image

Y grabamos, ya terminamos con SharePoint Designer.

 

4. Agregar elementos web de “Date Filter”

Antes de agregar un elemento web de filtro por fechas, necesitaremos activar esta característica en nuestra colección de sitios: “Características de colección de sitios de Office SharePoint Server Enterprise”.

Editamos la página y agregamos dos elementos web del tipo “Filtros de Fecha”:

image

Le ponemos un título, en nuestro caso “Fecha Desde” y veremos que aparece como no conectado. Así que el siguiente paso es conectar los dos elementos web.

image

 

5. Conectar el “Date Filter” a la Date View

Para configurar la conexión elegimos la opción “Obtener

image

image

Luego repetimos la misma operación con otro parámetro para la Fecha Hasta. Incluso podemos especificar valores predeterminados fijos o como diferencia de la fecha actual. Así quedaría nuestra pantalla:

image

La opción “Sort by” aparece porque configuramos la opción de “Sort” en Data View Properties. No configuramos la opción de “Filter” porque es incompatible con nuestros filtros. Los filtros estándar de vistas de SharePoint desaparecieron en el mismo momento en que agregamos los parámetros.

image

 

Conclusión

El método de agregar filtros por rangos por fechas combinando SharePoint Designer y la web part de filtros por fechas de MOSS es relativamente sencillo y nos brinda la posibilidad de cumplir con este requerimiento bastante común.

En el siguiente enlace pueden ver otra alternativa: http://surpoint.blogspot.com.ar/2012/07/filtros-por-rangos-de-fechas-en_20.html

Fuentes y enlaces interesantes

viernes, 13 de julio de 2012

Calendarios en Project Server [Parte 2]

En el artículo anterior, habíamos realizado una introducción a los conceptos sobre el manejo de calendarios en Project Server. Además explicamos cómo se configura y qué impacto puede tener realizar cambios en los mismos.

En esta segunda parte, presentamos una serie de consultas SQL que permiten hacer un análisis del uso de calendarios en nuestra instalación de Project Server. Algunas consultas utilizan campos personalizados que pueden no estar presentes en su instalación. Si es así, sólo tienen que eliminar esa sección.

Es importante hacer estas consultas sólo en entornos de prueba, ya que acceden a la base de datos Published, acción no soportada por Microsoft.

Espero les resulten útiles:

/* Calendarios corporativos*/

use ProjectServer_Published
select CAL_NAME Calendario
from dbo.MSP_CALENDARS
where CAL_NAME is not null
order by Calendario

/* Calendario de Proyectos */

use ProjectServer_Published
select PC.Proj_Name AS Proyecto, PR.[Estado del Proyecto] AS Estado , C.CAL_Name AS [Calendario del proyecto],
CAST (PC.[PROJ_OPT_MINUTES_PER_DAY] AS FLOAT)/60 AS [Jornada laboral],
CAST (PC.[PROJ_OPT_MINUTES_PER_WEEK]AS FLOAT)/60 AS [Semana laboral]
from MSP_Projects PC
left join MSP_Calendars C on C.CAL_UID = PC.CAL_UID
left join ProjectServer_Reporting.dbo.MSP_EpmProject_UserView PR on PR.ProjectUID = PC.PROJ_UID
order by PC.Proj_Name asc

/* Calendario de Recursos */

use ProjectServer_Reporting
select ResourceName Recurso, ResourceBaseCalendar Calendario,
case ResourceIsActive when 0 then 'No' else 'Si' end as [Activo]
from MSP_EpmResource_UserView
order by Recurso

/* Calendarios locales de Proyectos*/

use ProjectServer_Published
select PROJ_Name AS Proyecto, CAL_NAME AS Calendario
from dbo.MSP_PROJECT_CALENDARS C
left join MSP_Projects PC on C.PROJ_UID = PC.PROJ_UID
where C.CAL_NAME is not null
and CAL_IS_ENTERPRISE_CAL <> 1
order by Proyecto, Calendario

/* Recursos por proyecto */

use ProjectServer_Published
select P.Proj_Name Proyecto, R.RES_NAME Recurso,
case RES_IS_ENTERPRISE_RESOURCE when 0 then 'Si' else 'No' end as [Es local],
T.RES_NAME [Nombre local]
from dbo.MSP_PROJECT_RESOURCES T
left join MSP_Projects P on P.PROJ_UID = T.PROJ_UID
left join dbo.MSP_RESOURCES R on R.RES_UID = T.RES_UID
where not (RES_IS_ENTERPRISE_RESOURCE = 0 and T.RES_NAME is null)
order by Proyecto, Recurso, T.RES_NAME

/* Tareas por proyecto */

use ProjectServer_Published
select P.Proj_Name Proyecto, T.TASK_NAME Tarea,
case T.TASK_IS_SUMMARY when 0 then 'No' else 'Si' end as Sumaria,
case T.TASK_TYPE when 0 then 'Unidades fijas' when 1 then 'Duración fija' when 2 then 'Trabajo fijo' end as Tipo,
case T.TASK_IS_EFFORT_DRIVEN when 0 then 'No' else 'Si' end as EffortDriven,
case T.TASK_CONSTRAINT_TYPE
when 0 then 'As soon as possible'
when 1 then 'As late as possible'
when 2 then 'Must start on'
when 3 then 'Must finish on'
when 4 then 'Start no earlier than'
when 5 then 'Finish no earlier than'
when 6 then 'Finish no later than'
end as Restriccion,
C.CAL_NAME Calendario,
case T.TASK_IGNORES_RES_CAL when 0 then 'No' else 'Si' end as Ignora
from MSP_TASKS T
left join MSP_Projects P on P.PROJ_UID = T.PROJ_UID
left join MSP_Calendars C on T.TASK_CAL_UID = C.CAL_UID
left join ProjectServer_Reporting.dbo.MSP_EpmProject_UserView PR on PR.ProjectUID = P.PROJ_UID
where T.TASK_NAME is not null
and PR.[Estado del Proyecto] = 'Ejecución'
order by Proyecto, Tarea

Enlaces interesantes

jueves, 12 de julio de 2012

Mejoras al rendimiento de Project Server 2007 [Parte 2]

Introducción

Este es el segundo artículo que enumera posibles acciones para mejorar el rendimiento de Project Server 2007. En el artículo anterior se enumeró como acción principal la desfragmentación de índices de la base de datos, lo que en principio generó una mejora del 28% en el tiempo de publicación de un proyecto.

En esta segunda parte vamos a probar otras acciones, que a continuación se enumeran:

  • Eliminación de recursos locales
  • Truncamiento del log de transacciones
  • Instalación de Microsoft Best Practices Analyzer
  • Control de CPU y Memoria
  • Ejecución de un plan completo de mantenimiento de base de datos
  • Eliminación de líneas base no utilizadas
  • Eliminación de calendarios locales no utilizados

 

Eliminación de recursos locales

Esta podría ser una de las posibles causas que afecten el rendimiento. En el proyecto que usamos de prueba, sólo contábamos con 4 recursos locales. Los eliminamos y vimos que el tiempo de publicación no cambió.

De todas maneras, es una acción que habría que tener en cuenta si tenemos muchos recursos locales, cosas que en principio no tiene mucho sentido en una instalación de Project Server, donde los recursos deberían ser corporativos.


Truncamiento del log de transacciones

Truncar los archivos de transacciones es una acción que podría afectar el rendimiento. En nuestro caso de ejemplo, había algunos archivos de tamaño importante. Los truncamos a todos y no obtuvimos mejoras. Lo que sí, recuperamos espacio en disco.

Para efectuar el truncamiento, utilizamos estos comandos (en el ejemplo están aplicados a la base de Reproting):

Use ProjectServer_Reporting

Go

Backup Log ProjectServer_Reporting With Truncate_Only

GO

Declare @LogFileLogicalName sysname

select @LogFileLogicalName=Name from sys.database_files where Type=1

print @LogFileLogicalName

DBCC Shrinkfile(@LogFileLogicalName,100)

 

Instalación de Microsoft Best Practice Analyzer

Microsoft Best Practices Analyzer for Windows SharePoint Services 3.0 and the 2007 Microsoft Office System es un producto de Microsoft que genera ciertos informes que pueden ayudar a los administradores en temas de rendimiento y escalabilidad.

Instalamos el producto descargándolo desde el siguiente enlace:

http://www.microsoft.com/en-us/download/details.aspx?id=11948

Una vez instalado y descomprimido, ejecutamos el siguiente comando:

sharepointbpa.exe -cmd analyze -substitutions SERVER_NAME nombre_servidor

Es posible que se obtenga un mensaje como el siguiente:

WARNING: No messages in file. Analysis may not have been run.

En nuestro caso sucedió porque no habíamos respetado el valor “SERVER_NAME”.

Una vez ejecutado, se obtiene un informe como el siguiente:

clip_image002

En particular, en este caso, el informe no generó recomendaciones que puedan mejorar el rendimiento.


Control de CPU y Memoria

Otras de las pruebas realizadas consistieron en controlar los recursos del servidor y del cliente. Controlamos la memoria y CPU de ambos utilizando el administrador de tareas de Windows en el momento de la publicación de un proyecto.

También ejecutamos algunas herramientas de SQL Server como Activity Monitor y Performance Monitor. No encontramos mayores problemas, pero es importante realizar estos controles. Podrían llevarnos a acciones como el cambio de configuración de nuestra granja, la separación física del servidor de SQL, entre otras.

image

clip_image006


Plan completo de mantenimiento de base de datos

En el documento anterior nos habíamos enfocado en la des-fragmentación de índices. En esta prueba, realizamos un plan completo que incluyó las actividades que se muestran en la siguiente imagen:

clip_image008

No se lograron mejoras significativas, pero de todas maneras sigue siendo una tarea recomendable. Un dato importante es que el plan completo llevó más de 30 minutos de ejecución:

image

 

Eliminación de líneas base no utilizadas

Otra prueba realizada consistió en la eliminación de las líneas base no utilizadas. En el proyecto de ejemplo eliminamos 5 líneas base de un total de 6. Esto redujo el tiempo de publicación de 5 a 3 minutos. Importante mejora.

 

Eliminación de calendarios no utilizados

Finalmente optamos por eliminar un conjunto de calendarios locales que tenía el proyecto, desde la opción Calendarios dentro de Herramientas / Organizador. Esto generó una mejora de un minuto aproximada.

No se puede decir con exactitud cuanta mejora atribuir a la eliminación de calendarios y cuánto a las línea base, aunque pareciera que la eliminación de las líneas base tiene un efecto más que importante.


Conclusión

Nuestro proyecto de prueba de 2.000 tareas tardaba originalmente 7 minutos en completar todas las tareas asociadas a la publicación, tal como se muestra en la imagen:

clip_image011

Luego de aplicar algunas acciones, se observa una reducción de 5 minutos, una mejora de 71% distribuida de la siguiente forma:

  • Desfragmentación de índices (2 minutos)
  • Eliminación de líneas base no utilizadas (2 minutos)
  • Eliminación de calendarios locales no utilizados (1 minuto)

En la imagen se ve el resultado:

clip_image013

La acción de desfragmentación de índices se puede programar para ejecutar periódicamente fuera del horario operativo.

Las acciones de eliminación de líneas base o calendarios locales, pueden ser buenas recomendaciones hacia los líderes para mantener sus proyectos más limpios, y por lo tanto con mejor rendimiento

Otras acciones que pueden mejorar el rendimiento tienen que ver con la revisión y reducción de ciertos parámetros como:

  • Cantidad de campos personalizados
  • Cantidad de recursos
  • Nivel de complejidad de las reglas de seguridad
  • Cantidad de proyectos en línea (no archivados)

viernes, 6 de julio de 2012

Calendarios en Project Server (una mirada profunda)

Introducción

En este documento se describen las distintas opciones que Microsoft Project Server posee para el manejo de calendario. Esta dividido en tres partes:
  • Parte 1: conceptos
  • Parte 2: forma de uso
  • Parte 3: impacto al realizar cambios en los calendarios


Contenido:

  • Introducción
  • Contenido
  • Parte 1: conceptos
    • Introducción
    • ¿Qué opciones de configuración de calendario existen?
    • ¿Qué calendario tiene precedencia?
    • Calendario versus Opciones de Calendario
    • ¿Qué calendarios están configurados fuera de la caja?
    • ¿Cuántos calendarios crear? Recomendaciones
  • Parte 2: forma de uso
    • ¿Cómo crear un calendario?
    • ¿Cómo asignar un calendario a un proyecto, recurso o tarea?
  • Parte 3: impacto al realizar cambios en los calendarios
    • ¿Cómo afectan los cambios en los calendarios a los proyectos?
    • ¿Cómo puedo conocer qué calendarios están utilizando los proyectos y los recursos?¿Cómo encarar la modificación de calendarios?
  • Conclusión.
  • Bibliografía
  • Apéndice: tipos de tareas

Parte 1: conceptos

Introducción

Un proyecto puede necesitar distintos tipos de calendarios. A modo de ejemplo, no es lo mismo un calendario para una máquina (que puede trabajar 24 horas), una persona o una persona que trabaja por la noche. Por otro lado, los días feriados varían normalmente de acuerdo al país.
Es por ello que en Project podemos manejar diferentes calendarios y también tenemos la opción de asignarlos en diferentes niveles:
  • Proyectos
  • Tareas
  • Recursos.
¿Para qué se usan los calendarios? Para…
  • Determinar la disponibilidad de los recursos
  • Determinar cómo se programan las tareas
  • Determinar cómo se programan los recursos asignados a las tareas


¿Qué opciones de configuración de calendario existen?

Project Server permite crear calendarios corporativos, esto quiere decir que los mismos pueden ser compartidos por diferentes proyectos.
Una vez que definimos un calendario, podemos configurar opciones como:
  • Excepciones al calendario, indicando qué días no son laborables.
  • Semanas laborables que nos permiten indicar por cada día de la semana el horario laboral, lo que determina:
    • Horarios de inicio y fin, y de almuerzo.
    • Cantidad de horas laborables por día
Estos calendarios podrán ser asignados:
  • Al proyecto, dentro de la opción “Información del Proyecto”
  • A un recurso, dentro del “Centro de Recursos”
  • A una tarea, dentro de las opciones avanzadas de la tarea
A su vez, dentro de cada proyecto podremos configuran opciones de calendario tales como:
  • Día en qué comienza la semana
  • Mes en que comienza el año fiscal
  • Hora predeterminada de entrada y de salida
  • Jornada laboral, semana laboral, días por mes
Más adelante se explica la relación entre estas opciones y las configuraciones propias del calendario.


¿Qué calendario tiene precedencia?

El calendario del Proyecto aplica a todos las tareas que:
  • Tenga tipo de tarea duración fija.
  • No tengan recursos asignados
  • No tengan calendarios aplicados específicamente a tareas
El calendario del Recurso:
· Sobrescribe el calendario del Proyecto, si la tarea posee recursos asignados.
El calendario de Tarea:
· Sobrescribe el calendario del Proyecto
· Sobrescribe el calendario del Recursos si se encuentra configurada la opción “la programación omite los calendarios de recursos”
clip_image002


Calendario versus Opciones de Calendario

Si se observa con cuidado, las opciones de inicio y fin del día y la cantidad de horas laborales por día, pueden ser configuradas (aparentemente) en dos lugares:
  • En las opciones de calendario del proyecto.
  • En las opciones “semanas laborales” del calendario.

Opciones de Calendario

clip_image004


Semanas laborales en el Calendario

clip_image006



¿Cuál es la relación entre estas variables? ¿Entran en conflicto?
Sólo los calendarios pueden afectar la programación de las tareas y de los recursos en el tiempo.
Opciones como la “hora predeterminada de entrada” en las opciones de calendario del proyecto, sirven para establecer una hora de inicio cuando la misma no es especificada explícitamente.
Importante: la opción de “jornada laboral” sirve para establecer la cantidad de de horas para una tarea cuando ingresamos la duración de la misma en días.
Si no hacemos coincidir “jornada laboral” y “semana laboral” con las opciones de semanas laborales dentro de nuestro calendario, podremos obtener resultados confusos en el campo duración. Una buena recomendación es hacer coincidir estos valores.
Veamos un ejemplo
Supongamos que tenemos:
· Un calendario de 6.5 horas diarias
· En las opciones de calendario del proyecto, tenemos una jornada laboral de 8 horas
Vamos a crear una tarea, asignarle un recurso y configurar en 2 días la duración. Observamos que el trabajo asignado es de 16 horas (toma las opciones del proyecto), pero la tarea se reparte en 3 días que es lo que necesita el recurso asignado para completar el trabajo:
clip_image008
clip_image010


¿Qué calendarios están configurados fuera de la caja?

Fuera de la caja, Microsoft Project posee tres calendarios ya configurados:
  • Standard: es el calendario predeterminado. Utiliza un horario laboral de 8 a 5 con una hora para almuerzo
  • 24 hours: útil para maquinarias que trabajan en forma continua o cuando necesitamos asignar recursos en diferentes horarios.
  • Night Shift: Utiliza el horario desde las 23 a las 8 con una hora intermedia para descanso


¿Cuántos calendarios crear? Recomendaciones

Microsoft Project ofrece tantas configuraciones para el manejo de calendario que podemos sentirnos tentados a utilizarlas todas. No siempre esto es conveniente, a continuación enumeramos algunas recomendaciones:
  1. En lo posible manejarse con el calendario estándar.
  1. Crear calendarios específicos para cada país si es el caso de nuestra organización. Esto nos permitirá manejar los feriados específicos de cada lugar.
  1. Crear un calendario específico para tareas que deben efectuarse fuera del horario laboral, por ejemplo la instalación de un software en un servidor. Utilizar esta opción sólo en el caso en que queramos que Project maneje automáticamente estas excepciones.
  1. No complicarse con la cantidad de horas diarias, si la gente está acostumbrada a especificar la duración en función de días (no horas) y si no estamos haciendo un uso exhaustivo del esfuerzo. Sin embargo, este dato se debe tener en cuenta para medir la disponibilidad de los recursos.
En general tener en cuenta que las excepciones siempre pueden tener impacto en el rendimiento y en la simpleza del trabajo. Con lo cual no habría que utilizarlas salvo que sea estrictamente necesario.


Parte 2: forma de uso

¿Cómo crear un calendario?

No importa a qué nivel asignaremos el calendario, la forma de crearlo es siempre igual:
  • Accedemos a Configuración del Servidor / Calendarios de Empresa
· Elegimos la opción Nuevo Calendario
  • Elegir un nombre para el calendario
  • Establecer las excepciones
  • Grabamos el calendario en Project Server
clip_image012
clip_image014
En la sección Semanas laborales se puede establecer en qué horarios y días de la semana se trabaja, configurando la opción “Predeterminado”:
clip_image016
En este punto hay que prestar atención respecto a la opción a elegir, especialmente para ver si nosotros definimos las bandas horarias o si se toman las opciones del proyecto.


¿Cómo asignar un calendario a un proyecto, recurso o tarea?

El calendario predeterminado para un proyecto nuevo es el Estándar. El mismo puede ser modificado desde la pantalla Información del Proyecto:
clip_image018
No se puede establecer un calendario distinto al estándar como predeterminado. Sin embargo, se puede establecer un calendario para cada plantilla corporativa.
Para asignar un calendario a una tarea o grupo de tareas, accedemos a las opciones avanzadas de la misma:
clip_image020
Si queremos que el calendario asignado a nivel de tarea tome precedencia sobre el calendario del recurso, entonces seleccionamos la opción “La programación omite los calendarios de recursos”.
Imaginemos que nuestra organización posee un calendario estándar. Sin embargo, algunas tareas como instalación de software en producción deben ser realizadas fuera del horario laboral, para no dar de baja los servicios. En este caso puede ser útil asignar un calendario particular a una tarea específica como la instalación de software.
Nota: otra opción en este caso puede ser establecer restricciones del tipo “Debe comenzar en”. Estas restricciones tienen como desventaja que pueden ser fuertes cuando queremos hacer re-planificaciones en nuestro plan. Pero tienen la ventaja de no tener que crear (y mantener) un calendario específico para este tipo de actividades.
Cuando programamos una tarea en un día no laborable, nos aparece un mensaje como el siguiente:
clip_image022
Necesitamos poner una restricción fuerte en las opciones avanzadas de la tarea para que la misma pueda realizarse el fin de semana. Recordemos que esto es cuando no usamos un calendario de excepción para la tarea:
clip_image024


Parte 3: impacto al realizar cambios en los calendarios

¿Cómo afectan los cambios en los calendarios a los proyectos?

Los cambios en un calendario pueden afectar a la programación de un proyecto. Estos cambios se aplican en el momento en que el proyecto de abre con Project Professional, no en el momento en que se realiza el cambio en el calendario.
Veamos algunos ejemplos
Creamos un calendario de prueba en el que se trabajan 6 horas por día “Calendario de Prueba JP” y se lo asignamos al recurso “PUSSACQ, JUAN”:
clip_image026
Creamos una tarea, la estimamos en 2 días y le asignamos al recurso JUAN. La tarea posee un trabajo de 16 horas (porque está usando las opciones predeterminadas del proyecto) y se distribuye en tres días por el recurso no trabaja más de 6 horas.
clip_image028
clip_image030
Modificamos el calendario y lo convertimos en un calendario de 8 horas:
clip_image032
Abrimos nuevamente el proyecto luego de haber realizado los cambios en el calendario y observamos cómo se han impactado los cambios automáticamente, afectando la fecha de fin de la tarea y la distribución:
clip_image034
clip_image036
Se puede observar que no se modificó la duración de la tarea. Veamos un caso en que sí se modificaría. Cambiamos la semana laboral a 10 horas.
clip_image038
La duración cambia a 1.6:
clip_image040
¿Por qué cambió a 1.6? Porque el trabajo de la tarea estaba establecido en 16 horas, a 10 horas por día, se trata de una duración de 1,6 días. Sin embargo, la distribución se sigue realizando en base al calendario, es decir 8 horas por día, tal como se puede ver en la sección Uso de Recursos:
clip_image042
Veamos que sucede ahora si elimino un calendario, en este caso el que habíamos creado como ejemplo:
Lo primero que sucede es que no puedo eliminar el calendario, porque está siendo utilizado por un Recurso.
clip_image044
Para resolver esto, cambiamos el calendario del recurso y volvemos a intentar la eliminación. En este caso aparece un nuevo error, porque el calendario está siendo utilizado por un proyecto:
clip_image046
Realizo la modificación y vuelvo a intentar eliminar el calendario. Aparece el mismo error. Aparentemente se trata de un bug y hasta que esté resuelto, sólo queda la opción de renombrarlo como “NO USAR” :(
Más información en http://social.technet.microsoft.com/Forums/en-US/projserv2010setup/thread/fac71834-01f9-494b-a372-450c6d7e8bfb/


¿Cómo puedo conocer qué calendarios están utilizando los proyectos y los recursos?

Para comenzar a implementar cambios a los calendarios, un primer punto es analizar la situación actual. Podemos realizar algunas consultas SQL para ver cuál es el uso actual de calendarios. Las siguientes son algunas de las consultas posibles, a modo de ejemplo, es posible que necesitemos hacer algunas más detalladas, por ejemplo para ver los calendarios asignados a tareas:
/* Uso de Calendarios por Recursos */
Use ProjectServer_Reporting
select ResourceBaseCalendar, count (*) Total
from MSP_EpmResource_UserView
group by ResourceBaseCalendar
order by count(*) desc
/* Detalle de Calendarios por Recursos */
Use ProjectServer_Reporting
select ResourceName, ResourceBaseCalendar
from MSP_EpmResource_UserView
order by ResourceName
/* Uso de Calendarios por Proyectos */
Use ProjectServer_Published
select C.CAL_Name, count (*) Total
from MSP_Projects PC
left join MSP_Calendars C on C.CAL_UID = PC.CAL_UID
group by C.CAL_Name
order by count(*) desc
/* Detalle de Calendarios por Proyectos */
Use ProjectServer_Published
select C.CAL_Name, PC.Proj_Name
from MSP_Projects PC
left join MSP_Calendars C on C.CAL_UID = PC.CAL_UID
order by C.Cal_Name, PC.Proj_Name desc
/* Variante del query anterior que incluye un campo custom "Estado del Proyecto" */
Use ProjectServer_Published
select C.CAL_Name, PC.Proj_Name, PR.[Estado del Proyecto]
from MSP_Projects PC
left join MSP_Calendars C on C.CAL_UID = PC.CAL_UID
left join ProjectServer_Reporting.dbo.MSP_EpmProject_UserView PR on PR.ProjectUID = PC.PROJ_UID
order by C.Cal_Name, PC.Proj_Name desc
/* Variante para obtener las opciones de calendario del proyecto*/
Use ProjectServer_Published
select PC.Proj_Name, C.CAL_Name, pc.[PROJ_OPT_MINUTES_PER_DAY],
CAST (PC.[PROJ_OPT_MINUTES_PER_DAY] AS FLOAT)/60 AS [Jornada laboral],
CAST (PC.[PROJ_OPT_MINUTES_PER_WEEK]AS FLOAT)/60 AS [Semana laboral]
from MSP_Projects PC
left join MSP_Calendars C on C.CAL_UID = PC.CAL_UID
order by PC.Proj_Name desc
Si se desea conocer los calendarios asignados a las tareas como excepciones, una forma sencilla de hacerlo, es agregando la columna “Calendario de Tarea” en Project Professional.
Si se desea conocer el calendario de un recurso, se puede consultar en Centro de Recursos de PWA, agregando el campo correspondiente. También se puede agregar el dato en la Hoja de Recursos de Project Professional.

Les dejo un artículo con consultas más complejas en este enlace: http://surpoint.blogspot.com.ar/2012/07/calendarios-en-project-server-una_13.html

 

¿Cómo encarar la modificación de calendarios?

Las modificaciones en los calendarios pueden tener impactos difíciles de controlar. En caso que lo que necesitemos cambiar sean los calendarios de los recursos, el impacto será mayor ya que afectará en el mismo momento a todos los proyectos, siempre teniendo en cuenta que el impacto se da cuando se vuelve a abrir el proyecto.
El conjunto de acciones para implementar los cambios puede incluir:
  1. Cambiar el calendario de los recursos
  2. Cambiar el calendario del proyecto
  3. Cambiar el calendario de tareas
  4. Cambiar el calendario en las plantillas
  5. Cambiar las opciones de calendario en Enterprise Global
  6. Cambiar las opciones de proyecto si lo deseamos. Recordemos que las opciones del proyecto nos afectarán en la duración, pero no en la asignación.
Nota: cambiar las opciones del proyecto puede ser confuso, si el criterio que el líder ha utilizado para estimar es a partir de la duración. Pero también puede ser confuso que estas opciones no coincidan con las del calendario.
Cuando se cambian los calendarios, los proyectos pueden verse impactados en su duración, sus fechas y su trabajo. Esto no sólo va a depender de los calendarios utilizados, sino también de variables tales como:
  • Tipo de tarea (ver apéndice)
  • Tipo de redistribución (manual o automática)
  • Configuración del campo “Condicionada por el esfuerzo”
Es algo difícil predecir el impacto de las modificaciones en los calendarios. La recomendación es:
  • Probarlos en un ambiente de prueba de Project Server
  • Conocer cómo funcionan cada una de las opciones de calendario y de programación en general
  • Dar soporte a los líderes de proyecto luego de efectuar el cambio


Conclusión

Project Server maneja un conjunto muy amplio de opciones de calendario, que nos permite manejar desde las situaciones simples hasta las más complejas.
En general es recomendable mantenerse dentro de lo simple porque:
· La curva de aprendizaje puede ser importante para los usuarios, especialmente si deciden guiarse por la intuición.
· Se puede llegar a situaciones confusas en donde no se comprenda el comportamiento de la herramienta.
Como casi todo aspecto de parametrización en Project Server, tanto en la implementación inicial, como en un cambio importante, conviene tomarse un tiempo para diseñar la estrategia de calendarios. Fundamentalmente para minimizar los impactos ante futuros cambios cuando ya se tengan varios años de historia en la base de datos.



Bibliografía

Libros:
  • Microsoft® OfficeProject Server 2007 UNLEASHED (QuatumPM, LCC) Chapter 12 (Configuring Calendars)
  • Managing Projects with Office Project 2007 (Joli Ballew and Deanna Reynolds) Chapter 1, Lesson 3 (Working with Calendars)
  • Microsoft Office Project Server 2007 – The complete reference (Rob Stewart – Dave Gochberg)
Enlaces:


Apéndice: tipos de tareas

Project maneja tres tipos de tareas:
  • Unidades fijas (predeterminado)
  • Duración fija
  • Trabajo fijo
La fórmula utilizada es:
Trabajo = Duración * Unidades
Al indicar el tipo de tarea, le estamos diciendo a Project cuál es la variable que debe mantener fija.
Unidades fijas

En el siguiente ejemplo, asumimos que un recurso puede realizar una tarea que lleva 16 horas en 2 días. Si ajustamos las unidades, asignado 2 recursos, entonces Project asume que el trabajo sigue siendo el mismo y la tarea se puede realizar en sólo 1 día.
OriginalModifico las unidades
Unidades100%200%
Duración2 días1 día
Trabajo16 horas16 horas
Duración fija
Ahora imaginemos el mismo ejemplo, pero con duración fija. Imaginemos que cambiamos el trabajo a 32 horas. Como Project no puede ajustar la duración, entonces asignará más unidades:
OriginalModifico el trabajo
Unidades100%200%
Duración2 días2 día
Trabajo16 horas32 horas
¿Qué hubiese pasado si cambiábamos los días a 1? Project asume que estamos cambiando la estimación y convierte a la tarea a 8 hs.


Trabajo fijo

Nuevamente el mismo escenario. Imaginemos ahora que asignamos 32 horas de trabajo a la tarea. Project asume que necesitamos el doble de días:
OriginalModifico las unidades
Unidades100%100%
Duración2 días4 día
Trabajo16 horas32 horas
¿Cómo decide Project qué variable ajustar?
Utilizando la siguiente tabla:
Si modifico unidades, Project modifica:Si modifico duración, Project modifica:Si modifico trabajo, Project modifica:
Unidades fijasDuraciónTrabajoDuración
Duración fijaTrabajoTrabajoUnidades
Trabajo fijoDuraciónUnidadesDuración