domingo, 6 de diciembre de 2009

Maraton de WebCast sobre SharePoint 2010 y SharePoint 2007!‏

Cualquier excusa es buena para celebrar un hito importante, y en el caso de SUGES este hito es que ya tenemos más de un año y más de 380 usuarios registrados en la comunidad. Y para celebrarlo os proponemos una maratón de WebCasts sobre SharePoint 2010 y SharePoint 2007. Aquí tenéis los detalles del maratón:

Para obtener más información del contenido de estos webcast sigue el siguiente enlace:

http://www.ciin.es/web/servicios/eventos/Paginas/webcastsuges.aspx?Fecha=10-12-2009

martes, 24 de noviembre de 2009

PowerShell en Sharepoint 2010

Una de las novedades de Sahrepoint 2010 es la incorporación de PowerShell como medio para interactuar con el sistema, disponemos de un entorno de administración y configuración desde línea de
comandos.

Lo primero que tenemos que saber es que PowerShell no es una evolución de STSADM, PowerShell utiliza cmdlet’s que ejecutan código .net. Aunque PowerShell viene como característica en Windows Server 2008 y Windows 7, SharePoint 2010 incorpora una serie de cmdl’t para facilitar la administración y configuración de SharePoint.

Para iniciar a la consola PowerShell de Sharepoint accederemos desde el menú de inicio > Herramientas administrativas > SharePoint 4.0 Management Console

Para conocer los comandos disponibles utilizaremos get-command, el cual nos devolverá una lista con todos los cmdlet’s disponibles. Para extraer la lista completa de comandos ejecutaremos el script:

Get-Command | format-table name, Definition > cmd.txt

Para obtener una descripción más detallada y una explicación de los parámetros podremos utilizar el comando get-help y a continuación el nombre del comando a consultar, por ejemplo: get-help get-spsite

Con PowerShell vamos a poder obtener referencias a objetos .NET, si por ejemplo usamos el comando Get-SPSite obtendremos una referencia del tipo SPSite.

Si utilizamos el comando get-spsite sin parámetros obtendremos una lista con todas las colecciones de sitio disponibles.

Si especificamos a get-spsite una colección determinada y lo asignamos a una variable, podremos navegar por sus propiedades:

$site = get-spsite http://win-vzvl4qwi840/sites/blanco

$site.ID.ToString()

También podremos hacer distintas combinaciones como por ejempl mostrar el ID y la URl de todas las colecciones mediante un foreach:

get-spsite | foreach {$_} | Format-table ID, URL

Al enumerar los comandos comprobareis que están agrupados por prefijos: get, new, remove, set, … estos prefijos describen la acción del cmdlet. Si para obtener una colección de sitios utilizábamos Get-SPSite, para crear una nueva Colección de Sitios utilizaremos New-SPSite:

new-spsite -Url http://win-vzvl4qwi840/sites/rrhh -Name RRHH -OwnerAlias Administrator -Template STS#0

 

Os recomiendo dar un vistazo al libre Mastering PowerShell con el que podréis aprender a manejar PowerShell.

viernes, 20 de noviembre de 2009

Presentaciones de Sharepoint 2010 en el CEUS

El pasado 17 de Noviembre se celebró en Madrid el evento CEUS v de Microsoft.

Ya están disponibles las presentaciones de las sesiones de Sharepoint 2010 desde el blog de Luis Panzano.

http://blogs.msdn.com/luispanzano/archive/2009/11/19/evento-en-el-ceus-sobre-sharepoint-2010.aspx

 

Aunque no dió tiempo a ver todas las novedades, al menos se consiguió hechar un primer vistazo a las funcionalidades más relevantes y a las novedades en cuanto a desarrollo con Visual Studio 2010 y Sharepoint Designer 2010.

miércoles, 18 de noviembre de 2009

Material de CEUS “Desarrollo de aplicaciones empresariales con MOSS 2007”

Os dejo el material con el que trabajamos en CEUS V en la sesión “Desarrollo de aplicaciones empresariales con MOSS 2007”.

 

El fichero zip Demo Infopath.zip que contiene:

  • WcfServiceLibrary1: Proyecto con ejemplo de servicio WCF para integrar con Infopath. Utiliza la bbdd de ejemplo AdventureWorks
  • WPBusquedas: Proyecto con ejemplos de como realizar distintas búsquedas enSharepoint
  • PlantillaPedidoR.xsn: Ejemplo de una plantilla infopath para introducir presupuestos integrada con el servicio WCF.
  • Desarrollo de  aplicaciones empresariales con MOSS 2007_v2x.pdf: Pdf de presentación

lunes, 16 de noviembre de 2009

Disponible Beta SharePoint 2010 en MSDN

Desde hoy está disponible para los subscritores de MSDN la beta de Sharepoint Foundation 2010 y Sharepoint Server 2010. Incluye bastantes mejoras respecto a la CTP, aunque hasta dentro de unos días no será libre descarga, así que toca esperar.

 

Español:

http://msdn.microsoft.com/es-es/subscriptions/downloads/default.aspx?pv=42:393

Inglés:

http://msdn.microsoft.com/es-es/subscriptions/downloads/default.aspx?pv=42:393

martes, 10 de noviembre de 2009

Webcast: Flujos de trabajo con Sharepoint

Desde SUGES os proponemos un nuevo WebCast en el que tendréis la oportunidad de Aprender a ir un paso más allá en la personalización de las pantallas de solicitud de datos de usuario de un flujo de trabajo de estado sobre SharePoint. El webcast trata de cómo crear desde cero un flujo de trabajo con Visual Studio 2008 para Windows SharePoint Services 3.0 o Microsoft Office SharePoint Server 2007, aprovechando tanto la potencia de asp.net para la solicitud de datos como la facilidad de configuración de SharePoint Designer para crear fácilmente flujos de trabajo con alto nivel de personalización, centrándose en crear código sólo para lo que realmente es necesario: Las reglas de negocio.

Podéis registraros desde el enlace http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032430268&EventCategory=4&culture=es-ES&CountryCode=ES

Datos de interés:
· Audiencia: Profesionales TIC, Jefes de Proyecto, Desarrolladores.
· Requisitos previos: conocimientos de plataforma SharePoint.
· Fecha: martes 10 de noviembre.
· Hora:  18:00 – 19:30.
· Duración aproximada: 90 minutos.
· Ponente: Hans Baumann (Alba Technology).

lunes, 19 de octubre de 2009

SDK SharePoint 2010 y Sharepoint Developer Center!!

Ya llegó!!, Hoy ha sido un gran día, hemos podido ver en la keynote de la Sharepoint Conference 2009 la presentación de Sharepoint 2010. Y aunque hasta noviembre no podremos disfrutar de la beta pública de Sharepoint 2010 Microsoft va liberando documentación poco a poco y entre ellas una primera versión de la SDK de Sharepoint 2010 en modo online.

Además disponemos del Sharepoint Developer center donde podremos descargarnos 10 videos introductorios al desarrollo sobre Sharepoint 2010.

Y por si fuera poco además podemos bajarnos varios HandsOn labs de Sharepoint 2010.

 

Si os fijáis bien, como comentaba Juan Carlos González WSS4 (Windows Sharepoint Service) pasa a llamarse Sharepoint Foundation 2010 y lo que sería el equivalente al MOSS pasa a llamarse MSS2010 (Microsoft Sharepoint Server 2010)

domingo, 23 de agosto de 2009

Nueva certificación en FAST

Desde Junio podemos certificarnos en desarrollo sobre FAST ESP, “FAST Enterprise Search Platform, Developing”. De momento no nos aporta créditos para ninguna certificación, ni disponemos de material de apoyo, el único material del que disponemos es la página FAST University de la que podremos conseguir apuntarnos a un curso virtual y la biblioteca de recursos de FAST.

Lo que me ha llamado la atención es que la han integrado dentro de la tecnología SharePoint Server 2007 pero no aparece dentro de la sección de certificaciones de Sharepoint.

Aunque personalmente creo que es bueno certificarse en alguna de los MCTS de Sharepoint, en este caso creo que es mejor esperar un poco a que aparezca Sharepoint 2010, seguro que encontraremos novedades respecto a la integración de FAST con Sharepoint.

 

Otro aspecto interesante en esta certificación es que una parte de las habilidades que te exigen se refiere a la configuración de la relevancia de resultados, ranking y gestión de diccionarios. Esto me ha recordado algunos vídeos de Channel 9 que hablaban acerca de la importancia de los resultados:

Jim Mosher: On Interaction Management and the FAST Search Engine

Expert to Expert: Harry Shum - General Purpose Search, Decision Engines and Bing

miércoles, 12 de agosto de 2009

The History of Microsoft

Channel 9 ha sacado su último capítulo de la serie “The History of Microsoft” acabando con el año 1999. Durante unos meses han ido publicando una serie de vídeos relacionados con la historia de Microsoft desde sus inicios hasta 1999. Según comentan quieren hacer una serie especial para los años 2000 al 2009.

 

Merece la pena verlos.

http://channel9.msdn.com/shows/History/The-History-of-Microsoft-1999-The-Series-Finale/

domingo, 26 de julio de 2009

SUGES. Material Taller desarrollo Sharepoint

