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 :-)

viernes, 30 de noviembre de 2012

Workflow en Project Server 2010 ¿Cómo crear fases y etapas?

Las fases y etapas permiten estructura un flujo de trabajo de gestión de la demanda dentro de Project Server 2010. Mientras que las fases son un simple agrupamiento de etapas, las etapas tienen algunas características más avanzadas tales como:

A continuación se enumeran los pasos para crear fases y etapas:

 

Crear una fase

Ir a Project Server / Server Settings / Workflow and Project Details Pages

image

Clic en Workflow Phases

Clic en New Workflow Phase

image 

A continuación sólo se necesita ingresar el nombre, la descripción y salvar:

image

Una vez creadas las fases, se obtiene algo como lo siguiente:

image

El siguiente paso es la creación de etapas.

 

Crear una etapa

Antes de crear una etapa, es importante que tengamos creados:

Con toda esa información, ir a Project Server / Server Settings / Workflow and Project Details Pages

 image

Clic en Workflow Stages

Clic en New Workflow Stage

 image

A continuación completar los siguientes campos:

image

image

image

Existen otros datos que se pueden almacenar, pero dependerán de la lógica del flujo de trabajo.

Obtendremos una lista como la siguiente:

image

Seguir el mismo procedimiento para el resto de las etapas.

Workflow en Project Server 2010 ¿Cómo crear una PDP de estado del flujo de trabajo?

Anteriormente se detalló qué son las PDPs y se explicó cómo crear una PDP que permita completar campos personalizados. En este punto explicaremos como crear una PDP que sirva para mostrar el estado de un flujo de trabajo, básicamente en qué punto se encuentra y cuáles son los próximos pasos.

 

Ir a la sección de PDPs

Ir a Project Server / Server Settings / Workflow and Project Details Pages

image

Clic en Project Details Pages

 

Crear la página

Clic en New Document

Completar el nombre, elegir el layout y presionar Create:

image

 

Agregar los elementos web

En en el área “Left Column” clic en “Add a Web Part”

image

Seleccionar la categoría Project Web App y el elemento web Workflow Status. Este elemento nos permitirá mostrar el estado de avance del flujo de trabajo.

image

image

Configurar lo que deseamos ver:

image

Al momento de crear la página, la misma no estará conectada a un flujo de trabajo, motivo por el cual aparecerá un mensaje como el siguiente:

image

Luego hacer clic en Apply y en Stop Editing.

Por supuesto, pueden agregarse otros elementos web de SharePoint o PWA en este punto.

Cuando está página se use dentro de un flujo de trabajo, tendrá un aspecto como el siguiente:

Using the Initial Proposal Details stage

Fuente: http://msdn.microsoft.com/en-us/library/office/ee767699(v=office.14).aspx

 

Configurar el tipo de página

Existen tres tipos de páginas para las PDPs. Este dato se configura editando las propiedades de la página. En este caso, utilizaremos el valor “Workflow Status”:

image

Ese fue el último paso. Está página será utilizada al momento de crear las etapas del flujo de trabajo.

jueves, 29 de noviembre de 2012

Workflow en Project Server 2010 ¿Cómo crear un EPT?

Los EPTs (Enterprise Project Types) de Project Server 2010 permiten tipificar los proyectos. Agrupan las siguientes características:

  • Flujo de trabajo
  • Plantilla de plan de trabajo (Gantt)
  • Plantilla de sitio de proyecto (SharePoint)

Aparecen en PWA como la opción de crear un proyecto o una iniciativa desde la web:

image

A continuación se enumeran los pasos para crear un EPT.

 

Ir a la sección de EPTs

Ir a Project Server / Server Settings / Workflow and Project Details Pages

image

Clic en Enterprise Project Types

 

Crear el EPT

Clic en New Enterprise Project Type

image

