Office Business Applications (OBA): Office Agranda su Oficina

 Hoy  se realizó en Microsoft Chile el tradicional Architect Forum (una reunión de arquitectos de software donde se debate, a lo largo de una mañana, un tema específico). Tuve el honor de que me invitasen a participar, en forma remota, los arquitectos de la subsidiaria: Alejandro Pacheco (Pacachú) y Martín Cabrera (Tincho). Sólo 15 minutos, al final del evento, para mostrar las novedades del sitio corporativo de Arquitectura MSDN que dirijo pero, principalmente, comentar lo relevante de 2007 Office desde la perspectiva de un arquitecto de software

Y lo relevante de 2007 Office son, sin lugar a dudas, las Aplicaciones de Negocio Office (Office Business Applications, u OBA). La mano es la siguiente

 

Figura 1. Evolución de las Aplicaciones de Negocio
 
  • Office había sido, en sus primeras versiones, una suite con cuatro productos: Word, Excel, Powerpoint y Project. Algunas ediciones más pulenta fueron incorporando Outlook, Access, Visio, y algún que otro regalito más. Estas primeras versiones de Office fueron convirtiendose en un socio inseparable de los usuarios finales de computadoras personales, tanto a nivel de negocios como a nivel hogareño, logrando hoy un market share definitivamente considerable
  • En un relanzamiento del Office, estos últimos años, lo conocemos ya definitivamente más crecido de la suite que supo ser. Ahora Office era "Office System". Esto es, no sólo las aplicaciones tradicionales de la suite, sino también servidores como Project Server, Exchange y fundamentalmente el servidor de espacios colaborativos Sharepoint Portal Server
  • Particularmente la versión 2003 de Office marca un nuevo hito más: hasta antes de esta versión, Office venía siendo programable a nivel de macros, mediante una utilidad conocida como Visual Basic for Applications, o VBA. VBA era una versión limitada del lenguaje de programación Visual Basic, aquel que llegó hasta su versión 6. Pero con el lanzamiento de la plataforma .NET y especialmente de Visual Studio 2003, surgió un agregado conocido como Visual Studio Tools for Office (VSTO). Esto significaba un cambio mayúsculo: ahora podíamos programar extensiones a Word y Excel, ya no como macros limitadas a un set de clases básico y no extensible, sino con toda la potencia de la plataforma .NET disponible. Cualquier componente que quieras crear podía ser accedido desde Office, además de la API de colecciones, ADO.NET, llamadas a Servicios Web… Lo que sea que se te ocurra, podía ser activado desde un documento Word, una planilla Excel, e incluso llevar y traer resultados a los mismos. Por el lado del servidor, Sharepoint también podía ser extensible a través de webparts programables en ASP.NET. Cada webpart era un componente reusable, que graficamente representaba una porción rectangular de página web (Nota: para los que trabajaron con Java, una webpart es un Java portlet). Sharepoint era capaz de componer páginas completas a partir de estos componentes reusables, y hacerlos interoperar (integración a nivel de portal). Es decir, tomar info del contexto de algunas webparts y usarlo como input de otras. Este es un ejemplo de aplicación compuesta (composite application)
  • Todos estos avances de Office se extienden y consolidan en la versión 2007, dando lugar a un nuevo rango de aplicaciones SOA: las Office Business Applications (OBA) que te mencioné al principio. Una aplicación OBA usa el lado cliente de Office -como te contaba más arriba, ya instalado hoy en un considerable número de escritorios-, y a través de servidores Office como Exchange o Sharepoint, es capaz de acceder a las aplicaciones de negocio (Line of Business, o LOB) tales como el CRM, el ERP, los sistemas de Ventas, Compras, Facturación, etc, para consolidar datos y procesos de todos ellos en el escritorio del usuario


Figura 2. Vamos a SOA? Las OBA de 2007 Office te llevan

