I Evento presencial del Grupo de Usuarios de SharePoint de Catalunya

Hola a todos. Tras casi un año de existencia, y contando ya con casi 100 miembros, ha llegado el momento de celebrar nuestra primera reunión persencial. Para ello, hemos pensado que lo mejor sería organizar dos sesiones de aproximadamente una hora de duración y en las cuales hablaremos de dos de los temas que más nos han preguntado directamente: BCS y Modelo de objetos de cliente. Para ello, además de con un servidor, contaremos con la inestimable presencia de Edin Kapic.

De todas formas, espero que ésta sea la primera reunión de muchas, así que cualquier tema que os interese tratar, no dudéis en comentarlo en el grupo de Linkedin, o directamente a nosotros, bien sea para hablar vosotros mismos en otra reunión, o para pedir a alguien que prepare algo de vuestro interés.

El evento tendrá lugar el próximo Jueves, día 17 de Marzo, de 18:00 a 20:00 en las oficinas de Microsoft de Barcelona

https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032478890&Culture=es-ES

¡¡Os esperamos allí!!

Terminan los SharePoint Camps en Barcelona

Esta semana se han llevado a cabo los SharePoint Camps en Barcelona. Unas jornadas en las que hubo dos días de formación en SharePoint 2010, a cargo de Juan Carlos González, y dos jornadas de trabajo intensivo en unas pruebas de concepto de desarrollos sobre dicha plataforma y en las que Spenta ha estado presente puliendo algunos detalles de un nuevo producto llamado FacePoint.

camps_bcn

Sobre FacePoint os podría decir muchas cosas, pero prefiero remitiros a la web del producto donde podréis ver un video explicativo y en la que os podéis apuntar para recibir información más detallada acerca de sus funcionalidades. Si quieres más información, puedes seguirnos en estos canales:

imagesCA1D8DM1 imagesCAGZ6SA6 imagesCASQ362S

Webcast MSDN: SUGES- SharePoint 2010 no es solo intranets, monta tu sitio público

El próximo jueves día 10 de marzo de 2011, de 7 a 9 de la tarde, El amigo Mario Cortés de Renacimiento y un servidor tendrán el placer de presentar un webcast en el que hablaremos de SharePoint 2010 y de portales de publicación. En el webcast veremos las distintas problemáticas que plantea crear un sitio público, mediante las características de publicación veremos el ciclo de vida de los contenidos, las distintas formas de personalización, las capacidades de integración de identidades. Trataremos de  romper el tópico y la idea de que SharePoint 2010 no es un producto tan idóneo para la creación de sitios Internet, sino al contrario es una plataforma excelente para crear sitios de publicación adaptados a las necesidades de cualquier organización.

La agenda del evento es la siguiente:

  • SharePoint for Internet Site.
  • Arquitectura y topología de un sitio público
  • Características de publicación.
  • Personalización de masterpages, layouts y css.
  • Autenticación FBA en SharePoint 2010
  • Autenticación con sistemas externos (Facebook, OpenID, etc.)
  • Recomendaciones de seguridad
  • Monitorización de uso del portal
  • Multilenguaje, variaciones de sitio
  • Automatización, despliegue y multitenancy

Aquí os dejo la dirección de registro al evento:

https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032478934&EventCategory=4&culture=es-ES&CountryCode=ES

Control de presencia en SharePoint 2010 con Lync 2010

Si utilizáis Lync (o Office Communicator) habréis visto en ocasiones la típica bolita que aparece al lado del nombre de los usuarios y que indica el estado del usuario y que te permite interactuar con dicha persona ya sea por mensaje instantáneo, por email, por llamada telefónica o por cualquier otra via haciendo click en ella.

image

Por defecto, SharePoint mostrará esta información en cualquier sitio donde muestre el nombre de cualquier usuario pero, ¿cómo hacemos para incluir esta información en nuestros elementos web personalizados? La respuesta es simple, incluyendo este código HTML allá donde lo necesitemos.

<img border="0" height="12" style="padding-right: 3px;" id="[IDENTIFICADOR_UNICO]" 

    src="/_layouts/images/imnhdr.gif" onload="IMNRC('[SIP_DEL_USUARIO]')" ShowOfflinePawn="1" />            

Hay, de todas maneras, alguna cosa importante a tener en cuenta:

  • El parámetro id: aseguráos de que es un identificador único en toda la página (regla general a la hora de escribir HTML, por otro lado)
  • El parámetro onload: allá donde pone [SIP_DEL_USUARIO] deberéis poner, como su nombre indica, el código SIP del usuario de SharePoint. La manera de obtener este dato dependerá de si estáis atacando al modelo de objetos de cliente o de servidor, pero lo encontraréis siempre en la lista SiteUserInfoList, si buscáis el campo SipAddress.
  • El parámetro ShowOfflinePawn: si lo ponéis a 1 os aparecerá la bolita gris cuando el usuario no esté conectado. Si lo ponéis a 0 simplemente no mostrará la bolita.