Completar la siguiente información y salvar:

  • Nombre: es el nombre que aparecerá al momento de elegir el tipo de proyecto a crear. 
  • Description
  • Site Workflow Association: acá asociamos el flujo de trabajo creado en Visual Studio. 
  • New Project Page / Project Details Pages. acá asociamos la PDP que captura los datos al momento de crear el proyecto. Revisar el artículo que explica cómo crear PDPs.
  • Default: este dato es importante porque el EPT marcado como predeterminado es el que se utiliza si se crear un proyecto desde Project Pro.
  • Departments: útil como opción de filtro, para ver sólo los EPTs correspondientes a un departamento
  • Image
  • Order
  • Project Plan Template
  • Project Site Template

image

Quedará creado el EPT. Las fases y tareas que el EPT utilizará, es parte de la programación que se hace en Visual Studio.

Workflow en Project Server 2010 ¿Cómo crear una PDP?

Las PDPs (Project Details Pages) permiten mostrar o capturar información dentro de un flujo de trabajo de trabajo. Técnicamente son páginas de elementos web de SharePoint que utilizan normalmente elementos web propios de Project Server, pero que también pueden alojar elementos web de SharePoint o elementos construidos por nosotros.

Las PDPs pueden ser usadas para:

  • El inicio de un proyecto, requerido para EPTs que usen flujos de trabajo
  • Para mostrar el estado de un flujo de trabajo
  • Para que un usuario edite información

A continuación se enumeran los pasos para crear una PDP:

 

Ir a la sección de PDPs

Ir a Project Server / Server Settings / Workflow and Project Details Pages

image

Clic en Project Details Pages

 

Crear la página

Clic en New Document

Completar el nombre, elegir el layout y presionar Create:

image

 

Agregar los elementos web

En en el área “Left Column” clic en “Add a Web Part”

image

Seleccionar la categoría Project Web App y el elemento web Project Fields. Este elemento nos permitirá capturar información en campos personalizados.

image

image

Agregar los campos que necesitamos que se muestren en esta PDP haciendo uso de la opción Displayed Project Fields:

image

image

A modo de ejemplo, puede quedar algo así:

image

Luego hacer clic en Apply y en Stop Editing.

Por supuesto, pueden agregarse otros elementos web de SharePoint o PWA en este punto.

La página quedará creada de la siguiente forma:

image

 

Configurar el tipo de página

Como se mencionó anteriormente, existen tres tipos de páginas para las PDPs. Este dato se configura editando las propiedades de la página. En este ejemplo, utilizaremos el valor “New Project”:

image

 

Ese fue el último paso. Luego, al crear las etapas del flujo de trabajo y los EPTs, se hará uso de cada PDP creada.

7mo Simposio Latinoamericano de SharePoint - Costa Rica 2013

Nuevamente la Comunidad SharePoint Costa Rica organizará un día completo con charlas para IT Pros, Desarrolladores, Administradores de Proyectos y Gerentes de Tecnología.

Tendremos charlas sobre SharePoint 2013 para todos los niveles de conocimiento, con más de 30 expositores nacionales e internacionales, como Joel Oleson, Dan Holme, Eduardo Castro, Carlos Rojas, Ricardo Muñoz, Vielka Rojas, y muchos más.
Lugar: Hotel Crown Plaza Corobicí de 8 AM a 6 PM. 

La entrada incluye alimentación completa y parqueo, además participas en la rifa de un Xbox Kinect.
Si compra la entrada antes del 15 de enero tendrá un descuento del 20%. 


Puede comprar con tarjeta de crédito en http://www.mall506.com/sharepointcostarica o por transferencia bancaria.

Más información sobre en http://www.sharepointcostarica.com/simposio2013

Adicionalmente vamos a impartir un curso sobre desarrollo en SharePoint 2013, y otro curso sobre instalación y configuración de SharePoint 2013, para obtener más información sobre los cursos contacte a CTE al teléfono (506) 2283-0990.



miércoles, 28 de noviembre de 2012

¿Cómo manejar los problemas de rendimiento de las líneas base en Project?

Introducción

