corner_overlay

Programación con Apex: el producto de un creador de herramientas de Salesforce pasa del procesamiento por lotes al tiempo real

Apex code sigue estando en fase de comprobación preliminar, pero Glenn Wilson de la compañía CRMfusion de Toronto ya lo ha puesto a funcionar creando un prototipo de aplicación que está en vías de convertirse en un producto. Con el nombre de DupeBlocker, esta herramienta de eliminación de duplicados en tiempo real estará lista para su publicación en cuanto se publique el Apex code.

Apex code, que es el primer programa de programación multiusuario y On Demand del mundo, aún se encuentra en las fases de comprobación preliminar. Sin embargo, algunos desarrolladores de Apex ya han comenzado a programar. Entre ellos se encuentra Glenn Wilson, fundador de CRMfusion Inc., que se unió a developer.force.com en cuanto oyó hablar de él. En las siguientes semanas, y mientras dividía su tiempo con otros proyectos, Wilson creó el prototipo de un producto al que llamó DupeBlocker, que identifica los registros duplicados de salesforce.com a medida que se introducen y siempre que se modifican. Al hacerlo, Wilson demostró también el poder y potencial del propio Apex code.

Wilson oyó hablar por primera vez sobre el Apex code en Dreamforce 2006. "En seguida me di cuenta de que esa tecnología ofrecía algo muy valioso a nuestro proceso de desarrollo. La mayoría de las aplicaciones de AppExchange utilizan un modelo de datos dentro de salesforce.com, usando S-Control junto con JavaScript para ejecutarse en el navegador. Sin embargo, como nuestras aplicaciones necesitaban más potencia de procesamiento, en su lugar utilizamos la API de Apex para crear aplicaciones con base de cliente que se conectaran con salesforce.com mediante SOAP." Una cuestión de especial relevancia era la potencia de procesamiento necesaria para las herramientas de eliminación de duplicados de CRMfusion, que debían localizar y fusionar rápidamente miles de duplicados.

Sin embargo, Wilson nunca se sentía suficientemente satisfecho ofreciendo sólo soluciones con base de cliente, ya que su funcionamiento no seguía el enfoque On Demand de salesforce.com. Para conseguir una mayor integración CRMfusion se planteó incluso alojar sus propios servidores, pero su costo era prohibitivo.

Con Apex code, por fin podemos ejecutar nuestro propio código en el entorno multiusuario de salesforce.com. Como resultado, pudimos crear DupeBlocker, nuestra principal herramienta de comprobación de eliminación de duplicados en tiempo real. Esta herramienta examina los datos a medida que se introducen y los admiten, los prohíbe o los etiquetan con una advertencia y ofrece diferentes opciones para fusionar los registros.

CRMfusion ofrecerá DupeBlocker a los clientes que ya se han interesado por el producto insignia de la compañía: DemandTools for AppExchange, un conjunto de 15 módulos de aplicaciones con base de cliente que se utiliza para manipular los datos de Salesforce y AppExchange. CRMfusion creó el conjunto en Microsoft .NET Framework y presentó el producto en Dreamforce 2004.

"DemandTools puede conseguir cosas bastante asombrosas", asegura Wilson, "entre las que se incluyen la eliminación de duplicados, la comparación de ID y las actualizaciones masivas. Más de 1.000 compañías, entre las que se encuentra la propia salesforce.com, utilizan ya la herramienta, que hasta ahora ha actualizado miles de millones de registros de Salesforce. Las ventas de DemandTools han aumentado de 300.000 dólares en 2005 a más de 1,2 millones de dólares en 2006, y se espera una venta de al menos 2 millones de dólares para este año.".

De los lotes al tiempo real

Las funciones de eliminación de duplicados de DemandTools se ofrecen actualmente como herramientas de "limpieza" posteriores al procesamiento. La función de eliminación de duplicados de una sola tabla, por ejemplo, se ejecuta en una base de datos de salesforce.com para comparar entre sí prospectos, contactos o cualquier otro objeto consigo mismo. Otras herramientas pueden encontrar los duplicados existentes entre prospectos y contactos o entre prospectos y cuentas. En todos los casos, los duplicados se eliminan mediante una fusión en masa de registros.