A partir de aquí, lo dejo a vuestra imaginación…

SharePoint 2010 y ECMAScript

Actualización 21/03/2011: aplicados comentarios en el código de hollyshit del 16/03/2011.

Una de las novedades que incoporó la versión 2010 de SharePoint a nivel de desarrollo es el modelo de objetos de cliente. Hasta ahora, si queríamos interactuar con elementos de nuestro servidor de manera remota la única opción que teníamos era acceder a los servicios web que éste proporcionaba. Ahora, además de esta opción tenemos otras cuatro alternativas:

  • Modelo de objetos de cliente .NET
  • Modelo de objetos de cliente Silverlight
  • Modelo de objetos de cliente ECMAScript
  • Servicios REST

Cada una de estas alternativas nos proporciona unas ventajas concretas en función de lo que necesitemos desarrollar. En este artículo os quiero hablar, con un ejemplo concreto, de una de estas cuatro alternativas: ECMAScript. Antes de entrar en materia, algunas consideraciones. Lo que vais a ver a continuación es, mayormente, código javascript y, en algunas ocasiones, puede provocar reacciones contrarias a la hora de utilizarlo. Como todo, tiene sus ventajas y sus inconvenientes, pero el hecho que Microsoft haya incluído esta posibilidad en esta versión de SharePoint hace que, cuando menos, tenga que ser considerada como una de las opciones que tenemos a la hora de desarrollar. Si os planteáis utilizar este método para un desarrollo, pensad primero en las características de vuestro escenario y valorad si os conviene utilizarlo. Para mí, el uso de ECMAScript ofrece una serie de ventajas respecto al desarrollo convencional. La principal de esas ventajas es el despliegue de las funcionalidades. Lo único que necesitamos es escribir código HTML que podría incluso incluirse en un elemento web editor de contenidos. Si pensamos, sobretodo, en escenarios donde el despligue de elementos en el servidor es complejo esta posibilidad se hace especialmente interesante.

Vayamos con el ejemplo: imaginad que queremos mostrar los elementos de una lista en una página de SharePoint y, a su vez, permitir que los usuarios añadan nuevos elementos a dicha lista y que no se produzcan refrescos innecesarios de la página. Para realizar este ejemplo necesitaremos crear un sitio con una lista que llamaremos Actividades. Además, en alguna página del sitio como, por ejemplo, la página de inicio, incluiremos un elemento web consulta de contenido, editaremos su contenido y escribiremos, por ejemplo, el siguiente código HTML.

<input id="txtActividad" type="text" class="new-activity-textbox" />

<input id="btEnviar" type="button" class="new-activity-button" value="enviar" />

 

<ul class="activities">

 

</ul>

Ahora tenemos que incluir la interactividad necesaria para que, cuando el usuario pulse el botón del ejemplo, se cree un nuevo elemento en la lista Actividades con el texto introducido por el usuario. Para hacer esto se os pueden ocurrir muchas maneras y, en este caso, yo he optado por utilizar JQuery (tened en cuenta que deberéis incluir la referencia al js de JQuery en vuestra página maestra o en vuestra página de aplicación). Editamos el código anterior e incluimos esto al inicio.

<script language="ecmascript" type="text/ecmascript">   1: 

    $(document).ready(function() {

        $(function() {

            $('#btEnviar').click(function() {

                var text = $('input#txtActividad').val();

                CreateElement(text);

            });

        });

    });

 

    function CreateElement(text) {

    }

Hasta aquí sólo hemos visto HTML y JQuery, nada de SharePoint. Evidentemente nos falta una parte del código que es aquella que tiene que permitir crear un elemento en una lista. Editamos el código anterior y, cambiamos la función CreateElement por lo siguiente:

function CreateElement(text) {

    context = new SP.ClientContext.get_current();

    web = context.get_web();

    var list = web.get_lists().getByTitle("Actividades");

    var itemCreateInfo = new SP.ListItemCreationInformation(); 

    listItem = list.addItem(itemCreateInfo); 

    listItem.set_item('Title', text); 

    listItem.update(); 

 

    context.load(listItem); 

    context.load(list); 

 

    context.executeQueryAsync(CreateElementSuccess, FailureCallback); 

}