Microsoft Project permite almacenar líneas base de los proyectos con el objetivo de hacer controles y comparaciones durante la vida del mismo. Las líneas base son una foto del proyecto que almacena la siguiente información:

  • Fechas de inicio
  • Fechas de fin
  • Duraciones
  • Trabajo
  • Costos

Al almacenar esta información se pueden hacer ciertos análisis, comparando lo que se debería haber hecho con lo que realmente se hizo. Incluso se pueden almacenar varias versiones de líneas base. También se pueden generar vistas de Gantt que comparen dos líneas base.

Son muchos los puntos a favor, pero hay un punto en contra: el rendimiento. Almacenar una línea base ocupa bastante lugar, porque prácticamente duplica el espacio utilizado, lo que ocasiona:

Si el rendimiento es un problema importante, el punto a analizar es si realmente se necesita utilizar esta funcionalidad o alcanza con una de menor alcance.

En este documento se analizan alternativas para un escenario en el cual interesa almacenar sólo las fechas planificadas de un proyecto y consultarlas en un reporte en Project Server.

.

La alternativa de los planes interinos

La funcionalidad de planes interinos, es otra alternativa que Project ofrece y que sólo almacena la siguiente información:

  • Fechas de inicio
  • Fechas de fin

Si esa información alcanza para el requerimiento, entonces es una buena elección, porque cambia el espacio ocupado, tal como se ve en el siguiente ejemplo, de un proyecto creado desde cero con 148 tareas (basado en la plantilla MSF Application Development).

Acción Espacio ocupado
Proyecto 1 - Grabación inicial 423 K
Proyecto 1 - Grabación de línea base sin cambios 423 K
Proyecto 1 - Cambio de fecha de proyecto y grabación 720 K
Proyecto 1 - Cambio de fecha de proyecto y grabación línea base 2 944K
Proyecto 1 - Cambio de fecha de proyecto y grabación línea base 3 1.152 K
Proyecto 2 - Grabación inicial 423 K
Proyecto 2 - Grabación de línea base sin cambios 544 K
Proyecto 2 - Cambio de fecha de proyecto y grabación 576 K
Proyecto 2 - Cambio de fecha de proyecto y grabación línea base 2 576 K
Proyecto 2 - Cambio de fecha de proyecto y grabación línea base 3 592 K

Como se ve en la tabla, los planes interinos ocupan menos lugar, pero tienen un problema en las implementaciones de Project Server. La información de las fechas copiadas no llega a la base de datos de Reporting en forma automática, lo cual haría necesario desarrollar algún tipo de custom para que pueda ser consumida por un reporte.

 

La alternativa de las líneas base con menos información

Otra alternativa que surge es la de hacer menos pesada la línea base, usando las siguientes opciones:

  • Grabar sólo tareas seleccionadas
  • Seleccionar sólo la tarea 0 del proyecto

Esta imagen muestra las opciones elegidas (en donde previamente se seleccionó la tarea 0):

image

A continuación los resultados:

Acción Espacio ocupado
Proyecto 3 - Grabación inicial 448 K
Proyecto 3 - Grabación de línea base sin cambios 544 K
Proyecto 3 - Cambio de fecha de proyecto y grabación 544 K
Proyecto 3 - Cambio de fecha de proyecto y grabación línea base 2 560 K
Proyecto 3 - Cambio de fecha de proyecto y grabación línea base 3 560 K

Se puede ver que casi no ocupa espacio adicional. También se puede ver que sólo se almacena la información de línea base en la tarea 0 del proyecto:

image

¿Cuáles son las desventajas?

  • No es intuitivo
  • Se pierde el análisis de desvíos a nivel de tarea

 

Otras alternativas

En caso que se decida no utilizar líneas base, las alternativas posibles son:

  • Campos personalizados
  • Lista de SharePoint en el sitio de proyecto

Estas opciones no tendrían impacto en el rendimiento y hasta podrían ser más intuitivas. Pero se pierden todas las ventajas de una funcionalidad estándar como la línea base, que fácilmente nos permite visualizar desvíos y Gantts de tracking.

Eso es todo por hoy. Hasta la próxima.

