miércoles, 06 de junio de 2007 20:37
por
jorgedieguez
Acceso a los datos en SharePoint vía WebServices
SharePoint es una excelente herramienta para la gestión de la información(o el conocimiento) corporativo.
La gestión se realiza por medio de un interface web muy funcional. Además SharePoint ofrecela integración con algunas aplicaciones del escritorio (MS Outllok, MS Access, MS Excel) lo que aumenta las posibilidades de gestión de la información.
Si embargo es habitual que se necesite integrar datos del SharePoint con otras aplicaciones informáticas. Incluso en muchos casos hay que integrar aplicaciones que están distribuidas en distintas redes, entornos y plataformas de software(por ejemplo acceder al servidor SharePoint desde una aplicación Windows).
Microsoft ofrece múltiples vías para integrar SharePoint con otros sitemas empresariales, una de las vías es acceso a los datos y funcionalidades del producto vía WebServices.
Los WebServices que expone SharePoint permiten realizar prácticamente todas las operaciones que se pueden realizar con el interface Web o programáticamente por API.
Se puede revisar toda la información en el SDK del producto disponible aquí.
En este post vamos a ver un ejemplo de una aplicación Windows en la que:
- Realizamos una conexión con el webservices de Listas de SharePoint(el ejemplo está probado con SharePoint Services 3)
- Mostramos en una lista (listbox) de todas las listas y listados de un site
- Mostramos los datos almacenados el la lista seleccionada
Es un ejemplo puramente ilustrativo y extremadamente simplificado (faltaría el control de excepciones, gestión de configuración, etc.)
En VisualStudio2005 creamos un proyecto Windows, en el diseñador del Formulario colocamos los siguintes controles:
- Un control ListBox, mostrara la lista de las listas y listados del site
- Un control DataGridView, mostrara los datos recuperados desde la lista seleccionada
- Un control Rich Text Box, mostrara el xml que correspondiente a la información de la lista seleccionada.
Ahora creamos la referencia el webservice que permite recuperar los datos de Lista del SharePoint, para ello utilice la herramienta añadir Referencia Web, la url del ws es http://site/_vti_bin/Lists.asmx
Vamos ha crear una función que rellena el LisBox con los nombre de todas las listas que tiene el sitio:
private void RecuperaListasDelSitio()
{
SPSListWebReference.Lists oLst = new SPSListWebReference.Lists();
//Indicar los datos de usuario para acceder al site
oLst.Credentials = new System.Net.NetworkCredential(”USUARIO”, “PASSWORD”);
System.Xml.XmlNode oData = oLst.GetListCollection();
foreach (System.Xml.XmlNode oLstNode in oData.ChildNodes)
{
listBox1.Items.Add(oLstNode.Attributes[”Title”].Value);
listBox1.SelectedItem = listBox1.Items[0];
}
}
Esta función se coloca en el evento Load del formulario, de esta forma al cargar la aplicación la lista lisBox1 se rellena con los nombres de todas las listas del sitio SharePoint.
Ahora en el evento de cambio de elemento seleccionado de la lista colocamos el código que recupera los datos(los campos y los valores) de la lista, el código es:
private void lstList_SelectedIndexChanged(object sender, EventArgs e)
{
//al hacer clic sobre la lista de las listas se mostrara el contenido de la misma
SPSListWebReference.Lists oLst = new SPSListWebReference.Lists();
oLst.Credentials = new System.Net.NetworkCredential(”USUARIO”, “PASSWORD”);
XmlDocument doc = new XmlDocument();
XmlNode Query = doc.CreateNode(XmlNodeType.Element, “Query”, “”);
XmlNode ViewFields = doc.CreateNode(XmlNodeType.Element, “ViewFields”, “”);
XmlNode QueryOptions = doc.CreateNode(XmlNodeType.Element, “QueryOptions”, “”);
System.Xml.XmlNode node = oLst.GetListItems(listBox1.SelectedItem.ToString(), null, Query, ViewFields, “100″, QueryOptions,”");
richTextBox1.Text = node.InnerXml;
//convertimos el dato recuperado en DATASET para mostrarlo en un GRID
XmlTextReader xmlTextReader = new XmlTextReader(node.OuterXml, XmlNodeType.Element, null);
DataSet oDs = new DataSet();
oDs.ReadXml(xmlTextReader);
dataGridView1.DataSource = oDs.Tables[”row”];
}
Ahora ya podemos ejecutar la aplicación y ver el resultado:
Este ejemplo no tiene gran utilidad por si mismo pero muestra cual es el camino para realizar aplicaciones que se conecten con SharePoint.