Microsoft Office SharePoint Catalogue > Open XML Blog

 ‭(oculto)‬ Filtro: NombreCategoria

 Entradas de blog

¿Sharepoint?

La cuestión Sharepoint

¿Qué es Sharepoint?

No es que me quiera poner filosófico sino que me doy cuenta de que – por algún motivo – he visto en todo el mundo, desde gurúes hasta principiantes, agujeros de conocimiento (Si esto me excluyera no tendría sentido esta nota).

Creo que es necesario un enfoque ARRIBA-ABAJO de la cuestión.

Del concepto a la infraestructura y desde allí a la operación.

Visión conceptual

Lo más interesante que he oído como para contestar esto de ¿qué es Sharepoint? lo leí de Microsoft – lo cual es un buen punto dado que son sus creadores – y es "un sistema operativo para la web".

¿Suena pomposo no?

No sé, en http://download.microsoft.com/download/8/5/8/858F2155-D48D-4C68-9205-29460FD7698F/SharePointProtocols.zip pueden descargar información sobre los protocolos soportados por Sharepoint.

De allí traduzco este párrafo: “Conceptualmente, un ítem de documento es similar a un archivo en un sistema de archivos. El ítem de documento DEBE incluir información tal como nombre de archivo, tamaño, y cómo o dónde conseguir el archivo sí mismo. El adjunto del ítem de documento es el archivo.”

Hay en Sharepoint una operatividad de File System sobre HTTP de una enorme utilidad porque provee un servicio centralizado, asegurable y habilitado para tablas de Metadata.

Las aplicaciones de Microsoft Office permiten “guardar a” y “abrir de” Sharepoint.

Una empresa puede resolver muchos problemas serios utilizando en la medida de lo adecuado (la información agregada al archivo no es gratuita en términos de almacenamiento en SQL Server) a Sharepoint como sistema de archivos.

¡E integrarlos a un sistema de búsqueda y etiquetamiento!

No sólo de documentos se vive.

También hay información que guardamos en tablas relacionales en bases de datos corporativas.

¿Es realmente esperable que Sharepoint provea acceso natural y seguro de modificación y/o lectura a toda otra información corporativa en la granja?

¿Lo es también que permita administración interna de datos propios con integridad referencial?

Tal vez sea mucho pedir pero Sharepoint – en su calidad de Software Gigante – lo provee. Provee un sistema de listas que permite ver y acceder del mismo modo a datos propios o ajenos.

Es posible integrar documentos en Sharepoint con información de Microsoft Project, Lex Doctor y SAP, por ejemplo.

Y verlo desde Outlook si quieren. O Excel, o…

Gateway de archivos, Gateway de información corporativa…

¿Demasiado?

No, Sharepoint incluye desde la versión anterior lo que antes era Content Management System, una gran infraestructura de creación, almacenamiento y divulgación de contenidos.

ECM no es una cuestión menor en Sharepoint, hay un brillante MVP como Andrew Connell especializado en administración de contenidos corporativos bajo Sharepoint y sé que en este momento el uruguayo Fabián Imaz le pone cargadas pilas al asunto.

No todo es leer y escribir información, la vida no es una caja de supermercado, ya lo sé.

Yo sé que el estilo de esta nota está basado en el asombro y la sorpresa va creando hábito, pero ¿esperan que Sharepoint provea una enorme plataforma de análisis e inteligencia de datos que se integra con los servicios de análisis de datos de SQL Server y provee Performance Point (una herramienta generadora de interfaces de BI)?

Eso es así.

Todavía no comenté que Sharepoint es – de hecho – un servidor Office en el cual Outlook, Word, Excel, InfoPath, Project y Visio son más que invitados clientes naturales con integración infraestructural.

A nivel de procesos Sharepoint integra en su contexto la máquina de flujo de .Net – Windows Workflow Foundation – con 2 características claves:

1. Permite el diseño de flujos declarativos sin programación mediante Sharepoint Designer

2. Provee actividades específicas de flujo (como administración de tareas, acceso a listas y muchos etc.)

Los que vivimos de Sharepoint sabemos que esta enumeración podría seguir y seguir…y siempre faltaría algo.