Os dejo el material con el que estuvimos trabajando en el SUGES: Taller Sharepoint 22/07/2009. Al final se llenó sala, pasamos un poco de calor :) pero vimos muchas cosas, los asistentes participaron mucho contando sus experiencias y preguntando sobre problemas reales. Será un formato que repetiremos y no solo en Madrid.

 

Taller Sharepoint SUGES: Pdf con algunas de las diapositivas.

Ejemplos: Zip con algunos de los ejemplos con los que trabajamos.

miércoles, 15 de julio de 2009

SUGES: Taller Sharepoint 22/07/2009

El Miércoles 22 de Julio haremos en Madrid un taller práctico orientado al desarrollo en Sharepoint. Aunque llevaremos un temario y unos labs la idea es que todos los asistentes colaboren exponiendo sus experiencias y dudas.

El taller es gratuito y quedan muy pocas plazas, así que si queréis asistir necesitamos un mail de confirmación a mariocortesflores@hotmail.com o jcgonzalez@ciin.es

El temario y labs con el que trabajaremos inicialmente será algo parecido a esto:

  • Diseño físico de la granja y estructura lógica
    • Estructura física y lógica, portales públicos
  • Entorno de trabajo
    • Máquinas virtuales, VStudio y Sharepoint Designer
  • Elementos de navegación
    • Proveedor de navegación
    • Personalizar menús de navegación y miga de pan
  • Custom fields, contentypes y site columns
    • Creación y definición
    • Custom fields para integrar con otros sistemas
  • Seguridad
    • Autenticación por formulario, proveedor de autenticación y perfil del usuario
    • Manejar permisos, grupos, usuarios anónimos.
    • Elevar privilegios, identidad
    • Algunas recomendaciones para portales públicos
  • WebParts y controles
    • Renderizar y propiedades
    • Algunos controles estándar de sharepoint
  • Despliegue y empaquetado
    • Diseño de Features, soluciones wsp
    • Aprovisionamiento de elementos, menú, sitios, grupos de segurida, WF
  • Búsquedas
    • CAML y el motor de búsquedas
  • Mantenimiento
    • BBDD y cuentas de usuario
    • Backups y plan de contingencia

 

Serán unas dos horas por la tarde a partir de las 17:30 en las oficinas de Renacimiento en:

Calle del Arte 21, Madrid

Oficinas de Renacimiento, planta 6º

Metro Pinar de Chamartín L1, L4 y ML1

http://maps.google.es/maps?f=q&source=s_q&hl=es&geocode=&q=calle+arte+21+madrid&sll=40.396764,-3.713379&sspn=12.409689,28.54248&ie=UTF8&z=16&iwloc=A

 

Y es que en SUGES no cerramos por vacaciones!!!, el Miércoles el Taller y el Jueves Charla en MAD.NUG con Jorge DiéguezSharePoint para los usuarios del negocio , todo esto es fruto del esfuerzo de mucha gente, pero esto no es nada para las sorpresas que tenemos guardadas para la vuelta, así que si no estáis registrados y queréis estar informados de todas las acciones registraros al grupo de SUGES.

Precios de Microsoft Azure

Microsoft ha publicado desde el blog de Microsoft Azure los precios que han adelantado hoy en la Microsoft Worldwide Partner Conference 2009.

La plataforma empecará a comercializarse a partir de Noviembre, los precios se calcularán en función del consumo realizado y los servicios utilizados:

Windows Azure:

Compute @  $0.12 / hour
Storage @ $0.15 / GB stored
Storage Transactions @ $0.01 / 10K

SQL Azure:

Web Edition – Up to 1 GB relational database @ $9.99
Business Edition – Up to 10 GB relational database @ $99.99

.NET Services:

Messages @ $0.15/100K message operations , including Service Bus messages and Access Control tokens

Bandwidth across all three services will be charged at $0.10 in / $0.15 out / GB

 

Estos se aplicarán solo para los servicios desplegados en producción, los recursos consumidos en las fases de prueba y desarrollo seguirán sin tener coste, además de momento continuarán con su versión CTP gratuita.

Aunque es una primera toma de contacto todavía quedan muchas dudas acerca de los precios y la forma de consumo, de momento podemos ir echando cuentas y analizar si podemos plantearnos mover algunos servicios a la plataforma.

BPOS, Azure y el Hosting en España

domingo, 5 de julio de 2009

Gestión de usuarios en BPOS

Una vez hayamos activado nuestros servicio de Microsoft Online dispondremos de un portal de administración, el “Administration center”. Desde aquí podremos configurar las características de cada uno de los servicios contratados. 

Para ver las imágenes podéis entrar en: http://geeks.ms/blogs/mcortes/archive/2009/07/06/gesti-243-n-de-usuarios-en-bpos.aspx

En la sección “Usuarios” dispondremos de las opciones necesarias para gestionar las cuentas de usuario que podrán utilizar los servicios contratados. Cada usuario debe estar asociado al menos a una licencia de alguno de los servicios contratados. Por lo que no podremos disponer de usuario anónimos.

Al entrar la primera vez dispondremos de un usuario “administrador del servicio” el cual no consume licencia excepto si le activamos el servicio manualmente. 

Desde la sección “Lista de usuarios” dispondremos de varias vistas con los usuarios disponibles. Dispondremos de los filtros de: Usuarios administradores, habilitados, deshabilitados y nunca iniciaron sesión. Adicionalmente disponemos de un buscador que podemos utilizar para realizar búsquedas por Nombre y apellidos. También podremos crear nuestras propias vistas con los filtros:Puesto, departamento, ciudad, estado, país, si está habilitado, por tipo de servicio asignado, etc.

Otra opción interesante es que podemos editar las propiedades de múltiples usuarios al mismo tiempo; seleccionando varios usuarios y al mismo tiempo “editar propiedades de usuario” nos aparecerá una ventana con las propiedades y valores comunes.

 

A la hora de crear nuevos usuarios disponemos de varias pantallas donde tendremos que indicar el nombre, apellidos, puesto, ubicación y el tipo de servicio. Es importante que seleccionemos la ubicación adecuada en función desde donde acceda el usuario, esto permitirá a Microsoft calcular cual es su centro de datos más cercano y redireccionar sus peticiones.´

También tendremos que prestar atención al servicio que le habilitamos y el espacio de buzón que le destinamos, por defecto viene marcado 5GB, es aconsejable bajarle el espacio e irlo subiendo en función de la demanda.

Marcando un usuario como “administrador del servicio” éste podrá administrar todos los servicios desde el portal “administration center” al igual que el administrador por defecto. Esto no hará que sea indirectamente administrador de una colección de sitios de SharePoint Online. Para habilitarlo como administrador de una colección lo haremos desde la opción de “Configuración del servicio > SharePoint Online > seleccionamos nuestra colección > Editar > permisos de la colección de sitios > Administradores de la colección de sitios”.

Al final el proceso de creación de usuario, éste tendrá que cambiar la clave al logarse, en caso de haberla olvidado disponemos de la opción “Restablecer contraseña”, que hará un reset de la contraseña del usuario asignándole una temporal que tendrá que cambiar al entrar de nuevo.

Una vez finalizado el proceso nuestro usuario podrá utilizar la aplicación de “Sign in” que permitirá utilizar internet explorer  y las herramientas de office con sus credenciales sin tener que introducirlas constantemente. Además tendrá acceso al portal “My company portal” que consiste en una especie de punto de entrada a todos los servicios disponibles para el usuario.

Para que a un usuario le aparezca las distintas colecciones de SharePoint Online tendremos que darle antes permisos de acceso desde SharePoint Online.

Por último, comentar que disponemos además de varias opciones para importar usuarios de forma masiva pero estas las veremos otro días, nos veMOSS!!.

 

Para ver las imágenes podéis entrar en: http://geeks.ms/blogs/mcortes/archive/2009/07/06/gesti-243-n-de-usuarios-en-bpos.aspx

martes, 30 de junio de 2009

Sharepoint Online en Dotnetmania

He tenido el placer de colaborar en el número 61 de Dotnetmanía escribiendo acerca de Sharepoint Online. En esta ocasión he intentado dar una pequeña introducción acerca de como usarlo, licenciarlo y las bases en las que debe apoyarse una empresa a la hora de plantearse adquirir Sharepoint Online.

Este artículo debe ser un complemento a lo que hemos estado viendo estos días:

Sharepoint Online
Screencast Sharepoint Online
Infrastructure Planning and Design Sharepoint Online
BPOS, Azure y el Hosting en España
Cloud Wars

 

Espero que lo disfrutéis y no seáis muy duros con las críticas.

miércoles, 17 de junio de 2009

BPOS, Azure y el Hosting en España

Llevamos unos días conociendo Sharepoint Online, para entender la oferta completa que nos ofrece Microsoft Online nos queda por ver BPOS.

BPOS o Business Productivity Online Standard Suite consiste en un conjunto de servicios Online que ofrece Microsoft en modo S+S (Software y servicios). Básicamente el BPOS consiste en un paquete de servicios y herramientas online que consta de: Sharepoint Online, Exchange Online, Office Communication Online y Office Live Meeting. La ventaja de utilizar estos servicios es que no tenemos que realizar ninguna instalación en nuestras infraestructuras ni necesitamos configurar nada ya que se ejecutan sobre Windows Azure en los Data Centers de Mircosoft. Windows Azure consiste en la plataforma de Microsoft para soportar y provisionar servicios y aplicaciones en modo cloud computing.

