Recursos: Conjuntos de servicios públicos con los que jugar!

Si tenéis necesidad de trabajar con servicios de tipo Open Data y no tenéis a mano uno propio, no os preocupéis porque hay un repositorio de servicios públicos listos para ser usados en nuestras aplicaciones que podéis acceder desde la sección Producers del sitio de Open Data: http://www.odata.org/producers. Por ejemplo, para la BD Northwind la url del servicio que tenemos disponible es http://services.odata.org/Northwind/Northwind.svc/.

image

SharePoint Online: Como añadir una redirección en una página de mi sitio público!

Cuando parece que el “estándar” no da para más, en SharePoint Online dentro de Office 365 tienes que recurrir a truquillos para conseguir disponer de ciertas funcionalidades extra demandadas por tus usuarios…una de las últimas que salió en los foros de Office 365 era relativa a como conseguir hacer una redirección desde páginas del sitio publico de SharePoint Online a un sitio privado. Lógicamente, en seguida me vino a la mente que esto con JavaScript seguro que se podía conseguir…la cuestión es como añadir ese JavaScript que haga la redirección:

  • Lo primero que intenté utilizar es la interfaz de usuario del sitio público e intente añadir el código JavaScript necesario mediante alguno de los gadget disponibles, y en concreto el de HTML…pero no hubo forma.
  • Esto me llevó sin remedio a ver si con SharePoint Designer 2010 (SPD 2010) se podía conseguir…y aquí si tuve más suerte. Nos vamos a la sección “All Files” y buscamos la biblioteca “Pages”.
  • Hacemos clic sobre la página en la que queremos introducir la redirección.
  • A continuación aparece la correspondiente página de resumen que nos permite editar la página.
image image image
  • Al pulsar el enlace de editar la página, nos aparece un mensaje de warning indicando que para poder personalizar la página es necesario editarla en modo avanzado.
  • Una vez que hemos editado la página, añadimos el código JavaScript necesario para hacer la redirección.