Si estáis familiarizados con el desarrollo sobre SharePoint, veréis que hay bastantes similitudes entre el modelo de objetos de cliente y el modelo de objetos de servidor. Básicamente se obtiene el contexto, de ahí se extrae la referencia al sitio, se consulta una lista y, finalmente, se añade un nuevo elemento a dicha lista. Las diferencias vienen al final, ya que usando el modelo de objetos de cliente la llamada se hace de manera asíncrona. Para nuestra fortuna, podemos indicar qué método delegado será invocado en el momento en que la llamada devuelva algún resultado. En nuestro caso, llegado el momento tendríamos que volver a consultar los elementos de la lista y modificar el código HTML de la página sin hacer ningún refresco. Eso lo conseguimos con el siguiente código:

function CreateElementSuccess(sender, args) {

    var list = web.get_lists().getByTitle('Activity');

 

    var query = '<View>'+

                    '<Query>'+

                        '<OrderBy>'+

                            '<FieldRef Name="Created" Ascending="False"/>'+

                        '</OrderBy>'+

                    '</Query>'+

                 '</View>';

             

    var camlQuery = new SP.CamlQuery();

    camlQuery.set_viewXml(query);

 

    activitiesCollection = list.getItems(camlQuery);

    context.load(activitiesCollection , 'Include(Title)');

    context.executeQueryAsync(GetActivitiesSuccess, QueryFailure);

}

 

function GetActivitiesSuccess(sender, args) {

    var listItemEnumerator = activitiesCollection.getEnumerator();

 

    $('ul.activities').children().remove();

 

    while (listItemEnumerator.moveNext()) {

        var oListItem = listItemEnumerator.get_current();

        $('ul.activities').append("<li>" + oListItem.get_item('Title') + "</li>");

    }

}

 

function FailureCallback(sender, args) {

    alert('request failed ' + args.get_message() + 'n' + args.get_stackTrace());  

}

En resumen, esto ha sido sólo un ejemplo de qué tipo de cosas podemos hacer con ECMAScript. Si tenéis interés en que amplie algún punto concreto no dudéis en añadir un comentario a este artículo.

SharePoint 2010 de principio a fin

Este fin de semana he tenido, por fin, el placer de disfrutar de un libro que tenía en mi lista de lecturas desde hacía ya algún tiempo. Se trata del libro de Gustavo Vélez, Juan Carlos González y Mario Cortés: SharePoint 2010 de principio a fin. Mis espectativas con respecto a este libro eran más bien altas, debido a la calidad de sus autores, y os tengo que decir que no me ha defraudado en absoluto.

En mi trabajo en ocasiones tengo que dar cursos de SharePoint o resolver dudas puntuales y sé lo difícil que es dar información clara y concisa sobre esta tecnología sin quedarte demasiado en la superficie. En este libro, los autores son capaces de hacer un análisis exhaustivo de la mayoría de aspectos de la plataforma, con un lenguaje apto para todos los públicos, pero a la vez ofreciendo información de interés con suficiente nivel de detalle como para dejar satisfechos a los más exigentes.

Los primeros capítulos del libro hablan sobre instalación y administración del sistema, así como sobre la jerarquía de elementos que necesitamos conocer para entender SharePoint. Los siguientes capítulos entran en detalle en el mundo del desarrollo, y de todas las opciones que nos ofrece la plataforma. Finalmente, los últimos capítulos analizan conceptos avanzados como inteligencia de negocios o aplicaciones compuestas.

Si queréis iniciaros con SharePoint, o si queréis ampliar la información sobre cualquiera de sus partes, os recomiendo la lectura de este libro. Si trabajáis habitualmente con esta tecnología, en vuestra biblioteca no puede faltar un libro escrito por los que para mí, son algunos de sus mayores referentes en nuestra lengua.

Podéis ver este libro y muchos otros aquí.

Microsoft Partner Network (MPN)

Como muchos de vosotros ya sabréis, el día 29 de Octubre se lanzo Microsoft Partner Network (MPN). Después de más de un año en transición, los nuevos niveles y los nuevos requisitos por competencias se exigirán a partir de esa fecha para los partners nuevos y para aquellos que tengan que renovar a partir de la fecha de lanzamiento del nuevo Partner Network (hasta la fecha de renovación se mantendrá el nivel y beneficios que se ostentará en el MSPP). MPN sustituye al antiguo Micrososft Partner Program (MSPP) que se lanzó hace 8 años.

Este cambio potencia la especialización y la diferenciación, y responde a la demanda, tanto de clientes, como de partners. El programa tiene los siguientes niveles: Gold, Silver, Subscription y Community, y 30 competencias (Virtualización, Business inteligence, Application Platform, ISVs…).