Todos los servicios de BPOS se adquieren mediante subscripciones anuales que se abonan mensualmente y por usuario. Sobre estas subscripciones se pueden contratar adicionalmente ampliaciones de usuarios y almacenamiento.

Para ampliar los detalles de los servicios y el coste podéis visitar la página de Microsof Business Productivity Online Standard Suite

BPOS no se entendería sin Azure, que se ofrece como conjunto debido a que pueden integrarse entre ellos. Por ejemplo desde Sharepoint Online podemos utilizar Workflows que estén procesándose en Azure y desde Azure podemos consumir servicios de BPOS.

¿esta oferta es reamente competitiva?, es decir, ¿hay otros proveedores en España* que ofrezcan algo similar o mejor?. (*El hacerlo solo para España es para poder limitar la oferta disponible). Para intentar responder he elaborado una tabla comparativa entre los distintos servicios que ofrecen varios proveedores en España. Los servicios van desde el más reducido al más amplio. Tampoco hay precios debido a que Azure todavía está en CTP y la comparativa quedaría incompleta.

Parece que Microsoft dispone de una oferta muy completa e incluso con servicios que no disponen otros proveedores, esto hace que sea una opción muy atractiva quedando pendiente de ver los precios de Azure que saldrán para finales de verano de este año

lunes, 15 de junio de 2009

Infrastructure Planning and Design Sharepoint Online

El equipo de Microsoft Online ha publicado la guía Infrastructure Planning and Design TechCenter para ayudarnos a decidir que procesos podemos abordar con SharePoint Online con un mínimo impacto y cuales con una instalación tradicional On-premise.

Aunque no  abarca todas las funcionalidades si que nos permite identificar algunos puntos críticos en los que debemos prestar atención si queremos utilizar los servicios de Sharepoint Online, como:

  • Experiencia de usuario
  • Impacto en funcionalidades para la colaboración
  • Impacto en funcionalidades de portal
  • Impacto en las búsquedas
  • Impacto en la gestión de contenidos
  • Impacto en BI
  • Impacto en el mantenimiento de datos y gestión de seguridad
  • Aspectos que afectan al negocio
  • Aprovisionamiento

miércoles, 3 de junio de 2009

Bing y Sharepoint

Las búsquedas federadas nos permiten poder realizar búsquedas e indexaciones de forma remota de manera que en lugar de utilizar el motor de búsqueda de SharePoint sea otro buscador externo el que las realice y nos devuelva el resultado. En las siguiente imagen vemos como podemos obtener el mismo resultado de “Bing” en nuestro WebPart de resultados de Sharepoint. Fijaros como son los mismo resultados y en el mismo orden.

Para utilizar las búsquedas federadas en Sharepoint tenemos que tener o bien el Search server 2008 o el infraestructure update instalado en nuestra granja.

Una vez instalado en la pantalla de configuración de búsquedas indicaremos a Sharepoint como traducir las consultas realizadas desde el webpart de filtro a una query string que entienda el buscador externo. Desde la pantalla de “Ubicaciones Asociadas Externas” añadiremos una nueva ubicación mediante la acción “Nueva ubicación”. A continuación indicaremos el nombre y que utilice el protocolo OpenSearch 1.0/1.1.

En la sección “Información de la ubicación” en la entrada “plantilla de consulta” indicaremos el formato que debe utilizar sharepoint para enviarle las consultas al buscador externo. Para el caso de BING:

http://www.bing.com/search?q={searchTerms}&count={itemsPerPage}&first={startItem}&mkt={language}&format=rss&FORM=SHAREF

Para la entrada “Más resultados” http://www.bing.com/search?q={searchTerms}&first={startItem}&mkt={language}&FORM=SHAREM

Por último en la sección “Mostrar información” podremos configurar el xsl de resultado. En mi caso lo he dejado el formato predeterminado.

Una vez hayamos configurado la ubicación externo, desde nuestra página de resultados agregaremos el WebPart “Resultados asociados externos ” y en la propiedad “Ubicación” seleccionaremos el nombre de nuestra Ubicación. Una vez hayamos aplicado los cambios ya deberían verse resultados. En caso que no se vea nada puede que hayamos escrito mal la url de ubicación, tengamos problemas de red o de autenticación.


viernes, 29 de mayo de 2009

Cloud Wars

Y no es para menos, los grandes de la informática se han embarcado desde hace unos años en este “nuevo” paradigma y es ahora cuando estamos viendo los resultados. Para ver el estado del mercado he elaborado un gráfico donde podemos ver los distintos servicios por fabricante, servicio, aplicaciones y plataformas. Donde destacan Amazon, Google, IBM y Microsoft.

A la hora de elegir alguno de ellos debemos tener en cuenta los siguientes factores:

  • Robustez
  • Capacidad en la gestión de la escalabilidad del servicio
  • Fácil adopción
  • Soporte de estándares
  • Disponibilidad de herramientas para desarrolladores

Pero qué nos aporta el cloud computing?

  • Reduce la complejidad de las infraestructuras: Para utilizar o proveer de nuevos servicios no necesitamos de nuevo hardware ni de infraestructuras complejas que aumentan el coste y time to market. El mantenimiento se vuelve más fácil, no necesitamos planificar backups, realizar un seguimiento de logs, espacio en disco, etc...
  • Escalabilidad: Podemos dimensionar sin que sea de forma traumática. El dimensionamiento lo podemos contratar de forma adicional y variable, en ocasiones nos interesará tener más instancias de nuestro aplicativo o menos. En otras no interesará contratar un mayor volumen de espacio y otras el mínimo.
  • Flexibilidad: Podemos publicar o quitar servicios de acuerdo a nuestro negocio, al no tener un coste en máquinas y software, la necesidad la marca el momento. Pagamos según necesitamos.
  • Disponibilidad: Los proveedores suelen garantizar un alto nivel de disponibilidad en cuanto al servicio y al tratamiento de los datos. Es el proveedor el que se encarga de levantar nuestro servicio en otro centro de datos y realizar los backups de forma adecuada.
  • Facilita el B2B: El disponer de un entorno común para las empresas puede facilitar la integración de servicios y de datos.

Lo que está claro es que se nos abren nuevas opciones y oportunidades. Las empresas tienen un nuevo planteamiento con el que poder reducir costes en infraestructuras, mejorar la escalabilidad y disponibilidad, reducir el riesgo de inversión y ser más flexibles a la hora de ofrecer nuevos servicios. Para las empresas de TI desde luego como una oportunidad en nuevos servicios y en la manera de ofrecerlos.

¿Qué nos hecha para atrás?

Y es que todavía las empresas no tienen la cultura adquirida o bien no entienden el concepto. La mayoría ven al cloud computing como un hosting. Esto irá cambiando según vayan apareciendo nuevos servicios y aplicativos sobre la nube.

La dependencia con el proveedor

A la hora de elegir un proveedor e infraestructura debemos ser conscientes en como de complejo es el mecanismo para extraer los datos. Y es que depender de un único proveedor a la larga puede llegar a ser perjudicial. Cloud computing es una alternativa más, no la solución para todo. Aquellos procesos vitales para nuestra empresa tendrá que seguir estando en nuestras infraestructuras.

La seguridad

Este es otro miedo que siempre tenemos en mente. La exigencia en este sentido debe ser máxima. La mayoría de los proveedores ya han implementado sistemas que aislan completamente los datos entre compañías. Además disponen de sistemas seguros como HTTPS, antivirus y alarmas de consumo elevado.

Pérdida del servicio por no disponer de internet

El disponer de una conexión de internet adecuada debería ser nuestra principal atención tanto como si consumimos servicios en la nube como si no.

Al igual que antes todos aquellos servicios que sean críticos en nuestro negocio no deben plantearse en modo cloud computing.

¿Hay espacio para el Open Source?

Disponer de un servicio en modo cloud computing siempre tienen un coste, ya que los centros de datos donde están alojados los servicios requieren de grandes inversiones en infraestructuras.

El modelo open source no irá tanto en la línea de disponer de tu propia nube de forma gratuita sino en disponer de servicios, apis y estructuras que te permitan independizarte de la plataforma del proveedor.


Sharepoint Online Actualizado

El equipo de Microsoft Online ha realizado una actualización corrige el problema de crear la descripción de los servicios web con Sharepoint Online. La solución hasta ahora consistía en crear el proxy con un MOSS local y cambiar después la referencia al servicio Online.

Ahora podremos conectar con los servicios directamente sin problemas desde nuestro Visual studio.

 

La actualización automática es otra de las ventajas que nos ofrece Microsoft con sus servicios Online.

lunes, 25 de mayo de 2009

Screencast Sharepoint Online

Como una imagen vale más que mil palabras, os dejo el screencast acerca de Sharepoint Online que preparé para Renacimiento.

http://cid-c733d2f34ff98f40.skydrive.live.com/browse.aspx/Renacimiento

Ojo!, son 3 ficheros.