Veamos características particulares de estas OBA:

  • Outlook 2007. Todo empezó con un proyecto interno que tuvo Microsoft años atrás. Elixir era el nombre del mismo. Elixir eran unas extensiones .NET sobre Outlook 2003 para poder componer un CRM sobre sus propios paneles. En la versión 2007, esto se oficializa con VSTO. Ahora es posible acceder al modelo de objetos de Outlook, de modo de crear, junto a las típicas carpetas Inbox, Deleted Items, etc, otras carpetas adicionales en forma programática, y poblar a estas no con mails sino con documentos(assets) definidos por nosotros. Con Windows Forms de .NET podemos definir formularios especiales para completar o desplegar esos documentos, a la par que ellos pueden ser enviados a usuarios involucrados en el flujo de trabajo (workflow) ya sea vía mail, o simplemente dejarlos salvados en el espacio colaborativo Sharepoint (el cual, como veremos, también permite gatillartriggering-flujos). Pensá qué ventajoso sería que alguien de tu organización te envíe un mail contandote un dato importante que supo acerca de una necesidad que un cliente le manifestó, y que vos puedas allí mismo cargar la Oportunidad (un documento) con ese cliente. Pensá qué bárbaro es que, una vez que la salves, las personas que tengan que estar involucradas según el flujo de trabajo aplicado en esas ocasiones, reciban por mail el documento que llenaste, y vos no te tengas que preocupar de enviarles un mail para contarles que "cargué la oportunidad número tal, por favor vayan a fijarse". Outlook te permitiría contener, en este ejemplo, una carpeta predefinida "Clientes". Esa carpeta se llenaría -por ejemplo mediante la invocación de un servicio web a un sistema LOB– con la lista de tus clientes. Y a su vez, si lo definís así, podrías ver en cada uno las oportunidades pendientes, etc. Todo al alcance del Outlook
  • Open XML. Tanto Word como Excel, como sus tipos de documentos asociados son integrables a cualquier aplicación. Estas dos aplicaciones, al igual que el Outlook, tienen todo un modelo de objetos disponible para -nuevamente mediante .NET– llevar su funcionalidad hasta donde sea necesario. Los documentos ahora pasan a tener una separación límpida entre lo que es su aspecto (layout, estructura) y su contenido semántico. Los nuevos tipos de archivo, .docx y .xlsx, son en realidad archivos .zip conteniendo una serie de documentos XML adentro. Hoy mostré en público cómo, abriendo con el WinZip, un documento Word, podemos abrir especificamente el archivo XML que tiene el contenido semántico. Este formato XML de Word y Excel se llama Open XML y fue sometido a la ECMA para estandarización. En conclusión, los documentos ahora pueden ser precargados, accedidos o poscargados en forma programática. A la vez que pueden enviarse a Sharepoint para desencadenar nuevos workflows. Así, los desarrolladores pueden intervenir en forma automátizada sobre documentos como quizás nunca antes lo habían hecho
  • Word 2007 y Excel 2007. Ambas aplicaciones son extensibles, permitiendo la definición de formularios para la carga de los metadatos del documento, con barras laterales sensibles al contexto (esto es, al campo del formulario que se está ingresando) de manera tal de poder ofrecer información relacionada (últimos movimientos de una cuenta, tablas código-descripción, …, lo que se te ocurra). Aunque la info esté en un sistema externo, si es accesible vía servicios web, da por hecho que la podés tener presente en Office y Excel
  • Sharepoint 2007. Analistas de negocio, no técnicos, pueden definir flujos básicos de administración de contenido mediante Sharepoint Workflow Designer. Más que nada nos permite tomar un conjunto de condiciones en base a valores de los metadatos, y a partir de allí poder tomar acciones que nuevamente involucran, ante todo, a los metadatos. Ejemplo, si la fecha de revisión no está en blanco, el documento está en estado "Revisado", etc. Ahora, claro, y si necesitamos flujos de trabajo más complejos, qué. Para esos casos la respuesta seguirá pasando por un desarrollo "ad hoc". La buena noticia es que "Orcas", la nueva versión de Visual Studio 2005, viene con un pan bajo el brazo: una API para programar flujos conocida como Windows Workflow Foundation (Windows WF). Esta es una API potentísima a la que ya me referí en un post anterior. Es parte constituyente de Windows Vista y es público que la futura versión de Biztalk Server se apoyará en ella. Este motor de flujos se ejecuta dentro de la plataforma .NET y se compone de actividades. Las mismas pueden, mediante servicios web (Windows Communication Foundation, o WCF) acceder a back-ends de línea de negocio
  • Catálogos de Datos de Negocio (Business Data Catalogs o BDC). No importa en qué back-end estén los datos, o cómo estén organizados: Sharepoint 2007 los puede acceder sea que estén en una base de datos, o mediante servicios web ya que es posible definir metadatos lógicos, y asociarlos con el repositorio que sea, mediante el mecanismo de acceso que sea. La ventaja de estos BDC es que Sharepoint expone estas entidades lógicas en un front-end unificado, pero con respaldo en los back-ends originales. El usuario los puede modificar directamente desde la interfaz web de Sharepoint, o consumirlos desde aplicaciones de escritorio
  • Excel Services. Te pasó alguna vez de tener una súper planilla Excel con las fórmulas ya listas y probadas, y tener que construir una aplicación que te dé lo mismo, pero tener que implementar a mano mucho de lo que Excel te daba tan naturalmente? Yo me acuerdo clarísimo el ejemplo de un cotizador de créditos que tenía que hacer para una financiera chilena, donde ponías como argumento de entrada un monto (el del préstamo), una tasa de interés y un plazo y tenía que calcular el valor cuota a pagar mensualmente para cancelar el capital y el interés todo junto en ese lapso. El algoritmo era por convergencia, es decir: en cada iteración te ibas arrimando más, usando el error de la estimación anterior para ajustar la nueva. Sin contar todos los detalles, me acuerdo que Excel era capaz de decirme al toque ese valor cuota, gracias a la función financiera PPMT(tasa, período, pagos por período, …). Llegado el momento me acuerdo haberme cuestionado si no sería más fácil, desde mi aplicación, abrir un Excel en forma programática, cargar los parámetros y aplicar a fórmula en alguna celda para capturar de allí el resultado. Bueno, hoy mis ruegos parecen haber sido oídos en Redmond porque ahora es posible acceder vía Servicios Web a una planilla remota, manipulándola para que lo mismo q nos hubiera devuelto a nosotros mortales, se lo exponga a nuestras aplicaciones (.NET, a un formulario en Word, etc). La flamante clase ExcelService es el proxy o cliente que nuestra aplicación necesita para invocar los servicios web que Excel Services expone (con una veintena de métodos para abrir planillas (OpenWorkbook()), dejar un valor o fórmula en una celda (SetCell()) o levantarlo (GetCell()). Visto en toda su dimensión, que aplicaciones externas puedan nutrirse de funciones ya disponibles en Excel, a la par que alimentar ciertos resultados, nos puede servir para implementar rápidamente tableros de control (score cards) siempre actualizados. Esto último abre la puerta a poder aplicar cierto Minado de Datos (Data Mining) básico pero a la vez potente

En resumidas cuentas, 2007 Office nos ofrece

  • Inteligencia de Negocios (Business Intelligence)
  • Colaboración entre personas que trabajan con información
  • Administración de Contenido (Content Management)
  • Integración de Procesos a escala Empresarial
  • Búsquedas, aunque no me explayé sobre esto, un potentísimo motor de búsqueda capaz de rastrear información en páginas web o documentos Office


Figura 3. Arquitectura de una Aplicación de Negocios basada en Office (OBA)

Los puntos de integración, a nivel de datos, son

  • OpenXML
  • Servicios Web
  • Bases de datos

Los puntos de integración a nivel de procesos, según dijimos, están disponibles a través de

  • Workflows
  • E-mail

Ahora, como arquitecto que sos, realmente te es relevante esto? Deberías prestarle atención a este hecho de poder planear la arquitectura de una aplicación basándote en bloques de construcción provistos por componentes y servidores Office? La respuesta no necesariamente es sí siempre, pero lo sería cuando los procesos de negocio que tenés que modelar son

  • Colaborativos
  • Orientados a documentos (la orden de compra, etc)
  • Analíticos
  • Involucran manipulación de la información

Epílogo
Ahora, si querés profundizar un poco másPor dónde empezar? En el Equipo de Estrategia de Arquitectura de Microsoft Corp, Javed Sikander, Director de Estrategia de Arquitectura Industrial lanzó hace unos meses atrás una página, en el portal de arquitectura, sobre Office 2007 para Arquitectos. Dicha página ofrece varias cosas entre las que te recomiendo, para comenzar

El sitio se completa con una selección de webcasts, que te van a venir fenómeno para armar pruebas de concepto, artículos, podcasts a cargo de Ron Jacobs, etc. Fundamental, suscribite al RSS de Office 2007. Después no digas que no te avisé   ;-D

Esta entrada fue publicada en Software Architecture. Guarda el enlace permanente.

2 respuestas a Office Business Applications (OBA): Office Agranda su Oficina

  1. paulo dijo:

    Yo lamentablemente no he podido desarrollar aplicaciones para Office, por que uso Visual Studio 2005 Standard, la trial que pedí de VSTO no llego nunca así que sigo con las ganas, pero la verdad como cuentas en el post, las aplicaciones se están desperdigando por todos lados,  las OBA son un ejemplo de ello, también creo que pasara lo mismo con los gadgets, por ahí vi unos que te reporta las alertas de Microsoft CRM, por último la incorporación de Open XML y XPS es un golazo, ahora con dos líneas de código podes mostrar un XPS en WPF, que más se puede pedir.

  2. Soy un alumno de programación, y me han puesto a hacer un proyecto en OBA, pero no se por donde empezar, les pido el favor me digan de algún video-Tutorial para guiarme un poco.
    Muchas gracias por su ayuda

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s