Con Apex code, Wilson vio la posibilidad de detectar los duplicados en tiempo real, antes de que se introduzcan en la base de datos. "El procesamiento por lotes nos convertía en algo así como la oveja negra del mundo de salesforce.com", asegura Mark Esdale, vicepresidente de desarrollo comercial de CRMfusion. "Con Apex code, conseguimos lo que en el mundo de calidad de los datos se denomina "solución de cuarta generación", en la que el filtrado, la normalización y todas las demás tareas de calidad de los datos se realiza cada vez que un usuario toca un registro. Se acabaron los días enteros dedicados a la limpieza de bases de datos."

CRMfusion anunció la aplicación DupeBlocker desarrollada en Apex, que incluye un vínculo a una demostración en línea de cuatro minutos.

"Esperamos realizar la comercialización en cuanto Apex code esté disponible", asegura Wilson. "Una vez que nuestros clientes instalen DupeBlocker, probablemente no volverán a crear ningún duplicado."

 

Apex code: De la idea al prototipo en 120 horas justas

Wilson tardó 120 horashombre en desarrollar el prototipo de DupeBlocker. Trabajando solo en su oficina de Toronto, terminó un mes después del anuncio de Apex code, mientras seguía dirigiendo su compañía de 2 millones de dólares. "El aprendizaje del código era sencillo, porque no es más que Java combinado con SOQL. Es decir, si sabes escribir código Java y consultas SOQL para actualizar objetos de salesforce.com, puedes crear Apex code. De esta forma nos basamos la lógica comercial existente de nuestros productos de negocio para entrar rápidamente en el campo comercial y ofrecer un prototipo en funcionamiento."

Esa lógica comercial se encuentra en el centro de DupeBlocker. "La creación de una herramienta de eliminación de duplicados es complicada porque mi concepto de duplicado puede ser diferente del tuyo: cada compañía tiene una idea distinta del término", afirma Wilson. "Porque, en realidad, ¿qué es un registro duplicado? ¿tienen que ser idénticos todos los campos? ¿qué pasa si los nombres de compañía difieren, pero la dirección es la misma? Y siempre puede estar el caso contrario. Nuestro enfoque se basa en una mezcla de lógica compleja y la capacidad del usuario de personalizar la definición."

Sin embargo, una vez que se ha conseguido la lógica comercial, el desarrollo en sí es muy directo. "Tras activar una cuenta de desarrollador de Apex, descargué el complemento de Eclipse para poder tener un entorno de desarrollo en el que trabajar. Después convertí nuestro código desde C#, fue muy sencillo. Por supuesto, hay que conocer algunos matices. Apex contiene reguladores integrados que evitan que una sección de código entre en un bucle infinito. Así que tuve que aprender a programar a su alrededor. Y como Apex code es interpretativo, tuve que aprender cuántas declaraciones de secuencia de comandos podía crear antes de tener que actualizar un objeto en concreto. Pero la transferencia real del código de .NET a Apex sólo consistía en volverlo a redactar con una sintaxis similar a la de Java. Y lo que se refiere a las consultas SOQL, no tuve que cambiar nada en absoluto."

El desarrollo de DupeBlocker correo ahora en paralelo con la especificación final de Apex code. "Aún hay ciertas lagunas por rellenar; por ejemplo seguimos esperando expresiones regulares. Pero cuando Apex code esté listo, nosotros lo estaremos también."

 

"La mejor decisión comercial que he tomado"

La carrera de programación de Wilson tuvo un comienzo muy atípico. Con un título en ingeniería de minería, se dedicó a ese sector hasta que pasó a trabajar nueve años como ingeniero de ventas en la compañía pionera en el diseño asistido por ordenador, Autodesk. Fue programador aficionado hasta que en 2001 se dedicó a ello profesionalmente con el lanzamiento de CRMfusion. Wilson cuenta con experiencia principalmente en C y .NET, con ciertos conocimientos de Java gracias a haber trabajado con JavaScript.

El primer encuentro de Wilson con salesforce.com tuvo lugar tras desarrollar herramientas para un complicado sistema CRM en línea que luego adquirió Siebel (que, a su vez, fue adquirido por Oracle). "Cuando eso ocurrió pensé que era el momento de apostar por otro caballo, y Salesforce ya galopaba para situarse a la cabeza de carrera. Fue la mejor decisión comercial que jamás he tomado. Pronto me di cuenta de la rapidez con la que mejoraba la API, cada pocos meses se hacía más rápida y eficiente, con un sólido equipo de asistencia y un creciente ecosistema de desarrolladores. Como propietario de una pequeña organización, creo que es asombroso que una compañía tan grande esté deseando ayudar: ‘Aquí tiene el Kit de desarrollo de software, estamos a su disposición para los problemas técnicos y, por cierto, hay una feria de muestras en la que podría darse a conocer entre nuestros clientes'. Fue impresionante."