Material WebCast Infopath

Que mejor forma de agradecer a todos los que estuvieron conectados la semana pasada al WebCast de infopath que colgaros el material con el que trabajamos. Aunque no nos dio tiempo a verlo todo, pudimos darle un repaso desde el principio, consejos y como conectar contra una bbdd y un servicio wcf. Igual dentro de poco hacemos una segunda parte de Infopath gracias a nuestros amigos de SUGES.

Para ver la grabación podéis entrar en http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032416012&EventCategory=4&culture=es-ES&CountryCode=ES , al registraros podréis descargarla o verla online.

 

 

Si queréis estar informados de nuevos eventos y noticias relacionadas con Sharepoint en España, registraros en http://suges.es/

 

Nos veMOSS.

miércoles, 20 de mayo de 2009

Hoy WebCast Infopath con SUGES

Hoy a las 19:30 Madrid, París de la mano de SUGES haremos un Webcast sobre Infopath. Haremos una introducción rápida para ver después que cosas podemos hacer con Infopath para aplicarlas en nuestros proyectos.

Si aún no estáis apuntados podéis entrar en http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032416012&Culture=es-ES

 

Si no tenéis el cliente Live meeting podéis descargarlo desde http://www.microsoft.com/Downloads/details.aspx?familyid=3539CB05-12FD-425B-9317-CE6AB0A2E3CF&displaylang=en

 

Nos veMOSS!!

jueves, 7 de mayo de 2009

WebCast Infopath con SUGES

El próximo 20 de Mayo a las 19:30 desde SUGES haremos el WebCast Infopath orientado a aplicaciones empresariales.

Infopath es una herramienta que suele estar desaprovechada, conocerlo mejor y saber explotarlo nos permitirá crear y proponer nuevas soluciones y servicios.

La idea es dar una introducción muy rápida para los que no lo conozcan y una visión un poco más a fondo para que los que lo hayan visto sepan que cosas se pueden hacer.

 

Podéis registraros al evento online desde http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032416012&Culture=es-ES

 

También os animo a que forméis parte de SUGES (Grupo de Usuarios de SharePoint de España) para manteneros informados de noticias y eventos acerca de sharepoint en España.

Este año que entra vienen muchas novedades y seguro que SUGES nos mantendrá bien informados.

miércoles, 6 de mayo de 2009

Documentación Microsoft Online Actualizada

El equipo de Microsoft Online ha publicado una guía para trabajar con el Business Productivity Online Suite. En esta guía encontraremos como daros de alta, agregar usuarios, añadir servicios, asociar el dominio y manejar algunos de los servicios como Sharepoint Online.

 

De momento podéis manejar los siguientes documentos:

Microsoft SharePoint Online Standard Developer Guide

Microsoft_Online_Subscription_Program

Trial Guide Business Productivity Online Suite

martes, 5 de mayo de 2009

Infopath DataAdapterException

Este error me ha costado pegarme durante dos días con InfoPath. El problema que me surgía era que tenía una plantilla xsn que me funcionaba perfectamente en desarrollo y me daba el siguiente error en real/producción:

The following query failed … DataAdapterException, Exception Message: La base de datos devuelve un error. No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY

El problema venía al realizar una consulta sobre una base de datos, incluso quitándola y volviendo a regenerar seguía dando el mismo problema.

La solución vino al analizar el manifest exacto del xsn. El fichero manifest.xsf consiste en un fichero que contiene la descripción de la estructura del formulario y los elementos asociados. Los ficheros xsn de infopath consisten en un fichero comprimido que contiene todos los elementos que necesita infopath para mostrar el formulario y procesarlo. Esto puede contener los ficheros de imágenes xsd’s con las definiciones de los orígenes de datos, la dll con el código del formulario, el manifest y otros.
Para poder ver el contenido abriremos el xsn en modo diseño y lo guardaremos como “Guardar como archivos de origen…”.

Mi problema en concreto venía porque la definición del xsd del origen de datos no coincidía exactamente con la estructura en producción. La solución fue cambiarla a mano (comparándolo con otras plantillas que si funcionaban), abrí el fichero manifest.xsf en modo diseño guardarla de nuevo como xsn y volver a publicarla.

jueves, 30 de abril de 2009

Sharepoint Online

Dentro de la visión de Microsoft en el modelo de cloud computing Sharepoint se presenta como una de sus piezas. Sharepoint Online es el servicio que nos ofrece Microsoft para todos aquellos necesiten de entornos colaborativos, gestión documental, contenidos y quieran utilizar esas funcionalidades como servicios en lugar de implantarlo en sus infraestructuras.

Sharepoint Online NO es un hosting de MOSS, eso lo podemos encontrar en www.SharePointHosting.com, Sharepoint Online nos permitirá disponer de alguna de las funcionalidades de MOSS pero con una serie de ventajas adicionales de manera que paguemos por el servicio consumido y no por los recursos utilizados. Podéis adquirir una licencia trial de hasta 20 usuarios en http://www.microsoft.com/online/ además encontrareis toda la información necesaria en cuanto a costes y modo de contratación.

Os dejo una presentación con la que estoy trabajando para mayor claridad a estos conceptos, además los iré elaborando más en detalle durante estos días.

Podéis bajaros además la guía Microsoft SharePoint Online Standard Developer Guide para personalizar el servicio y para entender mejor la forma de licenciamiento Microsoft_Online_Subscription_Program.

 
Los principales ventajas que podemos obtener de Sharepoint Online son:
  • Nos olvidamos del mantenimiento y su instalación, Sharepoint se aloja en los centros de datos de Microsoft por lo que empezaremos a utilizar el servicio al terminar de aceptar el contrato de subscripción.
  • No podemos realizar despliegues de soluciones, al estar en una plataforma compartida para poder garantizarnos el servicio no podremos subir soluciones wsp ni features. La forma de personalizarlo será mediante Sharepoint Designer.
  • Disponibilidad 24x7, Microsoft nos garantiza la disponibilidad del servicio, se encarga de realizar backups cada 12h y es capaz de restaurarlo por nosotros en caso de necesitarlo.
  • Bajo riesgo de inversión, se adquiere mediante subscripciones que se abonan mensualmente. No necesitaremos de una gran cantidad de dinero para empezar a utilizarlo.
  • Cada usuario debe disponer de una subscripción, por lo que no podremos utilizarlo para crear webs públicas.
  • Geodistribución.

 

Disponemos de tres portales distintos:

  • Customer portal, desde el que gestionamos las subscripciones de nuestra empresa.
  • Adminsitration center, configuramos los servicios contratados, usuarios que van a poder trabajar, creamos las colecciones de sitio.
  • My  company portal, está destinado a los usuarios finales, desde donde tendrán acceso a los servicios que les hayan habilitado desde el Administration center.

Para ver las imágenes podéis entrar en http://geeks.ms/blogs/mcortes/archive/2009/04/30/sharepoint-online.aspx

En estos días iremos viendo como personalizarlo y las opciones que dispondremos para configurar el servicio.

martes, 28 de abril de 2009

Sharepoint faulting module kernel32.dll

Al entrar en mi aplicación web de repente me encuentro con que me empieza a pedir las credenciales continuamente y nunca llega a cargar la aplicación hasta que al final me devuelve un error. Al entrar en el log de eventos de windows me encuentro con el siguiente error:

Tipo de suceso: Error
Origen del suceso: .NET Runtime 2.0 Error Reporting
Categoría del suceso: Ninguno
Id. suceso: 1000
Fecha:  28/04/2009
Hora:  17:34:03
Usuario:  No disponible
Equipo: SAPDGACMAD-602
Descripción:
Faulting application w3wp.exe, version 6.0.3790.3959, stamp 45d69572, faulting module kernel32.dll, version 5.2.3790.4062, stamp 4626451c, debug? 0, fault address 0x0000000000027d8d.

 

Al entrar en cualquiera de las aplicaciones web de sharepoint incluso la administración central también se producía este error. Lo más curioso de todo es que al abrir la consola de configuración de sharepoint de repente se cerraba!!!.

Lo primero que pensé “bufff, un virus”, después “buffff se ha jodido el framework”.

Después de pasar el antivirus, instalar/desinstalar el FW 3 y el 2, al final se me ocurrió la feliz idea de intentar ejecutar un comando STSADM y al ejecutarlo me devuelve un mensajito del tipo “StackOverFlowException”. Al parecer alguna tarea de administración (Borrar un subsitio desde el Shaepoint Manager) había estropeado la bbdd de configuración.

Por lo que la solución fué cambiar de nombre a la bbdd de configuración de Sharepoint y arrancar el programa de configuración de sharepoint, al no encontrar la bbdd me dejó desacoplar el servidor y volver a configurarlo, pero esta vez con la bbdd restaurada.

 

Lo mejor de todo es que estaba elaborando en ese momento un plan de contingencia, menos mal que fué en un entorno de pruebas.

lunes, 27 de abril de 2009

[Infopath] Resumen

Cierro con este post la temática de este último mes acerca de Infopath orientado al desarrollo como ya hice con [Sharepoint] Introducción al desarrollo.

 

Empezando con Infopath

Introducción al concepto de Infopath

Infopath Form Services y Office Forms Server