Este "sistema operativo para la web" es una fenomenal plataforma integradora que puede ser vista como una columna vertebral corporativa a la que se accede – desde la última versión – ¡desde prácticamente cualquier browser!

Ayer leía una oferta de trabajo para un administrador Sharepoint ¡con 60% de background de desarrollo!

Y eso me lleva a otro punto: Sharepoint es una herramienta que requiere siempre en los roles de mayor responsabilidad un triple perfil:

1. Administración

2. Desarrollo

3. Usuario avanzado

En una mañana uno puede necesitar un listado de características existentes y activadas en la granja, colaborar en la modificación de un XSLT que controla la edición de una lista , atender una cuestión de búsqueda y estar preparado para que un usuario avanzado le explique cómo resolvió con métodos “de la caja” en 5’ lo que uno hubiera tardado varias horas, amén de resolver la cuestión de deployment de los complementos Office necesarios para resolver el asunto etiquetable como “Office 2010 y MOSS: problema en la vista de grilla”.

Así que administradores y desarrolladores: ¡hora de cooperar a full!

¿Por qué puede un usuario de Sharepoint ser tan poderoso?

Porque Sharepoint está pensado para necesitar menos programación, digamos que personalizar consiste en 70% diseño (entre navegador y Sharepoint Designer) y 30% programación (Visual Studio, scripting y XSL).

El usuario de Sharepoint es esencialmente poderoso, a la manera de Excel, porque tiene muchas herramientas para conseguirlo.

Y los usuarios ingresan desde cualquier contexto porque simplemente extendiendo una aplicación la colección de sitios puede ser accedida desde Internet o desde la red corporativa con modelos de seguridad diferentes (Windows, .Net Membership o Claims Based Authentication) según el puerto de acceso.

¿Qué tan abierto es el acceso a Sharepoint?

Tal vez el acceso vía Servicios Web sea más que suficiente pero sepan que programando el modelo de objetos acceden a todo y que la moderna máquina de scripting de Windows (Powershell) está basada en .Net y permite a administradores consumir rutinas programadas en .Net.

Así el acceso a la información es franco siempre que – por supuesto – se tenga permiso.

Entonces: trato de cerrar el concepto alrededor de mi “integrador empresarial” o del "Sistema operativo para la web" de Microsoft cuando les agrego que Sharepoint agrega módulos para administración de contactos, tareas, calendarios, plantillas descargables de sitios totalmente operativos, etc.

Es un monstruo diverso no a la manera de un caleidoscopio sino de una estructuración inteligente con variadas posibilidades.

Arquitectura

Digamos – sólo para empezar – que Sharepoint es un aplicativo ASP .Net que redirige a sí mismo todas las páginas de un Sitio Web de Internet Information Server mediante instrucciones del web.config basadas en Httphandlers.

Con cierto cinismo y picardía podría decir que Sharepoint es una capa .Net sobre Asp .Net.

¿Cuál es la medida de esa capa?

¿Se parece a un pétalo de flor o a una torre de 100 pisos?

Les doy la siguiente pista: no es un pétalo e integra elementos ActiveX (algunos imprescindibles para interactuar con Office y otros provenientes de las primeras versiones).

Algo así como esto:

clip_image001

La información de Sharepoint se reparte entre el directorio de instalación (famoso hive), Internet Information Server y SQL Server.

Las páginas y – en especial – la personalización y programabilidad están basadas en el modelo de Asp .Net Web Parts.

Soporta un modelo de branding muy especializado.

clip_image003

En la infraestructura de lo que se llama una Sharepoint Web Application conviven el Web Site contenedor de la colección de sitios, el modelo de seguridad y la base de datos de SQL Server en la cual casi todo se almacena.

Provee una administración de módulos que implementa deployment y activación mediante la infraestructura de Features (Características)

clip_image005

Algunos vínculos para profundizar:

http://www.sharepoint-services.info/ingenieria/arquitectura-sharepoint-services/

http://www.kyberne.cl/Documentos%20y%20Programas/Arquitectura%20SharePoint.aspx

http://msdn.microsoft.com/en-us/library/bb892188(v=office.12).aspx

