jump to navigation

Pasar parámetros desde InfoPath 2007 a un Servicio Web 07/19/2007

Posted by dquirozo in InfoPath, Servicios Web.
add a comment

Como sabemos (y si no, después de este post lo sabremos) cuando deseamos comunicarnos con una base de datos desde un formulario InfoPath 2007 que utiliza los Servicios de Formulario de SharePoint (es decir, un Web Form) es necesario programar un Servicio Web (WebService) para realizar dicha comunicación, pues he aquí la manera común de pasar y recibir datos desde estos formulario hacia los servicios.

El ejemplo se basará en un formulario con los siguientes componentes: 1 control de caja de texto (llamado “parámetro”) que almacenará el parámetro a enviar, 1 botón que hará la llamada al Servicio Web  enviando el parámetro y Varios controles caja de texto que recibirán el resultado de la llamada al Servicio.

Formulario Ejemplo

A continuación crearemos una nueva conexión de datos (Menú Herramientas – Conexiones de Datos… – Agregar…),  especificamos que la conexión que necesitamos es para “Recibir Datos”, posteriormente seleccionamos el tipo de origen de datos, en este caso un “Servicio Web”, especificamos la ruta de Servicio (por ejemplo: http://compañia.com:8080/Personales/service.asmx), nos solicita le indiquemos a que método del Servicio Web deseamos conectarnos (podemos contar con N métodos dentro del mismo Servicio Web), si lo deseamos podemos especificar valores iniciales a los parámetros, para este ejemplo quitamos la selección que tiene “Recuperar datos automáticamente cuando se abre un formulario” y listo, tenemos nuestra conexión lista para recibir y regresar datos.

IMPORTANTE:

Bien, ahora contamos con dos orígenes de datos (Principal y ConexiónServicioWeb). Este segundo origen de datos tiene dos secciones: queryFields y dataFields, bien, el o los parámetros a enviar se especifican en los queryFields y los resultados (posterior a realizar una consulta utilizando esta conexión) se reciben en los dataFields.

Nuevo Origen de Datos

Lo único que falta es agregar una regla con algunas acciones a nuestro botón las cuales se resumen en tres:

  • La PRIMER ACCIÓN establecerá el valor del campo “parámetro” al campo que envía (en este ejemplo: pDni_Empleado) del Servicio Web.

  • La SEGUNDA ACCIÓN ejecutará  una consulta usando la conexión de datos a nuestro Servicio Web.

  • La TERCER ACCIÓN (aunque aquí son varias acciones) establecerá los valor de los campos destino (en este ejemplo: Campo2, Campo3, etc.) con los campos de la sección dataFields de nuestro Servicio Web.

Acciones Botón

Listo, sencillo verdad?, bueno espero sea útil para alguien y no olvidéis que se aceptan sugerencias para mejorar o ampliar cada post

Anuncios

Conexiones a Servicios Web en formularios habilitados para el navegador Web (InfoPath) 05/23/2007

Posted by dquirozo in InfoPath, Servicios Web, SharePoint.
1 comment so far

Una de las nuevas característica de MOSS 2007 es la posibilidad de mostrar formularios diseñados en InfoPath directamente sobre el navegador Web a través de los servicios de formularios, ventaja que nos permite el evitar el tener instalado el cliente de InfoPath en cada equipo de los usuarios que necesitan rellenar o consultar información en algún formulario.

La primera vez que intente realizar una llamada a un Servicio Web con un Formulario Web diseñado en InfoPath basado en los servicios de formulario de MOSS 2007, obtenía un error de servidor que me indicaba que se había escrito una entrada en el Log del servidor con los detalles del error……. nunca encontré la dichosa entrada.

Recherchendo en la Web al fin encontré la solución que aquí os expongo de manera detallada:

En concreto solo son un par de pasos bastante sencillos.

1.- Primero hay que ir a nuestro sitio de Administración Centra, pestaña de Administración de Aplicaciones, sección de InfoPath Form Services y en la opción de Configurar InfoPath Form Services hay que marcar o habilitar la opción de “Acceso entre dominios para plantillas de formulario de usuario“ lo cual nos permitirá el tener acceso a datos entre dominios cruzados:

Acceso entre diferentes dominios

2.- Segundo, pero no menos importante, dentro de nuestro diseño del formulario, dentro de “Herramientas” – “Conexiones de Datos”, hay que convertir las conexiones a nuestros servicios Web y guardarlas dentro de nuestro sitio de sharepoint en una biblioteca de tipo “Biblioteca de conexiones de Datos” (Una biblioteca de conexión de datos es un nuevo tipo de biblioteca de documentos de SharePoint que provee un lugar para almacenar, administrar y compartir archivos de conexión), yo os recomiendo crear esta biblioteca en un sitio de nivel superior para poder tener acceso a las conexiones qua aquí se almacenen desde cualquier sitio dentro de la colección y fomentar la reusabilidad de estas:

Convertir Conexiones

OJO!! Yo he guardado las conexiones en formato tanto XML y UDCX, podéis intentarlo con la extensión que os vaya mejor. 

Es todo, el formulario de InfoPath que es renderizado en un navegador Web puede trabajar ahora con conexiones a servicios Web sin problema.

OJO!!! Las bibliotecas de conexiones de datos, por default, requieren aprobación de contenidos,, entonces no debemos olvidar aprobar cada archivo de conexión para hacerlos disponibles para todos los usuarios.

Según explica Nick Dallett [1], la necesidad de guardar nuestras conexiones a servicios Web dentro de una biblioteca de conexiones de datos ubicada en nuestro sitio de sharepoint es debido a que los servicios de formulario no pueden detener la ejecución de un proceso que corre del lado del servidor para cambiar de contexto y preguntarnos si deseamos conectarnos al origen de datos y posteriormente regresar a la ejecución del proceso del lado del servidor, entonces al tener almacenada la conexión dentro de esta biblioteca la ejecución continua sin interrupción.

[1] http://blogs.msdn.com/infopath/archive/2006/10/02/Data-Connections-in-Browser-Forms.aspx

Habilitar formularios de InfoPath en páginas SharePoint dentro de una Webpart 05/23/2007

Posted by dquirozo in InfoPath, SharePoint, WebParts.
2 comments

Si los servicios de formulario de MOSS 2007 ya representan una gran ayuda dentro de los sitios de SharePoint, una webpart que muestre estos formulario sería aún de más ayuda, esto nos evitaría el tener que utilizar la Webpart Visor de páginas para visualizar estos formulario:

Para esto podemos utilizar la clase XMLFormView la cual nos renderiza plantillas de formaularios InforPath (.xsn) a páginas web. Aquí el pequeño ejemplo de una Webpart que muestra un formulario utilizando la clase XMLFormView.

/* Es necesario agragar una referencia a la librería Microsoft.Office.InfoPath.Server.Controls.dll este ensamblado por lo general se encuentra en C:\Archivos de programa\Microsoft Office Servers\12.0\Bin del Servidor de MOSS 2007 o del servidor en donde este instalado Form Server. */

using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.Office.InfoPath.Server.Controls;

namespace RenderizaFormulario
{
public class MuestraIfoPath : WebPart
{    

     private const string ubicacionDefault =
          “ruta de la plantilla a utilizar por default (.XSN)”;
     private string ubicacion = ubicacionDefault;

     [Personalizable(PersonalizationScope.Shared),
     WebBrowsable(true),
     WebDisplayName(“Propiedad Ubicación”),
     WebDescription(“Ubicacíon del archivo XSN”)]
     public string Ubicacion
     {
          get { return ubicacion; }
          set { ubicacion = value; }
     }
    

     protected override void CreateChildControls()
     {
          XmlFormView formView;
          formView = new XmlFormView();
          formView.Width = Unit.Percentage(100);
          formView.Height = Unit.Pixel(100);
          formView.XsnLocation = ubicacion;
          formView.ShowHeader = false;
          formView.ShowFooter = false;
          this.Controls.Add(formView);
          base.CreateChildControls();
     }
}
}

Solo nos restaría firmar el ensamblado, registrarlo en el Global Assembly Cache del servidor y agregar la entrada de Control Seguro en el web.config de la aplicación web en la cual estará disponible la WebPart, un IISRESET final y listo. Súper !!!

Incluso tenemos una propiedad para la ubicación de la plantilla lo cual nos permite reutilizar la WebPart con diferentes plantillas en todos los sitios de SharePoint que deseemos.

Se aceptan sugerencias.