Explicación de las distintas versiones y licenciamiento.

Formularios con Infopath

Cómo diseñar formularios y manejar los controles.

[Infopath] Orígenes de datos

Cómo manejar los distintos orígenes de datos.

[Infopath] Mostrar un formulario desde un WebPart

Como configurar el XmlFormView para visualizar un formulario infopath desde un webpart.

[Infopath] Control de selección de usuario

Cómo agregar un control para seleccionar un usuario del dominio.

Programando en Infopath

Cómo empezar a programar con Infopath

Cómo hacer un DrillDown

Post de Álvaro Arias acerca de cómo encadenar combos de selección con Infopath.

[Infopath] Promoción de propiedades

Concepto y ejemplos.

Internacionalización con Infopath

Ejemplos con distintos formatos de fecha y decimales.

 

Recursos

Microsoft Office Forms Server 2007 SDK

TechCenter de Microsoft Office Forms Server

InfoPath Team Blog

InfoPath Forms for Workflows

 

Libros

Designing Forms for Microsoft Office InfoPath and Forms Services 2007

jueves, 23 de abril de 2009

Visual Studio Team Test Quick Reference

El equipo de Rangers de Visual Studio Team System ha publicado en codeplex una guía en modo How to’s para trabajar con los webtest y pruebas de carga.

Los capítulos principales son:

  • SETUP CONSIDERATIONS 9
  • WEB TEST CONSIDERATIONS 14
  • WEB SERVICE TEST CONSIDERATIONS 35
  • UNIT TEST CONSIDERATIONS 36
  • LOAD TEST CONSIDERATIONS 42
  • LOAD TEST RIG CONSIDERATION 56
  • PERFORMANCE DATA COLLECTION AND USAGE 66
  • LOAD TEST RESULTS STORE INFORMATION 73
  • TEST CUSTOMIZATION 76
  • ITEMS CHANGED OR FIXED IN VSTS 2008 SP1 77
  • GENERAL COMMANDS AND TRICKS (NOT VSTS SPECIFIC) 79

lunes, 20 de abril de 2009

Internacionalización con Infopath

La internacionalización en Infopath nos permite diseñar formularios para distintos idiomas y formatos. El problema lo tenemos cuando trabajamos con campos de fecha, decimales o campos moneda. Infopath nos permite definir como se visualizarán estos campos en tiempo de diseño y en ejecución. No es lo mismo “100.2” que “100,2”, tampoco es lo mismo “30/03/2009” que “03/30"/2009”.

Cuando diseñamos nuestra plantilla podemos definir el idioma para todos los controles, esto hará que aquellos controles que hereden de las propiedades definidas en la plantilla se comportarán en función del idioma indicado.

El idioma de la plantilla lo establecemos desde Opciones del formulario > Examinar > Idioma del formulario. Si no especificamos ninguno, por defecto aplicará el definido regionalmente en el equipo sobre el que se ejecute.

Sobre cada control además podemos definir en que formato queremos que se visualice.

Para los campos del tipo fecha podemos mostrar directamente el valor almacenado en xml, indicar un formato específico o que el formato sea el indicado por la cultura regional.

Para los campos de tipo decimal o doble, podemos definir el número de dígitos decimales y el separador de millares.

Para verlo con más claridad he diseñado una plantilla que muestra un campo de tipo fecha y numérico en distintos formatos:

  • El 1º muestra el valor xml
  • El 2º muestra la fecha en función de la zona definida
  • La 3º muestra la fecha en formato DD/MM/YYYY
  • El 4º y 5º muestran un control fecha asociado a un campo del tipo texto.
  • El 6º muestra el valor decimal almacenado en el xml.
  • El 7º muestra con separadores
  • El último muestra sin separadores de millares

En Español:

En Inglés:

Y cómo afecta la internacionalización al xml generado?, si abrimos el xml generado en los dos casos veremos que tenemos un xml similar:

Español:

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.5" productVersion="12.0.0" PIVersion="1.0.0.0" href="file:///C:\Users\Administrador\AppData\Local\Microsoft\InfoPath\Designer2\e706af73eab64283\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?><my:misCampos my:Fecha2="2009-04-24" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-04-20T21:11:49" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="">
<my:Fecha1>2009-04-11</my:Fecha1>
<my:Decimal1>1234567.89</my:Decimal1>
</my:misCampos>


Inglés:

<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.5" productVersion="12.0.0" PIVersion="1.0.0.0" href="file:///C:\Users\Administrador\AppData\Local\Microsoft\InfoPath\Designer2\e706af73eab64283\manifest.xsf" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?><my:misCampos my:Fecha2="2009-04-09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-04-20T21:11:49" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="">
<my:Fecha1>2009-04-15</my:Fecha1>
<my:Decimal1>12345678.67</my:Decimal1>
</my:misCampos>

De modo que si queremos manejar estos valores en los tipos nativos de .NET podemos hacer lo siguiente:

Para las fechas podemos utilizar directamente “DateTime.parse”.

Para los decimales o dobles tendremos que utilizar “double.parse” pero especificando el idioma ingles. Si quisiéramos realizar una validación desde infopath podríamos hacer algo como esto:


public void Decimal1_Validating(object sender, XmlValidatingEventArgs e)
{
if (!string.IsNullOrEmpty(e.NewValue))
{
System.Globalization.CultureInfo en = new System.Globalization.CultureInfo(1033);
double valor = double.Parse(e.NewValue, en);
}
}


Y qué pasa si abrimos un fichero xml generado con una plantilla en un idioma y lo abrimos en otro idioma?, pues que infopath convertirá automáticamente los valores sin lanzar ninguna excepción.

Premio tecnológico Renacimiento 2009

Renacimiento me ha querido premiar con el "Premio tecnológico" 2009 como premio a mi implicación y colaboración desde el punto de vista tecnológico. Esto no quiere decir que sea un premio a la persona con más conocimiento, (hay una gran cantidad de compañeros mucho más cualificados), más bien es un reconocimiento a la actitud, comportamiento ycolaboración con el resto de compañeros y con la empresa.


Renacimiento es una de las empresas punteras en España en tecnología Microsoft, de echo me ha sorprendidola buena imagen que tiene en los sitios por lo sque ido pasando. Para mantener este nivel apartede todos los procedimientos de calidad internos, formación, etc., Renacimiento debe ser capaz de demostrar al resto de empresas que dispone de personas cualificadas. En este aspecto debemos poner de nuestra parte en demostrar que no solo tenemos conocimientos sino que los demás saben que los tenemos. Hoy en día aporta mucho más en compartir los conocimientos que guardarlos para uno mismo.


La participación en blogs,foros y eventos es alguna de las cosas en las que podemos participar, pero más importante que eso es promover cualquier tipo de iniciativa que vaya en el sentido de ayudar a la comunidad o difundir el conocimiento y experiencias. No siempre disponemos de el tiempo que quisiéramos parahacer este tipo de cosas, pero al menos debemos poner todo el empeño posible.


La verdad es que para mí ha sido una sorpresa ya que no sabía ni que existiera, así qué gracias a todos.

domingo, 19 de abril de 2009

[Infopath] Promoción de propiedades

Nos queda por ver como relacionar los formularios infopath con Sharepoint más allá de la visualización. Para ello vamos a ver la promoción de propiedades y como manejar el elemento generado mediante un EventHandler desde Sharepoint.

La promoción de propiedades consiste en extraer los valores de ciertos campos del formulario para utilizarlos en otro entorno como por ejemplo sharepoint, pudiendo manejarlos en vistas, búsquedas, workflows, etc.

Si continuamos con nuestro ejemplo de notas de gasto de los anteriores post, promocionarnos la propiedad del campo “estado” para controlarlo desde un EventReceiver y así controlar que no se pueda editar el documento una vez entregado.

Al guardar los datos de un formulario infopath podremos indicarle que lo haga sobre una biblioteca de documentos de Sharepoint, que llame a un servicio web, que lo envíe por correo o que lo envíe en modo post a a una páginas web. En sharepoint lo guardaremos en una biblioteca de formularios. Al guardar el formulario, infopath creará sobre la biblioteca indicada un fichero xml con los datos introducidos. Podemos entonces asociar a la biblioteca un EvenReceiver, un Workflow o promocionar propiedades.

Asociaremos entonces un EvenReceiver sobre la biblioteca que tenía asociada la plantilla xsn con nuestro formulario. Este EvenReceiver controlará el estado de la nota de gasto de forma que una vez la hayamos entregado no podamos volver a editarla. Hasta ahora no habíamos definido ningún campo “estado” en nuestra plantilla, por lo que ¿cómo lo agregamos para que podamos leer desde el formulario infopath y el EvenReceiver de sharepoint?, pues con la promoción de propiedades. Básicamente consiste en indicar tanto a sharepoint como a infopath que camos del origen de datos principal se va a compartir. Para infopath la propiedad promocionada será como un campo más del origen de datos principal, y para sharepoint corresponderá con una nueva columna en la biblioteca donde se aloje la plantilla xsn.

Abrimos entonces nuestro fichero EjemploNotasDeGasto.xsn en modo edición. Agregamos un campo al origen de datos principal un nuevo campo con el nombre “Estado” del tipo texto, además marcaremos que se pueda editar el campo desde una venta de propiedades.