En lo personal creo que Sharepoint es 2 cosas a la vez: el "SISTEMA OPERATIVO PARA LA WEB" y un conjunto de implementaciones y servicios generados por Microsoft para explicar, soportar y promover la plataforma.

clip_image007

WebOS clip_image009

Lo cual demuestra a las claras que Microsoft pone muchos huevos en la canasta Sharepoint, la cual es también un miembro clave de Azure y “la nube”.

Operación

Llegado a este punto tengo una mini crisis.

Creo que debo responder a la pregunta de ¿para qué sirve Sharepoint?

Es como si me preguntaran para qué sirve la electricidad o qué se puede cocinar en el horno.

Tantas cosas…

Y mientras escribo esto más me doy cuenta de que Sharepoint no es una aplicación sino una infraestructura.

Es la cuestión de WebOS o de la columna vertebral empresarial.

Una vez que tengo instalada en la empresa una aplicación a la que accedo desde cualquier máquina sólo con el browser, que me permite insertar en su seno otras aplicaciones mediante vínculos o integradas perfectamente a la estética corporativa, obtener o modificar datos internos o externos, insertar el HTML que desee, integrar lo que se me ocurra aún dentro de una página mediante Web Parts, utilizar plantillas de Help Desk, Proyectos, Contactos (y siguen y siguen…), analizar datos intensa y extensamente, etc. mi pregunta es la inversa: ¿para qué no sirve Sharepoint?

Y aún para lo que Sharepoint no es la mejor herramienta – como aplicaciones puramente transaccionales por ejemplo – puedo utilizar Sharepoint como portal que me lleve a ellas e integrarlas estéticamente y…

Es mi opinión que Sharepoint agrega beneficio en cualquier empresa, en grave extremo si utiliza Microsoft Office o necesita generar aplicaciones rápidamente o considera que una plataforma de colaboración o integración agrega performance a su empresa.

Sharepoint es el portal más extensible, más poderoso y mejor soportado que existe.

2° Encuentro de la Comunidad SharePoint de Argentina (CSA)

Hola Gente!

Les quiero contar que el día jueves 13 de Mayo de 2010 se realizará el segundo encuentro de la Comunidad SharePoint de Argentina.

El mismo tendrá lugar en las oficinas de Microsoft Argentina (Bouchard 710 4°) en el horario de 18:30 a 21:30 horas.

El evento es gratuito. Sólo tienen que registrarse.

Logo

Agenda

  • Solución con BDC: Caso práctico (Silvina Pizzarulli)
  • Nuevas características de Web Parts en SharePoint 2010 (Patricio Belardo)
  • SharePoint 2010: Administración General y Aplicaciones de Servicios (Ariel García Sobrino)

Por favor, confirmar asistencia hasta el martes 11 de Mayo inclusive utilizando el espacio de la Comunidad en Facebook o dejando un mensaje en el espacio de la Comunidad en LinkedIn. No olviden incluir su nombre y su número de DNI.

Cualquier duda estoy a su disposición.

Saludos!

Microsoft Virtual Academy

Tengo el agrado enorme de decirles que con el fabuloso Imaz (Fabián, amigazo de aquí, de Mossca) estamos a cargo de la Carrera de Sharepoint Server en MVA y que  el módulo básico ya se encuentra disponible.

Pueden ingresar a http://www.mslatam.com/latam/technet/mva2/Studies/EducationDetails.aspx?id=722 y comenzar su aprendizaje.

Contamos con la colaboración y revisión de Guillermo Delprato y Ariel García Sobrino, ni más ni menos.

Aprendan, manden feedback, critiquen, etc.

Todo junto: obtener datos, incorporarlos a una planilla y subir la planilla a Sharepoint

En este envío pretendo combinar los 4 anteriores: obtener datos de Sharepoint, generar un documento Excel y – finalmente – clip_image002subirlo a Sharepoint en una biblioteca de documentos.

Código fuente 

