Artículos con la etiqueta infopath
Carga de Archivo (Upload File) desde infopath forms services
diciembre 05, 2009Deben utilizar un botón adicional al cual le añaden el siguiente codigo .net:
public void btnCargarDocumento_Clicked(object sender, ClickedEventArgs e)
{
XPathNavigator DOM = this.MainDataSource.CreateNavigator();
XPathNavigator fileDocumento = DOM.SelectSingleNode("/my:misCampos/my:att_documento", NamespaceManager);
byte[] attachmentNodeBytes = Convert.FromBase64String(fileDocumento.Value.ToString());
int fnLength = attachmentNodeBytes[20] * 2;
byte[] fnBytes = new byte[fnLength];
for (int i = 0; i < fnBytes.Length; i++)
{
fnBytes[i] = attachmentNodeBytes[24 + i];
}
char[] charFileName = System.Text.UnicodeEncoding.Unicode.GetChars(fnBytes);
string fileName = new string(charFileName);
fileName = txtIdActividad.Value + "-" + fileName.Substring(0, fileName.Length - 1);
byte[] fileContents = new byte[attachmentNodeBytes.Length - (24 + fnLength)];
for (int i = 0; i < fileContents.Length; ++i)
{
fileContents[i] = attachmentNodeBytes[24 + fnLength + i];
}
string LibreriaDestino = "http://SERVIDOR:8001/sitio/sitiodocs/documentosA/";
string Destino = LibreriaDestino + fileName;
System.Net.WebClient objWebClient = new System.Net.WebClient();
objWebClient.Credentials = System.Net.CredentialCache.DefaultCredentials;
objWebClient.UploadData(Destino, "PUT", fileContents);
//limpiar el control upload
if (!fileDocumento.MoveToAttribute("nil",
fileDocumento.LookupNamespace("xsi")))
{
fileDocumento.SetValue("");
}
}
Espero que sea de ayuda
Firmas Digitales en Infopath Forms Services (dedicado a 3 desarrolladores)
agosto 01, 2008Por defecto, los formularios infopath habilitados para mostrarse via web (Forms Services) no aceptan firmas digitales; pero se pueden definir secciones del formulario para aceptar la firma digital (en caso se requiera firmar todo el documento; pues se debería cargar todos los controles en una sola sección).
Primero, veamos un formulario de liquidación de gastos que contiene 3 secciones; es decir, va a ser firmado por 3 personas (no es un caso aplicado en la vida real; pero muy similar al que hicimos en dicho proyecto)

Vamos a configurar cada sección para que soporte firmas digitales. Ingresamos a las propiedades de la seccion

Ficha "firmas digitales" -> Agregar datos

Seleccionamos la sección que se va a firmar -> Aceptamos

Hacemos lo mismo en las otras secciones:




Ahora veamos la firma digital en cliente servidor:

Seleccionamos una imagen para firmar el documento:

Ingresamos un comentario:

El documento ha sido firmado y los controles de la sección no se pueden modificar.


Todo esto es bonito en cliente servidor; ahora viene la parte "interesante" que es la parte web. Para esta prueba el formulario ya estaba configurado para compatibilidad web tal como indiqué en una entrada anterior. (algún dia pondre el link a esa entrada.. jeje)
Via web el formulario se ve como la siguiente figura:

Ingreso algunos datos en la primera sección:

Firmo el documento, el explorador web me muestra una ventana flotante para ingresar los datos de la firma:

El sistema toma una foto del estado actual del formulario al momento de la firma:

El formulario ha sido firmado y no permite la modificación de los campos en la sección firmada:

Realizamos una segunda firma, para la segunda sección donde se encuentra el detalle de los gastos:

Luego de firmar, no se puede ingresar nuevas filas en la tabla dinámica ni modificar los datos ingresados en esta sección:

Firmamos la última sección:

Finalmente el formulario ha sido firmado en sus 3 secciones:

En cualquier momento se puede ver los detalles de la firma con la captura del estado del formulario en el momento que fue firmado.


Como bien diría mi madre "todo se puede en la vida ", yo agregaría "y aún más en el mundo de la informática" pues sí se puede configurar forms services para soportar firmas digitales, solo se deben hacer algunas configuraciones adicionales y tomar en cuenta algunos detalles como el uso de secciones. Todo sea por dejar de usar programas cliente servidor para llenar formularios web, como se hacía antiguamente.
Sharepoint Workflows y Servicios Web
julio 23, 2008La primera solución que propondría para integrar estos flujos de trabajo con otros sistemas es la interacción con servicios web que pueden ser consumidos desde los formularios infopath; a continuación especificaré algunos de los pasos para implementar este tipo de soluciones.
La solución consiste en crear conexiones de datos en el formulario infopath y luego asociar los controles del formulario a los campos que solicita el servicio web (envío de data) y los campos que nos devuelve el servicio web (recepción de data).
A modo de ejemplo veamos el siguiente servicio web que nos envía un mensaje de texto.
.Luego de invocar al servicio web nos devuelve el siguiente mensaje.

Una vez que hemos probado que el servicio web funciona correctamente, debemos asociar el servicio web a nuestro formulario infopath. Ingresar al menú Herramientas - Conexiones de Datos.

Seleccionar la opción Agregar.

Seleccionar la opción Recibir Datos.

Seleccionar la opción Servicios Web.

Especificar el WSDL

Indicar la función que se ejecutará.

Luego se deben asociar los campos de las conexiones de datos con los campos del formulario para interactuar con el servicio web. Para interactuar con Servicios Web que envian data o hacen ambas tareas (enviar y recibir data) se procede con los mismos pasos con la diferencia que al especificar el tipo de funcionalidad se debe seleccionar la opción Recibir Data.
Para interactuar con diferentes bases de datos o soluciones, se deben implementar servicios web que interactuen con estos sistemas y luego los servicios web se deben asociar a los formularios de infopath para su llamado durante la ejecución de un workflow; los servicios web pueden ser desarrollados en diferentes tipos de plataformas y no se presentarán problemas para su integración con los workflows ya que la comunicación se realiza via XML y no via un lenguaje determinado. Espero que este ejemplo sea de utilidad para su uso durante el desarrollo de flujos de trabajo muy complicados y en casos donde se debe mostrar información de diferentes sistemas en un formulario infopath que luego se convierte en una aplicación web.