A continuación publicamos nuestra plantilla sobre una biblioteca de documentos, en esta ocasión lo he publicado como plantilla de una biblioteca de formularios con compatibilidad de explorador. Es importante que antes de publicar indiquéis en las propiedades de la plantilla que determine el nivel de seguridad automáticamente.

Una vez indicada la biblioteca os aparecerá una pantalla con el siguiente aspecto, sobre la que agregaremos una nueva columna sobre la que indicaremos la relación entre la columna de la biblioteca con el campo del origen de datos del formulario infopath.




Una vez publicado nuestra plantilla xsn veremos en las propiedades de nuestra biblioteca una nueva columna:



Con VisualStudio creamos un EvenReceiver y lo asociaremos a la biblioteca de forma que cuando el usuario rellene el campo “Responsable” cambiemos el valor del campo “Estado”.

Pero fijaros que el responsable no es una propiedad promocionada, entonces ¿cómo leemos los datos xml generados por infopath para conocer los valores del Responsable?:

  • Promocionando la propiedad
  • Leyendo los datos guardados por infopath en modo xml

Si abrimos el fichero xml generados por la plantilla encontraremos algo como esto
<?xml version="1.0" encoding="utf-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:Plantilla1-2:-myXSD-2009-03-20T16-27-26" solutionVersion="1.0.0.29" productVersion="12.0.0.0" PIVersion="1.0.0.0" href="http://w2k3r2:17092/FormServerTemplates/Plantilla1_2.xsn"?>
<?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.2"?>
<my:misCampos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-03-20T16:27:26" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="es-ES">
<my:txtNombre>Mario</my:txtNombre>
<my:txtEmail>mcortes@renacimiento.com</my:txtEmail>
<my:txtApellidos>Cortés flores</my:txtApellidos>
<my:txtNumeroEmpleado>338877</my:txtNumeroEmpleado>
<my:grupo1>
<my:grupo2>
<my:txtFecha>2009-04-02</my:txtFecha>
<my:txtImporte>11</my:txtImporte>
<my:tipoDeGasto>Taxi</my:tipoDeGasto>
</my:grupo2>
</my:grupo1>
<my:txtObservaciones></my:txtObservaciones>
<my:gpResponsable>
<my:Responsable>
<my:DisplayName></my:DisplayName>
<my:AccountId></my:AccountId>
<my:AccountType></my:AccountType>
</my:Responsable>
</my:gpResponsable>
</my:misCampos>

Si accedemos por código al objeto SPListItem que representa el elemento almacenado dispondremos de la propiedad “File” que podremos leer abriendo un stream de la siguiente forma:
XmlDocument xmlNotaDeGasto = new XmlDocument();
XmlTextReader
xmlTextReader = new XmlTextReader(properties.ListItem.File.OpenBinaryStream());
xmlNotaDeGasto .Load(xmlTextReader );
Una vez cargado los datos como un XmlDocument accederemos al campo "my:AccountId” para leer el valor. El problema vendrá cuando intentemos acceder por ejemplo con el método “SelectSingleNode”, obtendremos una excepción pidiéndonos un “XmlNamespaceManager”, si lo creamos y lo pasamos a SelectSingleNode obtendremos otra excepción del tipo “unrecognized ‘my’ prefix”. Para solucionarlo crearemos el XmlNamespaceManager de la siguiente forma:
public XmlNamespaceManager InitNamespaceManager(XmlDocument xmlDOMDoc)
{
XmlNamespaceManager xnmMan;

xnmMan = new XmlNamespaceManager(xmlDOMDoc.NameTable);

foreach (XmlAttribute nsAttr in
xmlDOMDoc.DocumentElement.Attributes)

{

if (nsAttr.Prefix=="xmlns")

xnmMan.AddNamespace(nsAttr.LocalName,nsAttr.Value);

}

return xnmMan;

}

Para crear el EvenReceiver he utilizado las extensiones VseWSS 1.3 y el código quedaría una cosa así:

public class NotasDeGastoItemEventReceiver : SPItemEventReceiver
{
public NotasDeGastoItemEventReceiver()
{
}

public override void ItemAdding(SPItemEventProperties properties)
{
ItemUpdating(properties);
}


public override void ItemUpdating(SPItemEventProperties properties)
{
try
{
if
(string.IsNullOrEmpty((string)properties.ListItem["Estado"]))
{
XmlDocument xmlNotaDeGasto = new XmlDocument();
XmlTextReader
xmlTextReader = new XmlTextReader(properties.ListItem.File.OpenBinaryStream());
xmlNotaDeGasto.Load(xmlTextReader);
XmlNode nodoAccountResponsable =
xmlNotaDeGasto.SelectSingleNode("//my:AccountId",
InitNamespaceManager(xmlNotaDeGasto));
string nuevoEstado;
if
(!string.IsNullOrEmpty(nodoAccountResponsable.InnerText))
nuevoEstado =
"Publicado";
else
nuevoEstado = "Borrador";


DisableEventFiring();
try
{
properties.ListItem["Estado"] = nuevoEstado;
}
finally
{
EnableEventFiring();
}
}
}
catch
{
properties.ErrorMessage = "Se ha producido un error que impide la
modificación";
properties.Status = SPEventReceiverStatus.CancelWithError;
}
}





public override void ItemDeleting(SPItemEventProperties properties)
{
if (!string.IsNullOrEmpty((string)properties.ListItem["Estado"])&&
(string)properties.ListItem["Estado"] != "No iniciado" &&
(string)properties.ListItem["Estado"] != "Borrador")
{
properties.ErrorMessage = "La nota de gasto no puede borrarse";
properties.Status = SPEventReceiverStatus.CancelWithError;
}
}





#region "Helper"
public XmlNamespaceManager
InitNamespaceManager(XmlDocument xmlDOMDoc)
{
XmlNamespaceManager
xnmMan;
xnmMan = new XmlNamespaceManager(xmlDOMDoc.NameTable);
foreach
(XmlAttribute nsAttr in xmlDOMDoc.DocumentElement.Attributes)
{
if
(nsAttr.Prefix == "xmlns")
xnmMan.AddNamespace(nsAttr.LocalName,
nsAttr.Value);
}
return xnmMan;
}
#endregion "Helper"

}

Por último nos queda controlar desde el formulario que solo se pueda abrir en modo edición cuando el valor del campo estado no sea “No entregado” o “Borrador, (en este caso no lo vamos a hacer por programación sobre Infopath), bloquearemos los controles usando los “formatos condicionales”. Desde las propiedades de cada uno de los controles desde la pestaña “Presentación” > formato condicional > agregar.

lunes, 13 de abril de 2009

Programando en Infopath

Hasta ahora solo hemos visto de Infopath ha sido desde el diseñador, toca mojarse un poquito con el código. ¿Podemos escribir código en un formulario Infopath para que actúe de acuerdo a una lógica de negocio?, pues sí, para éllo Infopath utiliza las VSTA (Microsoft Visual Studio Tools for Applications). Con VSTA podremos programar en Visual Basic .NET o c# de forma integrada con el formulario que estemos diseñando. Todo lo que desarrollemos generará una dll que irá incrustada en nuestra plantilla xsn. Si utilizamos Infopath Forms Services al subir nuestra plantilla a Sharepoint se desplegará automáticamente una solución wsp de sharepoint con todos los elementos de nuestro formulario y lo mejor de todo es que además deplegará la dll necesaria para ejecutar nuestro código.

Empezando con las VSTA

Lo primero que necesitamos son las VSTA, aunque tengamos instalado Visual Studio las vamos a tener que instalar, si no lo hacemos nos encontraremos un mensaje de error del tipo: “Infopath no puede iniciar Microsoft Visual Studio Tools para aplicaciones”


Para instalarlo necesitaremos tener el Framework 2.0 y habilitar el paquete desde el setup de nuestro infopath u office seleccionando el elemento “Infopath > Compatibilidad con programación .net > Compatibilidad con programación .net para .net framework versión 2.0 > Visual Studio Tools para aplicaciones.



Una vez instalado antes de empezar a tirar líneas debemos pensar donde vamos a alojar el código generado. Desde herramientas > opciones del formulario > programación encontraremos una ventana con las opciones disponibles, en nuestro caso elegiremos el lenguaje .net en el que generaremos el proyecto y el path físico donde se alojará el proyecto de las VSTA.

Este paso es importante ya que por defecto viene en visual basic y en la carpeta “Mis documentos”. Además cuando publiquemos la plantilla se incrustará la dll ya compilada pero no el código del proyecto, por lo que si copiamos a otro equipo solo el xsn no estaremos copiando los fuentes pudiendo llegar a perderlos.

Manejar eventos en infopath

Aunque podemos definir reglas y condiciones desde el diseñador (“no se por qué”) siempre hay alguna condición que debemos escribir mediante código. Usaremos el manejo de eventos de infopath para validar las entradas del formulario.

Continuando con el anterior ejemplo [Infopath] Control de selección de usuario, incluiremos por ejemplo una validación en la caja de importes para controlar que no se introduzcan importes superiores a 1000€. Seleccionando con el botón derecho la caja Programación > Evento Validating.