"Con Developer Force de salesforce.com, siempre ejecutas a la versión más reciente, con acceso a la versión de vista preliminar para poder realizar pruebas. Si tienes alguna pregunta, puedes plantearla en alguno de los foros, y recibir respuestas tanto de los ingenieros de salesforce.com como de otros desarrolladores. Es muy distinto de .NET, donde puedes acudir a un millón de sitios con millones de respuestas distintas. Es una comunidad centralizada, creciente y muy cohesionada en la que todos están encantados de ayudar."

Developer Force ofrece a los desarrolladores todo lo que necesitan para construir, programar, integrar y compartir aplicaciones On Demand, incluyendo una cuenta de Developer Edition de salesforce.com con todas las funcionalidades, muestras de código, foros de debate, seminarios web y otros recursos.

 

Apex code le abre muchas puertas

Para continuar con su andadura, Wilson planea mantener el prototipo de DupeBlocker sincronizado con las nuevas actualizaciones de Apex "de forma que cuando se anuncie formalmente Apex code, podamos ofrecer una herramienta que le ayude a eliminar duplicados de cuentas, contactos y prospectos en un entorno en tiempo real". Aparte de ésta, ve muchas otras oportunidades en Apex, aunque no está dispuesto a mostrar sus cartas.

Apex permite infinidad de posibilidades ya que, por primera vez, se trabaja con una funcionalidad en tiempo real en los servidores de salesforce.com. Esto implica que podré crear un único flujo de código que puede extenderse para ayudar a cientos o miles de organizaciones. Apex es un potente entorno de desarrollo que va a cambiar radicalmente la forma en que la gente desarrolla soluciones de CRM en línea.

Wilson cree que Apex también transformará salesforce.com. "Si miras el potencial de Apex de aquí a dos años, salesforce.com participará en una parte importante de la infraestructura comercial. salesforce.com ya es un magnífico sistema de CRM, un excelente sistema de PRM [gestión de relaciones con los socios] y un excepcional sistema de atención al cliente. Es increíblemente rápido, flexible y multiusuario. Pero con su potente lenguaje de programación, salesforce.com asume una nueva función de extraordinaria expansión. Como desarrollador, me ofrece una infraestructura de inmensos recursos y bajo costo, que puedo convertir en prácticamente cualquier cosa que quiera. salesforce.com se ha convertido en una compañía electrizante, que ofrece un ingrediente básico que puedes canalizar en un millón de aplicaciones creativas.

"Más adelante podrías, por ejemplo, escribir en Apex una aplicación financiera al completo o todo un sistema de MRP al que acceder mediante un navegador desde cualquier parte del mundo. No creo que exista una plataforma de inicio mejor en la que crear aplicaciones."

A otros desarrolladores de aplicaciones que estén considerando Apex code, Wilson les sugeriría empezar por un estudio básico de mercado. "Empiecen por hablar con los administradores de salesforce.com para conocer los desafíos y puntos conflictivos, ya que cualquiera de ellos podría ser un producto potencialmente comercializable. En segundo lugar, visiten ideas.salesforce.com para conocer las sugerencias que los usuarios de salesforce.com proponen para mejorar el sistema. Seleccionen una o dos ideas que parezcan demasiado complejas o especializadas para incluirse como parte de la aplicación principal de salesforce.com, y empiecen a programar.

Desde el punto de vista del desarrollo, empezar es fácil. Sólo hay que configurar una cuenta de Developer Force, descargar Eclipse y el complemento de Apex asociado y empezar con la programación. Los foros de desarrolladores son una forma estupenda de conseguir ayuda y aprovechar ideas de otros desarrolladores. En la mayoría de los casos, se tienen respuestas en unas horas."

 

¿Desea obtener más información?

La mejor forma de empezar es seguir los pasos de inicio rápido en Force.com.

 

Ver todas las historias de éxito de Force.com