Código

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace TestCompendio
{
    class Program
    {
            var pFolder=@"M:\Training\Screencasts\Office y Sharepoint\Code";
            var autoXSLX = "AutoBook.xlsx";
            var emptyXSLX = "EmptyBook.xlsx";
            var docLibrary = @"http://moss:20001/doclibrary/";
             XmlNode Contactos=null;

        static void Main(string[] args)
        {
            //Obtener Listado de Contactos de Sharepoint
            ObtenerContactos();
            //Generar una hoja de cálculo basada en una plantilla y cargarle los Contactos
            InsertarContactosEnHojaDeCalculo();
            //Subir el documento a una biblioteca de documentos
            DescargarDocumentoEnSharepoint();
        }

        private static void DescargarDocumentoEnSharepoint()
        {
            WSClient.Uploader.CopyDocumentToLibrary(System.IO.Path.Combine(pFolder, autoXSLX), "Documento Excel", autoXSLX, docLibrary);
        }

        private static void InsertarContactosEnHojaDeCalculo()
        {
            CreateSpreadsheet(Contactos, System.IO.Path.Combine(pFolder, emptyXSLX), System.IO.Path.Combine(pFolder, autoXSLX));
        }

        private static void ObtenerContactos()
        {
            Contactos = WSClientVB.Reader.GetRecords("http://moss:20001", "Contacts");
        }
        static void CreateSpreadsheet(System.Xml.XmlNode Contactos, string emptyPath, string autoPath)
        {
            var Datos = Contactos.ChildNodes;
            var docBuilder = new SDK2.Excel();

            docBuilder.TransformDocument(emptyPath, autoPath, Datos.Item(1));

        }
    }
}

Esquema de trabajo e invocación de componentes

clip_image004

Código fuente

Subir un documento a Sharepoint mediante Web Services

Código fuente

Objetivos de esta nota:

  1. Ejemplificar una práctica interesante de uso de Web Services
  2. Proveernos de un modo de acceder a una Biblioteca de Documentos sin necesitar acceso al servidor
  3. Cerrar el último componente necesario como para integrar mis últimos envíos al blog en un paquete de generación automática de documentos en Sharepoint

Lo vamos a hacer mediante los siguientes pasos:

  • Generar la Web Reference en nuestro proyecto Visual Studio
  • Utilizar el método de copia remota
    • Apuntar a una Biblioteca de Documentos determinada
    • Agregar alguna Metadata del documento

Generar la Web Reference en nuestro proyecto Visual Studio

Agregar una Web Reference

 

Utilizar el método de copia remota

Referir a http://SuServidorSharepoint/_vti_bin/Copy.asmx

 

Hecho esto vamos a poder utilizar CopyService para "copiar" el contenido de un archivo a una biblioteca Sharepoint.

Vamos a generar una clase que denominaremos Uploader y en ella un método CopyDocumentToLibrary que haga el trabajo necesario una vez que sepa qué documento procesar y dónde guardarlo dentro de Sharepoint.

Sencillo J

Y por comodidad entonces encabezaremos nuestra clase así:

using System;

using System.IO;

using WSClient.CopyService;

 

Apuntar a una Biblioteca de Documentos determinada

var copyObject = new Copy { Url = "http://moss:20001/_vti_bin/copy.asmx", UseDefaultCredentials = true };

byte[] myBinary = File.ReadAllBytes(fullFilePath);

string sourceUrl = @"http://moss:20001/doclibrary/" + itemName;

string[] destinationUrls = { sourceUrl };

Agregar alguna Metadata del documento

var metaDataTitle = new FieldInformation { DisplayName = "Item", InternalName = "Item", Type = FieldType.Text, Value = itemText };

var metaDataModifier = new FieldInformation { DisplayName = "Modified By", InternalName = "Editor", Type = FieldType.User, Value = "-1;#servername\\Mauricio" };

FieldInformation[] info = { metaDataTitle, metaDataModifier };

Y finalmente con toda la información preparada almacenamos en el servidor:

CopyResult[] result = { resultTest };

copyObject.CopyIntoItems(sourceUrl, destinationUrls, info, myBinary, out result);

Y eso es todo: en la librería doclibrary tendremos un nuevo documento.

Código fuente

 Data Plattform Developement MVP

 mau@mvps.org

 Algunas cosas importantes

 

 “Hay más cosas en el cielo y en la tierra de las que sueña tu filosofía.”

William Shakespeare

 ‭(oculto)‬ Administración