You are on page 1of 21

4/24/2014 ENI Training - Libro online

http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 1/21
InfoPath 2010 y Forms Services
1. Introduccin
La mayor parte de las aplicaciones de negocio necesitan la informacin que introduce el usuario. Una
manera habitual de pedir esta informacin es el uso de formularios. InfoPath es la herramienta ideal de
la gama Office 2010 para construir formularios electrnicos.
Al contrario que con la versin anterior, todos los formularios de lista, librera o flujo de trabajo en
SharePoint 2010, son formularios InfoPath, de ah la importancia de este producto.
InfoPath tambin est presente en otras herramientas Office 2010. Por ejemplo, permite mostrar los
"paneles de informacin de documento" (document information panel) en Word.
El diseo de formularios en InfoPath est basado en tres ejes principales:
La validacin de datos: permite verificar la informacin introducida por el usuario para evitar
que los datos invlidos se persistan.
El diseo: InfoPath proporciona numerosos controles que permiten construir formularios
complejos. El concepto de vista permite mejorar la experiencia de usuario, fraccionando un
formulario en varias "pginas" que se pueden mostrar siguiendo el contexto. InfoPath tambin
contiene un concepto de formateo condicional que permite mostrar o no determinados controles
de su formulario.
Las conexiones de datos: los datos son el centro de los formularios InfoPath. Todo formulario
contiene, al menos, una fuente de datos. Se trata de la fuente de datos principal que contiene
los datos del formulario en s mismo (el valor de sus campos). Tambin se pueden aadir otras
fuentes de datos para integrar los que vienen de fuentes externas.
Volvamos al contexto de SharePoint 2010. InfoPath le va a permitir personalizar los formularios
estndares. Estos son los formularios que permiten ver, aadir o modificar elementos de una lista o de
una librera. Aadiremos a estos formularios aquellos que permiten interactuar con un flujo de trabajo.
La modificacin de estos formularios es muy sencilla y no necesita el uso de cdigo. Un clic en la barra
de herramientas de SharePoint abre el formulario actual en modo edicin en InfoPath. Otro clic en
InfoPath publica el nuevo formulario en SharePoint.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 2/21
InfoPath tambin le permite desarrollar verdaderas aplicaciones de negocio que utilicen un formulario
de entrada. Los usuarios rellenan un formulario y lo persisten. Los datos del formulario se guardarn
en una lista SharePoint. Despus, se podrn ejecutar diferentes operaciones sobre estos datos, como
por ejemplo la ejecucin de un flujo de trabajo.
2. Diferencia entre Forms Services e InfoPath
La diferencia entre InfoPath y Forms Services no siempre est clara para muchas personas. Se trata de
dos tecnologas diferentes.
InfoPath es un producto de la gama Office, como Excel, Word, PowerPoint, etc. Por tanto, se puede
usar sin SharePoint, como cualquier otra herramienta Office.
Desde esta nueva versin, el cliente InfoPath se divide en dos aplicaciones:
InfoPath Designer 2010, para el diseo de plantillas de formularios y la publicacin de la
plantilla en SharePoint.
InfoPath Filler 2010, para que los usuarios finales rellenen los formularios.
Forms Services es un servicio de SharePoint que permite mostrar un formulario InfoPath como una
pgina web y por tanto, usarlo sin que InfoPath est instalado en el puesto cliente. Sin embargo, hay
que tener presente que los formularios destinados a Form Services no se benefician de todas las
funcionalidades de InfoPath, al contrario que un formulario que se utiliza en el cliente InfoPath.
Forms Services est disponible como funcionalidad Enterprise en SharePoint Server 2010.
3. Personalizacin de los formularios de lista
Empiece por el uso ms sencillo de InfoPath en SharePoint 2010: la personalizacin de los formularios
de lista. Cada vez que vea, modifique o cree un nuevo elemento en una lista SharePoint, estar frente
a un formulario de lista presente en una ventana modal.
Esta ventana es, en realidad, una pgina que contiene un WebPart y muestra un formulario InfoPath.
Como hemos dicho antes, un simple clic en la barra de herramientas permite abrir el formulario en modo
edicin en InfoPath. La accin en cuestin est en la pestaa Lista.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 3/21
Para este ejemplo, usar una lista sencilla de tipo "Lista personalizada" que, por defecto, slo tiene
una columna llamada ttulo.
Vamos a modificar el comportamiento y el diseo de este formulario aadindole una imagen y
aceptando que los ttulos contengan, al menos, tres caracteres.
Empiece por aadir una imagen al formulario. Para esto, inserte la imagen desde la pestaaInsertar de
InfoPath, como lo hara con cualquier otro programa.
Esta etapa tena por objetivo demostrar la sencillez de uso de InfoPath. Veamos ahora cmo aadir
una regla de validacin sobre el campo ttulo del formulario.
Haga clic en el campo ttulo para seleccionarlo y en Administrar reglas de la pestaa Propiedades, lo
que abrir la seccin de administracin de las reglas para este campo.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 4/21
Aada una regla de tipo validacin desde esta seccin. Esta regla slo validar los ttulos que tengan,
al menos, tres caracteres.
La funcin string-length devuelve la longitud de un texto, el punto (.) significa que la funcin se aplicar
sobre el propio campo o dicho de otra manera, sobre el que se aplica la regla.
A continuacin se muestra a qu se debe parecer su nueva regla:
Veamos ahora cmo publicar nuestro formulario modificado. Como para el caso de la edicin, la
publicacin se hace en un solo clic. Use el botn Publicacin rpida.
Para terminar, pruebe su nuevo formulario en SharePoint.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 5/21
4. Creacin de lista SharePoint desde InfoPath
En el ejemplo anterior hemos visto cmo personalizar los formularios de lista en SharePoint. Hemos
descubierto cmo usar InfoPath y Forms Services para crear listas en SharePoint.
Arranque InfoPath Designer 2010 y cree un nuevo formulario de tipo Lista SharePoint.
El asistente le pide definir el site destino, es decir, el site sobre el que se desplegar el formulario.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 6/21
En la ltima etapa del asistente, tiene que definir la lista destino, dentro del site seleccionado en la
etapa anterior.
A este nivel, hay disponibles dos opciones: crear una nueva lista o modificar una lista existente. En
nuestro caso, aada una nueva lista y llmela Mi aplicacin.
Se abrir un formulario que slo contiene un campo llamado Ttulo. Esto no es una sorpresa y
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 7/21
corresponde al tipo de contenido bsico de SharePoint: Element.
Cuando publique el formulario en la lista, cada campo del formulario se transformar en columna de
lista. Por tanto, no tiene que preocuparse de la lista durante su desarrollo, todo se har principalmente
en InfoPath.
Va a aadir algunos campos en su formulario. El objetivo es que la lista contenga una coleccin de
formaciones. Aada algunos controles:
Para resumir, ha aadido los siguientes campos:
Descripcin (zona de texto formateada)
Formador (zona de texto)
Nivel (lista de seleccin, campo no nulo que debe contener un valor)
Cuando se han aadido todos los controles, no olvide renombrar los campos del origen de datos
principal. Esto se puede hacer desde la pestaa Propiedades de la barra de herramientas, cuando se
selecciona el control.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 8/21
ste es el nombre que se utilizar para crear las columnas en la lista SharePoint. Como se ha explicado
anteriormente, el campo Nivel es una lista de seleccin. Esta lista puede contener tres valores:
Principiante, Avanzado y Experto.
Abra las propiedades del control y modifique las opciones de la lista.
Desde esta ventana, haga tambin que el campo sea obligatorio.
Haga clic en el botn Publicacin rpida para crear la nueva lista y publicar el formulario.
Intente aadir un elemento nuevo a la lista para probar su nuevo formulario.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 9/21
Acabamos de ver cmo crear una lista en un site basado en una plantilla de formulario InfoPath.
5. Las fuentes de datos externas
Hasta ahora hemos usado una nica fuente de datos en nuestros formularios: la fuente de datos
principal o, dicho de otra manera, los datos del formulario en s mismo.
Las fuentes de datos externas en InfoPath permiten incorporar datos que no pertenecen al formulario.
Estos datos pueden venir de diferentes orgenes.
Servicio Web SOAP
Servicio Web REST
Biblioteca o lista SharePoint
Base de datos (slo Microsoft SQL Server)
Documento XML
En nuestro ejemplo, vamos a sustituir el campo Formador (que ahora es una simple zona de texto), por
una lista de seleccin conectada a una lista en nuestro site SharePoint. Esta lista se llama Formadores
y contiene una lista de las personas encargadas de los cursos.
Abra de nuevo el formulario de su primera lista para sustituir la zona de texto Formador por una lista
desplegable unida a su nueva lista.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 10/21
El objetivo es sustituir una zona de texto por una lista desplegable. Para esto, no es necesario eliminar
el control inicial, sino crear un nuevo campo en el formulario. InfoPath permite sustituir un control por
otro de manera muy sencilla.
Haga clic con el botn derecho del ratn en el control que va a sustituir y seleccione Modificar el
control - Zona de lista desplegable.
Ahora slo falta relacionar la zona desplegable con la lista Formadores de su site. Para esto, muestre
las propiedades del control.
Por defecto, los elementos de la lista se tienen que definir de manera esttica. Esto significa que tiene
que introducir a mano todos los valores posibles. Evidentemente, esto no es lo que queremos en
nuestro caso.
Los valores provienen de una fuente de datos externa al formulario:
Su siguiente accin consiste en definir esta nueva fuente de datos externa. Haga clic en Agregar.
Se trata de una conexin de recepcin de datos:
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 11/21
Hacia una lista SharePoint:
Escriba la direccin del site SharePoint y seleccione la lista Formadores.
Slo le interesa el campo Titulo, que es el que contiene el nombre del formador. En esta pantalla
tambin puede definir un orden para el resultado devuelto. Esto forma parte de las pequeas mejoras
respecto a la versin anterior de InfoPath, facilitando la vida de los desarrolladores.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 12/21
Finalice el asistente y salve su conexin con el nombre Formadores.
Defina el campo Ttulo al mismo tiempo como valor y como nombre completo. Esto significa que este
campo se presentar en la lista desplegable y se guardar en la lista SharePoint.
Publique de nuevo el formulario y prubelo. Compruebe que la lista se ha rellenado correctamente
desde SharePoint.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 13/21
6. Uso de WebPart de formulario InfoPath
Entre los nuevos WebPart liberados con SharePoint 2010, figura el WebPart de formulario
InfoPath(Forms Services WebPart). Este componente permite presentar cualquier formulario InfoPath
en una pgina de site.
Mirando un poco ms all, podemos ver en InfoPath una manera de crear WebPart de manera grfica,
sin ningn conocimiento de programacin y sin necesidad de despliegue en el servidor.
Volvamos al formulario que hemos creado anteriormente. Nuestro objetivo ser aadirlo en una base
que contendr, al mismo tiempo, el propio formulario y la lista de elementos ya creados. El formulario se
mostrar en modo aadir y permitir la creacin de nuevos elementos.
A continuacin se muestra el resultado final que queremos obtener:
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 14/21
Se ha aadido una modificacin al formulario anterior: el botn Aadir, que permite persistir el
formulario.
Modifique de nuevo el formulario en InfoPath y aada un botn:
En las propiedades del botn, defina su accin como Enviar:
Publique de nuevo el formulario.
Vaya a la pgina de inicio de su site y aada dos WebPart. En primer lugar, una vista de nuestra lista
principal:
Y despus el WebPart de formulario InfoPath:
Modifique las propiedades de este WebPart para que muestre su formulario.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 15/21
En este ejemplo, tiene que modificar la lista destino y el comportamiento despus del envo del
formulario, para que se presente un nuevo formulario vaco despus del envo.
Observe que el WebPart de formulario InfoPath, le permite integrar realmente sus desarrollos InfoPath
en sus pginas SharePoint de manera transparente.
Tambin es posible conectar el WebPart de formulario InfoPath a otro WebPart.
7. Uso de cdigo en los formularios InfoPath
Hasta la versin anterior de InfoPath, para usar cdigo en los formularios InfoPath, era necesario que
un administrador de la granja los desplegara. En efecto, el despliegue del formulario slo se poda
hacer a travs de la administracin central de SharePoint.
Gracias a los sandboxed solutions de SharePoint 2010, ahora un administrador de coleccin de sites
puede desplegar el cdigo. La solucin se ubica en la galera de soluciones de la coleccin de sites.
La creacin de cdigo para InfoPath slo se puede hacer en VSTA (Visual Studio Tools for
Application). Desgraciadamente, Visual Studio 2010 no soporta los proyectos InfoPath.
Vamos a ilustrar el uso de cdigo a travs de un ejemplo sencillo. Vamos a desarrollar un formulario con
una zona de lista modificable (combo box), conectada a una lista SharePoint que contiene las formulas
de saludo (Sr, Sra). El usuario podr introducir un valor que no est en la lista. En este caso, podemos
usar cdigo para aadir este nuevo elemento en la lista de frmulas de saludo.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 16/21
Cree una lista con las frmulas de saludo:
Abra InfoPath 2010 y cree un nuevo formulario de tipo Biblioteca de formularios SharePoint.
Aada su combo box y conctela a su lista frmulas de saludo.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 17/21
Publique el formulario en una nueva biblioteca de formularios de su site y cree un nuevo elemento.
Su zona de lista modificable est conectada a su lista SharePoint. Slo le falta aadir el cdigo
necesario para aadir un nuevo elemento.
La primera etapa consiste en elegir un lenguaje de programacin para su desarrollo. Podemos elegir
entre Visual Basic.NET y C#.
El lenguaje que se selecciona por defecto es Visual Basic.NET, ya que histricamente las
aplicaciones Office se podan personalizar usando VBA.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 18/21
La seleccin del lenguaje se puede hacer desde la barra de herramientas, en la pestaaDesarrollador.
Seleccione C#, ya que ste es el lenguaje elegido para este libro.
Ahora puede aadir cdigo al evento Modificado de la zona de lista modificable. Este cdigo se
ejecutar cada vez que la seleccin de la lista se modifique.
Ahora est en VSTA, dentro del proyecto relacionado con nuestro formulario. Comience por aadir una
referencia al API de SharePoint. Le ser til para interactuar con nuestra lista de frmulas de saludo.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 19/21
This.saludos
MainDataSource.CreateNavigator().SelectSingleNode(/my:misCampos
/my:Saludos, NamespaceManager)
private string GetValueOnForm(string xpath)
{
XPathNavigator navigator =
MainDataSource.CreateNavigator().SelectSingleNode(xpath,
NamespaceManager);
if (navigator != null)
return navigator.Value;
else
return String.Empty;
}
private void SetValueOnForm(string xpath,string value)
{
XPathNavigator navigator =
MainDataSource.CreateNavigator().SelectSingleNode(xpath,
NamespaceManager);
if (navigator != null)
navigator.SetValue(ValueType);
}
public void Saludo_Changed(object sender, XmlEventArgs e)
{
using (SPSite site = new
SPSite(ServerInfo.SharePointSiteUrl.ToString()))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Saludos"];
SPQuery query = new SPQuery();
query.Query = "<Where><Eq><FieldRef
Name=Title/><Value Type=Text>" + e.NewValue +
"</Value></Eq></Where>";
if (list.GetItems(query).Count == 0)
Una cosa importante que hay que entender en el desarrollo InfoPath, es que los controles del
formulario estn relacionados con la fuente de datos principal del formulario. Esta fuente de datos no
es otra que un archivo XML. Esto significa que la nica manera de interactuar con estos controles es
leer y modificar el archivo XML de la fuente de datos.
Imagine que su zona de lista modificable se llama saludos y es imposible usarla como en una aplicacin
Windows o web:
Tiene que usar XPATH, por ejemplo, como sigue:
Para simplificarle la vida, puede crear dos mtodos que le permitirn leer y modificar el valor de un
control en el formulario:
Truco: para conocer fcilmente la ruta XPATH de un elemento de su formulario, haga clic con el
botn derecho del ratn en el explorador de la fuente de datos y haga clic en Copiar XPath. La
ruta se copiar en su portapapeles.
Escriba ahora el cdigo en su evento Modificado de la zona de lista modificable.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 20/21
{
SPListItem item = list.AddItem();
item["Titulo"] = e.NewValue;
web.AllowUnsafeUpdates = true;
item.Update();
web.AllowUnsafeUpdates = false;
}
}
}
}
using (SPSite site = new
SPSite(ServerInfo.SharePointSiteUrl.ToString()))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Saludos"];
SPQuery query = new SPQuery();
query.Query = "<Where><Eq><FieldRef
Name=Title/><Value Type=Text>" + e.NewValue +
"</Value></Eq></Where>";
if (list.GetItems(query).Count == 0)
{
...
}
SPListItem item = list.AddItem();
item["Titulo"] = e.NewValue;
web.AllowUnsafeUpdates = true;
item.Update();
web.AllowUnsafeUpdates = false;
La clase ServerInfo permite recuperar informacin relativa al contexto actual de SharePoint.
Examine el cdigo anterior: recupere una instancia de SPWeb.
A
partir del site puede recuperar una instancia de SPList que represente su lista de frmulas de saludos.
La siguiente etapa consiste en verificar si el nuevo elemento elegido en la zona de lista modificable, ya
est presente en su lista de frmulas de saludo. Para hacer esto, puede usar una consulta CAML.
Slo si el elemento no est presente en la lista, adalo:
Se tiene que hacer una ltima modificacin en el formulario para permitir que el cdigo se ejecute tan
pronto como la seleccin de la lista cambie. En las propiedades de la zona de lista, en la
pestaaFormularios del navegador.
4/24/2014 ENI Training - Libro online
http://www.eni-training.com/client_net/mediabook.aspx?idR=82824 21/21
Seleccione que el formulario se enve Siempre al servidor cuando cambie el valor del control.
Publique de nuevo el formulario y prubelo. Para ello, escriba un nuevo valor en la zona de texto
modificable. El nuevo valor se aade a su lista de frmulas de saludos.
Vaya a la galera de soluciones para comprobar que su proyecto se ha publicado correctamente como
sandboxed solution.