Hay cambios en cuanto a los requisitos de las competencias tanto para el nivel Silver (antiguo Certified) como para el nivel Gold. Desde el punto de vista de los ISVs supone la incorporación de nuevas certificaciones de productos válidas para los dos niveles.

Para conseguir la competencia ISVs en el nivel Silver se solicitará una aplicación certificada con uno de los siguientes test:

  • Windows 7 Platform Ready
  • Windows Server 2008 R2 Platform Ready
  • Windows Azure Platform Ready
  • SQL Azure Platform Ready
  • Microsoft Surface Test

Los test que hasta ahora tuvierais hechos serán validos para la competencia hasta Mayo de 2011, pero es momento de ir alineándose con los nuevos requisitos. Ya puedes realizar los nuevos Test a través de Microsoft Platform Ready de forma rápida, sencilla y sin ningún coste para el partner.

http://www.microsoftplatformready.com/spain/home.aspx

A parte de ISVs, hay otras competencias que permitirán la certificación de una aplicación para obtenerla en su nivel Silver.

  • Application Integration  =  Windows Server 2008 R2 Platform Ready
  • Data Platform  =  SQL Server 2008 R2 Platform Ready
  • Business Intelligent  =  SQL Server 2008 R2 Platform Ready
  • Content Management   =  Sharepoint Server 2010 Platform Ready (proximamente disponible)
  • Unified Communication  =  Unified Communicatios Platform Ready ( aun no disponible)

Para aquellos que queráis optar a la competencia Gold de ISVs los test que se solicitaran son:

  • Certified for Windows Server 2008 R2 o
  • Windows 7 Logo Test

En fin, si queréis más información, no dudéis en acceder a la url indicada anteriormente pero, si sois partners de Microsoft y todavía no os habéis puesto al día en cuanto a competencias se refiere, es una buena oportunidad para hacerlo.

StreetScene liberado en Codeplex

Hace ya unos meses os avanzaba la aparición de StreetCare, un sistema ideado, entre otras cosas, para permitir a los ayuntamientos ofrecer a sus ciudadanos los mecanismos necesarios para identificar problemas en sus calles. En su momento os expliqué algunas de sus características y las tecnologías que se utilizaron para llevar el proyecto a cabo, dejando los detalles para más adelante.

Ahora ha llegado el momento de comenzar a dar detalles técnicos de la implementación de StreetCare y, para ello, qué mejor que empezar ofreciendo el código fuente y la documentación de gran parte de la solución. Para ello, basta con que vayáis aquí y lo descarguéis vosotros mismos.

StreetScene es una versión reducida de StretCare que mantiene la misma esencia y tiene que servir para ayudar a todo aquél que quiera desarrollar algun proyecto basado en alguna de las tecnologías que aquí se utilizan, a hacerlo de una manera más simple y ágil.

Los elementos que podéis encontrar en StreetScene son:

  • Aplicación web con arquitectura ASP.NET MVC2 para la administración de los datos
  • Aplicación Silverlight 4 con arquitectura MVVM para la interfaz de usuario de los ciudadanos
  • Web Role de Azure para alojar la aplicación web.
  • SQL Azure para alojar los datos
  • Azure AppFabric Access Control V2 para proveer de mecanismos de autenticación

En breve comenzaré a publicar artículos con información de cada uno de los puntos anteriores pero, aquellos que estéis interesados en detalles sobre alguno de ellos, no dudéis en acudir al sitio web de Codeplex y descargar el código y la documentación.

Mesa redonda en Madrid sobre desarrollo en SharePoint

El pasado Miércoles, 2 de Febrero, y tal y como os avancé en este artículo, participé junto con otros MVPs de SharePoint en una mesa redonda organizada por nuestros amigos del MADNUG. En la figura, y de izquierda a derecha, podéis verme a mí, a Juan Carlos González, a Alberto Díaz y al maestro Gustavo Vélez.

madnug

Más allá de encontrarme con estos fantásticos compañeros y con otros miembros destacados de la comunidad técnica, que era para mí uno de los objetivos principales del evento, el debate fue de lo más interesante y se habló de aquellos aspectos que, en general, más preocupan a las personas que trabajamos con SharePoint de una o de otra manera.

Destacaron temas generales como el testeo, el despliegue de soluciones, la personalización gráfica o la conexión a sistemas externos y otros más particulares como la transaccionalidad de la plataforma. También hubo alguna consulta sobre arquitectura y sobre posibles patrones recomendables para utilizar cuando se desarrolla sobre SharePoint.

Si queréis ver la grabación del evento, la encontraréis aquí.