lunes, 19 de noviembre de 2012

Cambiar el origen de campos búsqueda en SharePoint 2007 y 2010

Les dejo este interesante artículo de Alexander Bautz, que no he tenido tiempo de probar, pero estoy seguro que funciona ok, como todo lo que desarrolla AB.

La idea es cambiar el origen de la información de un campo lookup usando JavaScript:

Lookup column relinker – cross site – for SharePoint 2007 and SharePoint 2010 – using JavaScript

domingo, 18 de noviembre de 2012

Galería de imágenes en SharePoint 2007 con jQuery

La necesidad de crear una galería de imágenes en SharePoint es bastante común. Estuve probando varias alternativas que encontré disponibles en la web y elegí una de Alexander Bautz por las siguientes razones:

  • Utiliza jQuery
  • Compatible con SharePoint 2007 y 2010
  • No requiere instalación del lado del servidor
  • He usado muchos componentes de Alexander y son muy robustos
  • Tienes varias opciones de configuración

Introducción

El componente y el artículo que lo explica lo pueden descargar desde este enlace, en donde encontrarán:

  • Una librería que contiene el código principal que no necesitan modificar, exceptuando que quieran cambiar algo respecto al idioma (los botones de navegación por ejemplo)
  • El código que deben insertar en la CEWP en donde desean ver la galería

El resultado es una galería como la siguiente:

IMG

Verán que tienen muchas opciones de configuración que a continuación transcribo:

  • listGuid: The GUID of the list you will pull information from – see below for instructions getting this GUID
  • listBaseUrl: The base URL (site URL, not list URL) of the site containing the list to pull from
  • listViewGuid: The GUID of the view you will pull information from – see below for instructions getting this GUID
  • viewFields: An array of all the fields you want to include – using FieldInternalName
  • viewFieldsStyle: An array that corresponds with the above array. Used to set an individual CSS style of the value
  • imageMax: Object literal with the parameters “height” and “width”. This represents the max-height OR the max-width of images that are either pulled from a picture library, or from a hyperlink field configured as “Image”. This does NOT apply to images embedded in a rich text field. Use only one parameter at the time to keep the image aspect ratio. The one not specified should have the value null
  • containerID: A unique ID (unique in the current page) for the slideshow container.
  • containerHeight: Height in pixles
  • containerWidth: Width in pixles
  • containerBorderStyle: CSS style for the border of the container
  • containerBgColor: Background color of the container
  • containerBgImg: Background image to use for the container
  • inDir: The direction to scroll in the content (n,nv,ne,s,sv,se,v,e)
  • outDir: The direction to scroll out the content (n,nv,ne,s,sv,se,v,e or fade)
  • displayTime: How long to display each slide – in milliseconds
  • slideTime: The slide time – in milliseconds
  • readMoreLink: true or false
  • readMoreText: If the above parameter is true – the text or image to click to go to DispForm for the specific item
  • addNewLink: true or false
  • addNewText: If the above parameter is true – the text or image to click to add a new item to the list
  • emptyCaution: If the list view contains no items – this is the text displayed in the first (and only) slide


Simplificación

Aún a costa de perder algunas opciones de configuración, me he tomado el atrevimiento de hacer una función que llame a este componente para que sea más fácil de utilizar por usuarios finales. La función también “embellece” un poco los estilos.

La función armada es la siguiente:

function galeria ( guid_lista, guid_vista, url_sitio, foto_ancho, foto_alto, id_contenedor) {

    var myScrSettings = {'listGuid':guid_lista,
    'listBaseUrl':url_sitio,
    'listViewGuid':guid_vista,
    'viewFields':[],   
    'viewFieldsStyle':['padding:5px;font-size:16px','padding:5px;font-style:italic','text-align:center'],
    'imageMax':{height:foto_alto,width:null},
    'containerID':id_contenedor,
    'containerHeight':foto_alto,
    'containerWidth':foto_ancho,
    'containerBorderStyle':'border:1px solid #aaaaaa; padding: 5px; background-color: #F9F9F9',
    'containerBgColor':'#F7F7F7',
    'containerBgImg':'',
    'inDir':'e',
    'outDir':'v',
    'displayTime':3000,
    'slideTime':1500,
    'readMoreLink':false,
    'readMoreText':"<img title='Go to item' src='/_layouts/images/magnify.gif' border='0'>",
    'addNewLink':false,
    'addNewText':"<img title='Add new item' src='/_layouts/images/newitem.gif' border='0'>",
    'emptyCaution':"<div style='height:100%;width:100%;padding-top:140px;text-align:center'>No existen imágenes para mostrar..."};
   
    init_fillScrollableDiv(myScrSettings);

}

