martes, 11 de mayo de 2010

Reporting Services y Sharepoint

Bueno, ya que parece que los temas principales de este blog son sharepoint y las tecnologías de google, contribuiré con mi granito de arena.

Hace algún tiempo estuve buscando como obtener datos de una lista de sharepoint para usarlo como origen de datos en Reporting Services y hacer una gráfica o un repote, y después de una ardua investigación y encontrar diferentes formas de hacerlo, pongo a disposición de uds la que se me hizo más fácil.

¿Cómo empezamos?

Primero, antes que nada, y tal vez sea algo que normalemente se omite, sobre todo porque se asume que tienes experiencia haciendo este tipo de cosas, es que debes de tener instalado visual estudio en tu equipo, en mi caso utilizo la versión 2005 (.net 2.0), así como sql server con reporting services (tambien utilizo la versión 2005).

No es necesario que en el mismo equipo este instalado sharepoint, mientras este accesible desde la red es suficiente.

Una vez que ya tenemos los prerrequisitos, estamos listos para empezar.

Un poco de teoría.

Lo que debemos saber de Sharepoint:

Sharepoint al igual que muchas otras tecnología de Microsoft utiliza webservices, por lo que aprovecharemos esta característica para hacer consultas a su base de datos y de esta forma obtener los datos de las listas que deseamos consultar.

Sharepoint es un administrador de sitios, por lo que dentro del sitio principal puede haber otros sitios, y a su vez, dentro de cada uno de estos puede haber más sitios. Lo importante de esta arquitectura de sitios anidados, es que cada vez que se crea un sitio nuevo, independientemente del nivel de profundidad, es que se crean tambien un conjunto de webservices que permiten la gestión de ese sitio.

Lo que debemos saber de Reporting Services:

Reporting Services es un reporteador genérico que permite conectarse con diferentes fuentes de datos, y obviamente, un archivo xml también es considerado una fuente de datos, y si estan leyendo con atención este articulo, seguramente ya relacionaron que el resultado de realizar una consulta a un webservice es un archivo xml, pues estan en lo correcto si llegaron a esa conclusión, porque utilizaremos esta caracterísitca de Reporting Service para crear nuestro origen de datos.

Vamos a la práctica.

1. Por favor abran su VS y creen un proyecto nuevo de tipo "Proyecto de Business Inteligense", ojo. no utilicen el asistente, lo haremos todo a patita.


2. Una vez creado el proyecto, nos situamos en él y le damos con boton derecho, "Agregar", "Nuevo elemento" y escogemos "Informe" (sin asistente). Una vez creado, saldrá la siguiente ventana.

3. Si nos fijamos bien, tiene tres pestañas: Datos, Diseño y Vista previa. Vamos a empezar a configurar nuestro informe. En la parte de Datos, abrimos la lista desplegable (combobox) y creamos un "Nuevo conjunto de datos...".

Le ponemos un nombre descriptivo, en mi caso "ListaSharepoint". Escogemos de tipo XML, como lo vimos en la teoría, y colocamos la url de donde obtendremos ese xml, que tiene que ser la url del servidor de sharepoint seguido del sitio donde se encuentra la lista que vamos a utilizar como fuente de datos y por último " _vti_bin/list.asmx", lo cual indica el webservice que consultaremos y se encuentra en la carpeta _vti_bin.

Para aquellos curiosos, pueden explorar esta carpeta en su servidor de sharepoint y veran que hay más webservices a los que se pueden accesar, pero ese un tema de otro post.

Por ejemplo, si queremos utilizar una lista que se llama "Tareas" que se encuentra dentro del sitio llamado "helpdesk", la url quedaría de la siguiente forma: http://server/helpdesk/_vti_bin/lists.asmx. Esta url solo me permitirá acceder a todas las listas que se encuentren en el sitio helpdesk, más adelante les explicaré donde se configura para seleccionar la lista de "Tareas".

En la pestaña "Credenciales", dejamos selecionado "Utilizar autenticación de Windows (seguridad sntegrada)" en caso de que estemos en una red con dominio, o seleccionamos "Sin credenciales" en caso de que sea un grupo de trabajo. Las otras dos opciones no estan disponibles para conexiones a los webservices de sharepoint, si no me creen hagan la prueba.

Le damos aceptar y listo, ya tenemos un nuevo origen de datos.


4. Al crear el origen de datos, automáticamene se crea un DataSet1, el cual nos permitirá realizar la consulta a la lista de sharepoint. Y aqui viene lo más interesante y complicado que tiene este método para consultar las listas de sharepoint, así que pongan atención de aqui en adelante.

Seleccionamos el conjunto de datos DataSet1 y le damos click a los tres puntitos para que se abra la siguiente ventana.

Le ponemos el nombre que queramos, en mi caso es "Tareas", ya que va a ser la lista que voy a consultar, seleccionamos el Origen de datos que creamos "ListaSharepoint", seleccionamos el Tipo de comando "Text" y colocamos en el cuadro "Cadena de Consulta" el siguiente código xml:

Nos pasamos a la pestaña "Parametros" y ponemos los siguientes parametros: "listName", "viewName" y "rowLimit". Los valores para estos parametros son los que necesitamos para acceder a nuestra lista, pero estos valores no son valores convencionales, sino los GUIDs de la lista y de la vista que deseamos de esa lista, en el caso del rowLimit, es conveniente utilizar un numero muy grande para que se traiga la mayor cantidad de registros de la lista, ya que si no se especifica este parametro, solamente se va a traer los primeros 100 registros, en mi caso utilizo 9999. Le dan aceptar y listo, ya quedo configurado el DataSet.

En este momento se estarán preguntando : ¿Y cómo obtengo el GUID de la lista y de la vista que voy a consultar?"... pues es más facil de lo que parece, dense una vuelta por este link http://spcamlviewer.codeplex.com/releases/view/15621, y descarguen la utilería.

Esta pequeña utilería nos permite explorar un sitio completo de sharepoint (recuerden que sharepoint es multisitios, por lo que solo se puede explorar un sitio a la vez, colocamos la url, el tipo de seguridad que usaremos y listo tenemos todas las listas, sus vistas y sus GUIDs. Les dejo una pantalla de la utileria, para que se den una idea.


Nota: En caso de que salga un error al terminar de configurar el DataSet, no se preocupen, es un error de interpretación del diseñador, que no puede obtener los datos de la consulta recien creada, denle aceptar y terminará el proceso de configuración.


5. En la patalla del VS, presionamos el botón "Actualizar" para que se generen los campos de la lista y despues el botón "Ejecutar", el cual nos desplegará la pantalla de los parametros previamente configurados, le damos Aceptar y listo.

Nota: Es necesario que la lista de sharepoint tenga datos para que estos sean consultados.

6. Ahora pueden ir a la pestaña "Diseño", agreguen un control Tabla, en la primera fila escriban los titulos de las columnas, en la segunda fila arrastren del panel izquierdo "Conjunto de Datos", los campos que desean mostrar en su reporte y listo, ya pueden ver la "Vista previa" de su reporte.


No profundice en el diseño de un reporte, ya que eso no es lo importante de este post, eso lo pueden encontrar fácilmente en google.

En otro post les explicaré cómo a partir de estos datos podemos hacer algunas gráficas interesantes para después publicarlas en el sharepoint

2 comentarios:

  1. Qué bárbaro inges.. te luciste... jeje.. muchas gracias.

    ResponderEliminar
  2. Gracias a ti por invitarme a contribuir con lo poco sabe uno... Saludos...

    ResponderEliminar