image image
  • El código JavaScript a añadir es el siguiente (lo colocaremos bajo <asp:Content…>
   1: <asp:Content ID="content1" runat="server" ContentPlaceHolderID="IWS_WH_CPH_Content" xmlns:asp="asp">

   2: <script type="text/javascript" language="javascript">

   3:     window.location = 'http://www.ciin.es';

   4: </script>

Tras guardar, simplemente comprobamos que al acceder a la página se hace la redirección como esperábamos.

SharePoint 2010: ¿Cómo saber la versión instalada?

Cuando se habla de la versión instalada de SharePoint 2010, tenemos que diferenciar entre la versión de producto que tenemos instalada (Foundation, Server Standard o Server Enterprise) y la versión de producto relativa a las build numbers o actualizaciones sucesivas que Microsoft va sacando y que vamos aplicando a nuestros despliegues de forma paulatina, y especialmente en el caso de los service packs (SPs). Por lo tanto:

  • Si queremos saber que versión de producto tenemos instalada, os recomiendo esta referencia (http://www.jcubica.com.mx/?p=27) en la que se indica como a partir de la información de registro o utilizando PowerShell podemos sacar la versión de producto instalada. Por supuesto, la administración central de SharePoint 2010 nos dará también información al respecto.

image

image

SharePoint 2010: Integración con SSRS, con PPS, Servicios de Visio, …¿cuándo uso cada cuál?

Como sabéis, uno de los pilares de la plataforma SharePoint es el denominado “Insights o perspectivas” y que tiene que ver con como poder integrar, analizar y publicar información de negocio de una organización en la forma de KPIs (Key Performance Indicators), Informes, cuadros de mando, gráficos de distintos tipos, etc. Por lo tanto, estamos hablando de Business Intelligence (BI) siendo las capacidades disponibles en SharePoint 2010 las siguientes:

image

Capacidades de BI disponibles en SharePoint Foundation y SharePoint Server 2010

Si nos centramos en el núcleo de la plataforma y en el producto grande, presentan en común las siguientes capacidades de BI:

  • Integración con SQL Server Reporting Services (SSRS, os recomiendo visitar el último artículo de la serie a este respecto), que permite diseñar mediante Report Builder o el BI Management Studio informes de distintos tipos: tabular, matricial, gráfico, tipo mapa. Con SSRS 2008 R2 se incorpora además la posibilidad de definir KPIs, usar líneas de tendencias y barras de datos, además de los informes de tipo mapa comentado.
  • Simulación de KPIs mediante la XsltListViewWebPart o la Data Form WebPart como se comentó en este post: http://geeks.ms/blogs/ciin/archive/2011/01/12/sharepoint-2010-creaci-243-n-de-kpis-i.aspx 
  • Aprovechar que los .NET Chart Controls están integrados de serie para construir nuestras propias soluciones de gráficos.
  • Por supuesto, la integración nativa de Silverlight da mucho juego y podemos conseguir resultados bastante espectaculares con el Silverlight Toolkit tal y como podéis ver en los ejemplos disponibles en este enlace:
image image image
  • Por supuesto, cualquier otro elemento de BI que desarrollemos…no nos olvidemos que SharePoint es plenamente extensible.

Capacidades de BI disponibles en SharePoint Server únicamente

Si nos centramos en SharePoint Server 2010, añade a las capacidades de BI anteriores las siguientes:

  • Diseñar e implementar KPIs a partir de información almacenada en listas de SharePoint, hojas Excel, Bases de Datos (BDs),…
  • Crear gráficos interactivos y dinámicos utilizando la Chart WebPart que es precisamente se aprovecha de la integración nativa de los .NET Chart Controls comentada anteriormente.
  • La integración de PerformancePoint como una aplicación de servicio más en SharePoint 2010 facilitando la creación de elementos como KPIs, cuadros de mando, informes analíticos, … utilizando para ello el Dashboard Designer. Algunas de las capacidades de PerformancePoint las podéis ver aquí: http://geeks.ms/blogs/ciin/archive/2010/07/29/sharepoint-2010-creaci-243-n-de-informes-de-performancepoint-ii.aspx
image image image
image image image

¿Y cuándo uso cada cuál?

Esa es una buena pregunta, sobre todo si disponemos de SharePoint Server y aparentemente parece que con SSRS, PPS o los Servicios de Excel puedo hacer lo mismo…aparentemente porque hay diferencias entre ellos que debemos tener en cuenta a la hora de decantarnos por una u otra opción:

  • SSRS:
    • A la hora de diseñar informes de tipo matricial y tabular de forma rápida es una opción muy adecuada.
    • Cuenta con la capacidad de modelar suscripciones, es decir, generar un cierto informe en un cierto formato de acuerdo a una planificación y una forma de entrega (en una biblioteca de documentos, por correo electrónico).
  • PPS:
    • El modelado de KPIs y cuadros de mando con el diseñador de paneles es muy productivo y espectacular.
    • La facilidad con la que definir informes analíticos es sin duda su capacidad muy potente, además del Decomposition Tree para analizar la información mostrada en los mismos.
  • Servicios de Excel:
    • Cuenta con la gran ventaja de que permite publicar la información de libros Excel de forma segura.
    • Excel es una herramienta de BI muy usada en la actualidad.

Una pequeña tabla que nos puede ayudar a elegir es la siguiente:

image

Y hasta aquí este largo post sobre capacidades de BI en SharePoint 2010 y alguna pauta para elegir que capacidad utilizar en cada caso.

Evento: ALM y SharePoint ¿Es posible?

Pues eso, desde SUGES mañana 29 de noviembre sobre las 19:30 horas de la mano de David Martos tendremos la oportunidad de poder contestar a tan peregrina cuestión. Los detalles del WebCast son los siguientes:

ALM y SharePoint ¿Es posible?

Los grupos de usuarios de SharePoint de España (SUGES) y de Catalunya (SUG.CAT) organizan un nuevo WebCast en el que tendremos la oportunidad de hablar sobre un terreno un tanto “tabú” en el desarrollo de soluciones para SharePoint 2010: ¿Es posible gestionar el cíclico de vida o ALM en proyectos en los que el componente clave sea SharePoint. En esta sesión os enseñaremos como podéis gestionar el ciclo de vida de las aplicaciones (ALM) en proyectos que involucren SharePoint 2010 para conseguir así aumentar su calidad y su mantenibilidad. Veremos algunos de los problemas más habituales en el desarrollo de este tipo de proyectos así como algunas soluciones que podéis aplicar para minimizar su impacto.

Datos de Interés

ALM y SharePoint 2010

SharePoint 2010: Creación de HTTP Handlers!

Como sabéis, SharePoint está construido sobre la base de ASP.NET 3.5 SP1 lo que implica que mucho de los conceptos y elementos propios de este último son aplicables en la plataforma. Precisamente, esto es lo que sucede con los denominados HTTP Handlers que como sabéis son componentes que nos permiten proporcionar a nuestras soluciones ASP.NET y SharePoint de un mecanismo eficiente y flexible para procesar peticiones en las que no tenemos implicadas páginas HTML estándar como por ejemplo devolver texto plano, XML, datos binarios o datos de usuario. En el mundo SharePoint, los HTTP Handlers son una técnica muy habitual cuando queremos redirigir al usuario a una cierta página en situaciones en las que tenemos por ejemplo páginas de login personalizadas o simplemente porque queremos evitar que usuarios no autorizados accedan a nuestros sitios. La base de creación de un HTTP Handler es la interfaz IHttpHandler de la que deben heredar nuestras implementaciones. Finalmente os dejo una serie de enlaces relativos a HTTP Handlers:

SharePoint2010_thumb

SharePoint 2010: Cuidado con los IDs de campos y al referenciarlos en tipos de contenido!

No soy un gran fan de utilizar la aproximación declarativa a la hora de definir “artefactos” típicos de SharePoint como pueden ser columnas o tipos de contenido de SharePoint 2010, pero como se suele decir hay que saber de todo y a veces esta aproximación puede resultar ventajosa frente a trabajar exclusivamente en el mundo de los objetos. El caso es que la aproximación declarativa implica que tienes que tener cierto cuidado cuando defines los atributos que conforman un cierto artefacto, y de ahí el título de este post, ya que por ejemplo no es lo mismo especificar el ID de una columna de sitio de SharePoint 2010 de la forma ID=“ 59491385-A088-4CEA-AEC9-B6BE51276C0F” que hacerlo como ID=“{59491385-A088-4CEA-AEC9-B6BE51276C0F}”…la sutil diferencia viene dada por las llaves de inicio y cierre del ID ya que si no las indicamos provocamos que a la hora de usar esas columnas en la definición de un tipo de contenido éste no se dé por enterado y no las incorpore, amén de problemas en re-despliegue de los artefactos y otras situaciones curios…moraleja: define y referencia los atributos como los espera SharePoint:

  • Definición de una columna de sitio:
   1: <?xml version="1.0" encoding="utf-8"?>

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   3:     <Field ID="{59491385-A088-4CEA-AEC9-B6BE51276C0F}"

   4:            Name="SubmittedBy"

   5:            DisplayName="$Resources:SubmittedBy"

   6:            Type="User" List="UserInfo" ShowField="NameWithPicture"

   7:            UserSelectionScope="0" UserSelectionMode="0"

   8:            Required="TRUE" Group="Custom Columns"></Field>

   9: </Elements>

  • Referencia a la columna de sitio en la definición de un tipo de contenido:
   1: <?xml version="1.0" encoding="utf-8"?>

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   3:   <!-- Parent ContentType: Item (0x01) -->

   4:   <ContentType ID="0x0100c660015c779343cd8a24648d752b6778"

   5:                Name="$Resources:WeeklyStatusReportCT"

   6:                Group="Custom Content Types"

   7:                Description="$Resources:WeeklyStatusReportCTDesc"

   8:                Inherits="TRUE"

   9:                Version="0">

  10:     <FieldRefs>

  11:         <FieldRef ID="{FA564E0F-0C70-4AB9-B863-0177E6DDD247}" Name="Title" Required="TRUE" ShowInNewForm="TRUE" ShowInEditForm="TRUE"/>

  12:         <FieldRef ID="{59491385-A088-4CEA-AEC9-B6BE51276C0F}" Name="SubmittedBy" Required="TRUE" ShowInNewForm="TRUE" ShowInEditForm="TRUE"/>

  13:     </FieldRefs>

  14:   </ContentType>

  15: </Elements>