Forma de uso

Los dos pasos para utilizar el componente son:

1. Insertar una CEWP (elemento web de edición de contenido)

image

image

2. Con el botón “Editor de Código Fuente” agregar el siguiente código

image

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

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

<script type="text/javascript">       
   galeria ('6DF5C04A-A196-4F9C-9521-66F3F2363D53', '250AA0DC-9E04-49DB-A112-23D403B8C0C9', '/sites/Intranet', 690, 509, 'gale1');
</script>

Importante: la función galería recibe 6 parámetros que se deben completar:

  1. ID de la lista (nuestra librería de imágenes)
  2. ID de la vista (la vista que muestra las imágenes)
  3. URL del sitio: la url del sitio, no de la lista
  4. El ancho de las imágenes
  5. El alto de las imágenes
  6. Un identificador para el componente (se puede poner siempre el mismo, salvo en los casos que necesitemos poner dos visores en la misma página, se explica más abajo)

¿Cómo se obtienen los datos para los tres primeros parámetros?

La forma más simple de hacerlo es ir a la vista de las imágenes que se quiere mostrar en SharePoint y con el botón derecho del mouse usar la opción “Ver código Fuente” (View Source) de Internet Explorer.

Una vez dentro del código fuente, buscar el texto “ctx.listName”. Aparecerá algo así:

ctx.listName = "{5452F855-04AD-4D66-8D82-023985BE89AD}";

Lo resaltado en rojo, es el GUID de la lista y constituye el primer parámetro

Luego buscamos “ctx.view” y aparecerá:

ctx.view = "{44C717B1-5027-4D34-8B12-3C596CAFE533}";

Lo que está en rojo es el segundo parámetro.

Finalmente buscamos “L_Menu_BaseUrl” y aparecerá algo así:

var L_Menu_BaseUrl="/sites/blablabla";

Lo resaltado en rojo es el tercer parámetro.

¿Cómo agregar más de una galería en la misma página?

Cambian dos cosas en la segunda galería:

  • No se requieren incluir las referencias a las librerías
  • Hay que cambiar el valor del último parámetro

Por ejemplo algo así:

<script type="text/javascript">
galeria ('6DF5C04A-A196-4F9C-9521-66F3F2363D53', '250AA0DC-9E04-49DB-A112-23D403B8C0C9', '/sites/Intranet', 690, 509, 'gale2');
</script>

 

Más información

Alexander publicó el artículo también en este enlace. Les puede ser útil especialmente por los comentarios con las dudas.

Eso es todo por hoy, cualquier duda sólo me consultan. Hasta la próxima!

martes, 6 de noviembre de 2012

Automatizar el envío de correo electrónico con SQL Server (parte 1)

El propósito de este artículo es describir un método para automatizar el envío de correos electrónicos a partir de información disponible en una base de datos SQL Server.

En este primer artículo, explicaremos cómo configurar el servicio de DatabaseMail de SQL Server 2008 R2 Express. Probaremos dos configuraciones:

  • Una con un servicio gratuito como GMail
  • Otra con un servicio de correo provisto por un Hosting, en este caso BlueHost

En un segundo artículo, vamos a explicar como enviar los datos a partir de información disponible en nuestra base de datos, cómo darle formato al correo y cómo automatizar su envío.

Comencemos… 

 

1. Habilitar DatabaseMail en SQL Server 2008 R2 Express