Al seleccionarlo se abrirá una ventana de visual studio con el siguiente aspecto:



Lo primero que debemos saber es que no un Visual Studio normal, si vamos a la ayuda y vemos la versión veremos que es un Visual studio 2005 especial.

Otra cosa a destacar es que en la ventana de exploración no disponemos de un elemento solución solo disponemos del proyecto dll con las referencias a las VSTA y a infopath. Si luego buscamos en el path indicado para los fuentes veremos que realmente hay un fichero .sln que nos será muy útil.

También destacamos el fichero .snk necesario para que la dll tenga un strongname y pueda registrarse con un publickey.

Vemos también que no disponemos de un evento “Onload” sino que disponemos del método “InternalStartup” desde el que registraremos todos los eventos que desearemos capturar en el formulario en tiempo de ejecución. Esto se debe a que nuestra clase hereda de Microsoft.Office.InfoPath.XmlFormHostItem.

Siguiendo con el ejemplo, vemos que el evento de validación generado recibe un parámetro XmlValidatingEventArgs con la referencia al elemento de nuestro origen de datos principal el cual a generado el evento. En mi caso el ejemplo quedaría:

public void txtImporte_Validating(object sender, XmlValidatingEventArgs e)
{
if(!string.IsNullOrEmpty(e.NewValue))
if (double.Parse(e.NewValue) > 1000)
{
e.ReportError(e.Site, false, "El importe debe ser inferior a 1000€");
}
}

Para probarlo podremos hacerlo desde la opción de ejecución de Visual Studio o desde la vista previa del diseñador del cliente Infopath.

Otro de los eventos que podemos controlar es el del envío de los datos al servidor al hacer Submit. Desde el evento InternalStartup agregaremos una línea del tipo:

EventManager.FormEvents.Submit += new SubmitEventHandler(Form_Submit);

donde “Form_Submit” es el nombre de mi método para capturar el evento. En mi ejemplo voy validar que la suma de todos los importes no supere los 3000€ quedando un código similar al siguiente:

public void Form_Submit(object sender, SubmitEventArgs e)

{

XPathNavigator navigator = MainDataSource.CreateNavigator();

XPathNodeIterator importesSolicitados = navigator.Select("/my:misCampos/my:grupo1/my:grupo2", this.NamespaceManager);

double importeTotal = 0.0;

foreach (XPathNavigator importeSolicitado in importesSolicitados)

{

string stImporte = importeSolicitado.GetAttribute("txtImporte", "");

importeTotal += double.Parse(stImporte);

}

if (importeTotal > 3000.0)

{

e.CancelableArgs.Cancel = true;

e.CancelableArgs.Message = "El importe total de los gastos no debe superar los 3000€";

}

}

Si quisiéramos manejar el evento de carga del formulario utilizaríamos en el InternalStartup algo similar a lo siguiente:

EventManager.FormEvents.Loading += new LoadingEventHandler(FormEvents_Loading);


Manejar los orígenes de datos

Como vimos en el post [Infopath] Orígenes de datos disponemos de varios tipos de orígenes de datos en Infopath.

Para acceder al origen de datos principal utilizaremos la propiedad “MainDataSource”.

Para acceder a los orígenes externos utilizaremos la propiedad DataSources y accederemos a los orígenes mediante el nombre indicado en el diseñador, por ejemplo:

DataSources[“TiposDeGastos”]

Alvaro Arias nos muestra un ejemplo de como hacer un DrillDown de combos con infopath.


Depurar una plantilla infopath compleja

Cuando trabajemos con plantillas con orígenes externos nos será muy difícil depurar directamente desde el cliente infopath. Una alternativa consiste en abrir la solución generada por VSTA directamente desde Visual Studio en lugar desde Infopath, generar la dll en debug y sustituir el assembly, y depurarlo atacando al proceso w3wp.

El fichero sln de la solución lo encontraremos en la carpeta física establecida en la configuración de programación de la plantilla.

Para sustutir el assembly que depliega Infopath Form Services tenemos que buscar la feature instalada físicamente ya que no lo registra en el GAC. Un truco es buscar la característica de colección instalada, darle a desactivar y en la pantalla de confirmación en la url tendremos un parámetro FeatureId con el nombre de la carpeta que contiene nuestra dll a sustituir.

martes, 31 de marzo de 2009

[Infopath] Control de selección de usuario

Cuando diseñamos un formulario para ser utilizado en Infopath Forms Services debemos tener en cuenta que no todos los controles son compatibles con el explorador. Esto se debe a que el cliente de Infopath es mucho más rico que el motor de Infopath Form Service, debemos verificar en el diseño si nuestro control es compatible en modo explorador.

Nos puede surgir el caso en el que el cliente nos solicite que el formulario pueda seleccionar un usuario del dominio, ¿Es este control compatible?, pues sí (a medias), pero debemos agregarlo a los controles personalizados ya que no aparece en la lista de controles estándar.

Desde la ventana de “Tareas de diseño” > seleccionamos agregar u ocultar controles personalizados > agregar… > control activex > contact selector

Para poder utilizarlo tendremos que tenerlo registrado, aunque también podemos hacer que el propio fichero xsn incluya el fichero .cab con la instalación del Activex.

Para que sea compatible con Infopath Forms Service debemos marcar “No incluir un fichero cab”.

En la pantalla siguiente de enlace de propiedades seleccionamos “value”. A continuación indicamos a Infopath como se guardarán los datos, seleccionamos “Campo o grupo (cualquier tipo de datos)”.

Al finalizar dispondremos del control para ser arrastrado al formulario. Solo quedaría asociarlo a un grupo de datos, pero este debe tener una estructura determinada.


En la sección de orígenes de datos “agregamos un campo o grupo” > seleccionamos > grupo > indicamos un nombre de grupo. Repetimos el mismo proceso e indicamos el nombre que representa el registro que se repetirá por cada uno de los controles, no os olbideis de marcar “repetir”. Por último agregamos al anterior grupo los campos de tipo texto: DisplayName, AccountId y AccountType.

Solo quedaría enlazar el control al grupo extensible seleccionando el control y con el botón derecho "cambiar enlace".


Al probar nuestro formulario sobre Sharepoint veremos algo similar a la siguiente imagen:


La entrada original la podéis encontrar en: Using the Contact Selector Control

lunes, 30 de marzo de 2009

[Infopath] Mostrar un formulario desde un WebPart

Siguiendo con el post anterior “[Infopath] Orígenes de datos”, veremos como visualizar un formulario de Infopath desde un WebPart. Recordar que para poder renderizar un formulario necesitaremos de Infopath Services, además tendremos que haber habilitado la compatibilidad del formulario para que se pueda abrir en el explorador, desde la opciones del formulario > Compatibilidad > compatibilidad de explorador > marcaremos “Diseñe una plantilla de formulario que se pueda abrir en un explorador o infopath”.

Utilizaremos el WebPart “XmlFormView” que está alojado en la librería Microsoft.Office.InfoPath.Server.dll. Antes de poder agregarlo debemos asegurarnos que lo tenemos registrado correctamente como safecontrol, agregaremos en el fichero web.config la entrada:

<SafeControl Assembly="Microsoft.Office.InfoPath.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.Office.InfoPath.Server.Controls" TypeName="*" Safe="True" />

A continuación iremos a la galería de elementos web en la configuración de nuestro sitio > seleccionaremos la opción “Nuevo” > marcaremos el webpart “Microsoft.Office.InfoPath.Server.Controls.XmlFormView” > Llenar galería. Esto hará que el webpart esté disponible para ser agregado desde cualquiera de las páginas de nuestra colección.

En la página que deseemos agregar el WP la editaremos y agregaremos el WP con título “XmlFormView”. La primera vez puede que nos muestre un error de infopath diciendo que no tenemos la plantilla adecuada, esto se debe a que todavía no lo hemos configurado y está intentando renderizar el formulario.

Editaremos entonces las propiedades del webpart añadido y en la sección “Enlace de datos” indicaremos el fichero xsn y la librería donde se guardarán los datos xml generados por el formulario.

En la propiedad XsnLocation indicaremos la ruta del fichero xsn, en mi caso he publicado desde Infopath el formulario de notas de gasto en una biblioteca de documentos de forma que la ruta queda: http://w2k3r2:17092/FormServerTemplates/EjemploNotasDeGastos.xsn

Si os aparece siempre el mensaje “Formulario cerrado” verificar el fichero de log de Sharepoint, que tenéis la url correctamente, que habéis indicado una ruta para SaveLocation y la propiedad “EditingStatus”. Aseguraros además que habéis publicado correctamente el formulario desde la administración central y lo habéis activado para la colección actual.


domingo, 29 de marzo de 2009

[Infopath] Orígenes de datos

Con infopath podremos manejar datos procedentes de distintos orígenes: Xml, Una base de datos, un servicio web y una lista de sharepoint.

Para manejar los orígenes de datos iremos al menú Tareas de diseño > Orígenes de datos, siempre tendremos al menos el origen de datos Principal como comentábamos en el anterior post “Formularios con Infopath”. Recordar que el origen de datos principal contiene la estructura del xml que generará Infopath al guardar el formulario.

Para agregar una nueva conexión seleccionaremos “Agregar conexiones de datos…”. Al seleccionar esta opción se abrirá una ventana con las conexiones de los distintos orígenes configuradas. Para agregar un origen de datoa tendremos que configurar primero la conexión y el tipo de acción lectura/escritura.

Los datos sensibles de las conexiones como pueda ser el usuario y contraseña se pueden guardar o bien incrustados en el infopath o en una librería de conexiones. Si incrustamos los datos de conexiones se guardarán dentro del fichero y solo podremos modificarlos editando el fichero xsn dede Infopath. Lo recomendable es que usemos fichero de conexiones, que consisten en ficheros con los datos de conexión y se alojan en sahrepoint, en caso de cambiar algún dato de conexión (por ejemplo al cambiar de entorno), solo tenemos que tocar el fichero de conexión y subirlo de nuevo. 

Leer datos

Agregaremos entonces una nueva conexión e indicaremos que deseamos “recibir datos”, a continuación indicamos desde donde queremos leerlos.

Leer de una base de datos

Mediante esta opción podremos ejecutar una consulta SQL contra una base de datos. Indicamos entonces que queremos leer de una base de datos y agregamos una nueva conexión. En mi ejemplo he creado una tabla con los tipos de gastos en mi SqlServer. La primer vez tendremos que crear un fichero de conexión de datos que se almacenará en nuestro pc, seleccionando la opción “Nuevo origen de datos” indicamos el tipo de conexión, en mi caso “Microsoft Sql Server“ y a continuación los datos de conexión (servidor, usuario, contraseña, etc). En caso de disponer del fichero solo tendremos que seleccionarlo.

Una vez hemos conectado con nuestra bbdd, elegiremos las tablas y campos a consultar o bien editamos nuestra consulta sql.

Por último, podremos indicar si queremos que almacene los datos en el propio fichero xsn y si queremos que ejecute la consulta al abrirse el formulario.

 

Ahora que tenemos configurado nuestro origen de datos, haremos que el control de tipo de gastos muestre los datos de este origen. En las propiedades del control seleccionamos “Buscar valores desde un origen de datos externo” > indicamos el origen previamente configurado. En el campo Entradas seleccionamos la tabla o la entrada de registro que queremos mostrar, en “valor” el campo que contiene valor del elemento seleccionado  y en “nombre para mostrar” el campo con la descripción que visualizará el usuario.

Para verificar que hemos configurado correctamente todo podemos realizar una vista preliminar y comprobar que se cargan todos los datos.

 

Leer datos de un servicio web

Seleccionamos como antes “agregar conexión de datos” > recibir > servicio web, indicamos la url de nuestro servicio web, para el ejemplo voy utilizar los servicios de Sharepoint para leer el contenido de una lista con los tipos de gastos, de manera que la url sería “http://w2k3r2:17092/_vti_bin/lists.asmx?WSDL”. Al darle a “Siguiente” el asistente de conexión mostrará todos los métodos disponibles, para el ejemplo he seleccionado “GetListItems” que corresponde con el método que devuelve todos los elementos de una lista de Sharepoint. Como existe un problema de interpretación de tipos entre Infopath y los servicios de Sharepoint, he necesitado de un servicio web intermedio que tenga una definición de tipos de parámetros que entienda Sharepoint (ver ejemplo : http://wssdev.blogspot.com/2007/06/infopath-use-sharepoint-web-services.html).

Al aplicar el servicio de proxy los tipos los he convertido a “string”, con lo que puedo establecer los parámetros obligatorios desde Infopath con la opción “establecer valor”. Una vez agregado el origen de datos volveremos a configurar nuestro control para que lo utilice. Fijaros que en este caso la estructura XML del origen de datos generada por el servicio es más compleja que la anterior.

Podéis descargaros el código del servicio web intermedio en http://blogs.renacimiento.com/mcortes/Documentos/WebService1.zip

 

 

Insertar Datos

Solo nos queda ver como guardar los datos introducido en el formulario. A este proceso Infopath lo llama “Envío de datos” y disponemos de los siguientes tipos de orígenes de datos: a un servicio web, a una biblioteca de sharepoint, por correo electrónico y a una página ASP.NET. En este caso no disponemos de la opción de una bbdd por lo que si queremos guardarlos en una tabla tendremos que utilizar un servicio web o una página ASP.Net. El problema que podemos encontrarnos si lo hacemos de este modo es que el envío puede que sea de un nuevo elemento o de una actualización, por lo que tendremos que ser nosotros los que detectemos esto.

Si lo queremos guardar en una biblioteca de sharepoint tenemos dos opciones, o bien definimos nuestro formulario como plantilla de una biblioteca o hacemos que el envío se haga hacia una biblioteca independientemente de donde se aloje nuestro formulario.

Para hacer que nuestro formulario aparezca al darle a´l menú “Nuevo elemento” de una biblioteca seleccionaremos la opción de archivo > publicar > en un servidor de sharepoint > indicamos la url.

Para enviar los datos a una biblioteca de documentos, seleccionamos Administrar conexiones de datos > agregar > enviar > a una biblioteca de documentos. Una vez creado el origen de envío indicaremos al formulario que debe usarlo para enviar los datos desde la opción Herramientas > opciones de envío > permitir a los usuarios enviar este formulario > biblioteca de documentos de sharepoint > Seleccionamos nuestra conexión de envío. Esto hará que al visualizar nuestro formulario aparezca una opción con el título “Enviar” y al seleccionarlo enviará el xml generado por infopath a la biblioteca indicada.

 

Ficheros de conexiones de datos

Hasta ahora las configuraciones de las conexiones a nuestros orígenes de datos se han guardado de forma embebida en el fichero xsn. Si ahora tuviéramos que utilizar nuestro formulario en otro entorno tendríamos que volver a editarlo y modificar los datos de conexión. Una forma de evitar esto es mediante el uso de ficheros de conexión, básicamente son ficheros xml con los datos de conexión que tendremos que subir a Sharepoint.

Podemos alojar los ficheros en dos sitios en una biblioteca de conexiones de una colección de sitios específica o en una biblioteca de conexiones de la administración central. Os recomiendo guardarlos en la administración central, aunque dependiendo del tamaño de vuestra granja puede ser recomendable la otra opción.

Para crear un fichero de conexión abriremos la lista de conexiones en “Administrar conexiones de datos” > Convertir > indicamos la url de la biblioteca de conexiones > seleccionamos el tipo de biblioteca de conexión.

Una vez guardado el fichero podéis descargarlo de la biblioteca y editarlo como un fichero xml.

Mi fichero de conexión a la bbdd es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<?MicrosoftWindowsSharePointServices ContentTypeID="0x010100B4CBD48E029A4ad8B62CB0E41868F2B0"?>
<udc:DataSource MajorVersion="2" MinorVersion="0" xmlns:udc="http://schemas.microsoft.com/office/infopath/2006/udc">
    <udc:Name>TiposDeGastos</udc:Name>
    <udc:Description>Format: UDC V2; Connection Type: Database; Purpose: ReadOnly; Generated by Microsoft Office InfoPath 2007 on 2009-03-30 at 01:29:53 by PIGNOISE\Administrador.</udc:Description>
    <udc:Type MajorVersion="2" MinorVersion="0" Type="Database">
        <udc:SubType MajorVersion="0" MinorVersion="0" Type=""/>
    </udc:Type>
    <udc:ConnectionInfo Purpose="ReadOnly" AltDataSource="">
        <udc:WsdlUrl/>
        <udc:SelectCommand>
            <udc:ListId/>
            <udc:WebUrl/>
            <udc:ConnectionString>Provider=SQLOLEDB.1;Password=misgastos;Persist Security Info=True;User ID=misgastos;Initial Catalog=Pruebas;Data Source=w2k3r2;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=PIGNOISE;Use Encryption for Data=False;Tag with column collation when possible=False</udc:ConnectionString>
            <udc:ServiceUrl UseFormsServiceProxy="false"/>
            <udc:SoapAction/>
            <udc:Query>select "IdTipo","Descripcion","Activo" from "dbo"."TiposDeGastos" as "TiposDeGastos"</udc:Query>
        </udc:SelectCommand>
        <udc:UpdateCommand>
            <udc:ServiceUrl UseFormsServiceProxy="false"/>
            <udc:SoapAction/>
            <udc:Submit/>
            <udc:FileName>Specify a filename or formula</udc:FileName>
            <udc:FolderName AllowOverwrite=""/>
        </udc:UpdateCommand>
        <!--udc:Authentication><udc:SSO AppId='' CredentialType='' /></udc:Authentication-->
    </udc:ConnectionInfo>
</udc:DataSource>

 

La forma de subir los ficheros está muy bien explicada en el post de Juan Carlos González enMOSS: Publicación de formularios Infopath…el otro camino!.

 

Podéis descargaros la nueva plantilla en http://blogs.renacimiento.com/mcortes/Documentos/EjemploNotasDeGasto2.xsn

Podéis descargaros el código del servicio web intermedio en http://blogs.renacimiento.com/mcortes/Documentos/WebService1.zip

 

Hasta aquí los orígenes de datos, hay muchas más opciones pero lo que no hay es tiempo, así que os dejo trastear.