En la versión Express de SQL Server no disponemos del asistente para configurar DatabaseMail, por lo cual deberemos hacer el trabajo en forma manual. Primero abrimos SQL Server Management Studio y nos conectamos:

image

Con el botón derecho del mouse sobre el nombre de nuestro servidor ir a la opción Facets. Es posible que esta opción se demore en abrir:

image

Luego vamos a la opción Surface Area Configuration / DatabaseMailEnabled.

Ponemos el valor True.

image

Luego reiniciamos SQL Server con el botón derecho del mouse sobre el servidor, haciendo clic en Restart.

image

 

2. Configurar DatabaseMail para ser usado con GMail

Dentro de la base msdb vamos a utilizar un conjunto de procedimientos almacenados para configurar el correo, en este caso usando GMail como SMTP:

sysmail_add_account_sp  
     @account_name =  'Prueba',
     @email_address =  'micuenta@gmail.com' ,
     @display_name =  'Prueba DataBaseMail' ,
     @replyto_address =  'noresponder@gmail.com' ,
     @mailserver_name =  'smtp.gmail.com',
     @mailserver_type =  'SMTP' ,
     @port =  587,
     @username =  'micuenta@gmail.com',
     @password =  '-----',
     @enable_ssl =  TRUE

sysmail_add_profile_sp @profile_name = 'Profile de prueba'

sysmail_add_profileaccount_sp
    @profile_name = 'Profile de prueba' ,
    @account_name = 'Prueba',
    @sequence_number = 1

 

3. Enviar un correo de prueba

Para enviar un correo de prueba, podemos utilizar un procedimiento como el siguiente, siempre dentro de la base de datos msdb:

EXEC sp_send_dbmail @profile_name='Profile de prueba',
@recipients='jpussacq@gmail.com',
@subject='Mensaje de prueba',
@body='Mi primer prueba de Database Mail'

Y obtendremos un mensaje como el siguiente:

Mail queued.

Si todo funcionó bien, recibiremos el correo sin problemas. Sino, podemos explorar algunas de las opciones de la siguiente sección.

 

4 Análisis de problemas

Las siguientes consultas, nos pueden ayudar a hacer un análisis de los problemas y a conocer en qué estado quedaron nuestros correos:

select * from msdb.dbo.sysmail_sentitems
select * from msdb.dbo.sysmail_unsentitems
select * from msdb.dbo.sysmail_faileditems

Esta consulta nos puede brindar más información si el estado es failed:

SELECT
items.subject,
items.last_mod_date,
l.description
FROM dbo.sysmail_faileditems as items
INNER JOIN dbo.sysmail_event_log AS l
ON items.mailitem_id = l.mailitem_id

Si reciben un error como el siguiente “The server response was: 5.7.0 Must issue a STARTTLS command first”, lo más probable es que hayamos olvidado configurar la opción de SSL en la cuenta.

 

5. Configurar DatabaseMail para ser usado con BlueHost

Es similar al caso de Gmail, pero con las opciones de Blue Host. 

USE msdb
GO
sysmail_add_account_sp  
     @account_name =  'Blue Host Mail',
     @email_address =  'cuenta@midominio.com' ,
     @display_name =  '---' ,
     @replyto_address =  'noresponder@---' ,
     @mailserver_name =  'mail.midominio.com',
     @mailserver_type =  'SMTP' ,
     @port =  26,
     @username =  'cuenta@midominio.com',
     @password =  '---',
     @enable_ssl =  FALSE
GO
sysmail_add_profile_sp @profile_name = 'Perfil Blue Host'
GO
sysmail_add_profileaccount_sp
    @profile_name = 'Perfil Blue Host' ,
    @account_name = 'Blue Host Mail',
    @sequence_number = 1
GO
EXEC sp_send_dbmail @profile_name='Perfil Blue Host',
@recipients='jpussacq@gmail.com',
@subject='Mensaje de prueba',
@body='Este es un mensaje de prueba del sistema'

 

Artículos relacionados: