You search it, I have it!
Imagina que estás en casa y el grifo de la cocina empieza a gotear … no consigues arreglarlo y ahora tienes que buscar a alguien que venga a arreglarlo!!
Pero no conoces a nadie, tienes que llamar a todos tus amigos, empezar a buscar en internet …. Y cuando quizás encuentras al profesional que te puede ayudar, cómo puedes saber que hará un buen trabajo??!!!
Imagina que estás en casa, no te apetece cocinar… buscas en el típico cajón el papelito del chino habitual que realmente no te gusta mucho pero no conoces muchos otros, y no sabes que han abierto uno nuevo justo al final de tu calle!!
Cuantas aplicaciones necesitas? Cuantas paginas web tienes que consultar para obtener una respuesta?
Para encontrar un restaurante , necesitas instalar una aplicación, o buscar diferentes sitios de internet. De igual forma pasa si necesitas un servicio o un hotel…
Que te parecería ser parte de una comunidad y teniendo en una sola aplicación todo!
Tenlo todo en una sola aplicación: Salesforce1
Comunidades y Salesforce1 pueden hacerlo posible:
Lo buscas? Lo tengo!
Como hacerlo?
Muy simple, he intentado usar “Point- Click – Enhace” todo lo posible. Es decir me he mantenido “Native” en todo lo posible, usando en mayor medida funcionalidad existente de Salesforce y he añadido muy poquito código. Que realmente podría haber omitido en algunas partes pero también quería usar para la muestra los patrones de diseño provenientes de Andy Fawcett (@andyinthecloud) y Stephen Willcock (@stephenwillcock). Una pequeña mezcla de versiones.
(Échale un vistazo a este link para mas información, seguro que te gusta : financialforcedev/ fflib-apex-common)
En mi prototipo he creado una serie de objetos dentro de una organización. Estos objetos me ayudaran a manejar Proveedores de servicios, Restarantes, Pedir Presupuestos, Presupuestos, Pedidos , Revisiones a Servicios y pagos entres los usuarios.
También he usado Flexipages ( la gema oculta de Salesforce1… por ahora, espero que pronto pongan una UI para creación) , que me distribuyen todos los registros relacionados entre si en diferentes Apps.
Por ejemplo una Flexipage Tab es Servicios, la encontras solamente en mobile (intentare crear un post para explicar un poquito mas sobre Flexipages, mientras tanto quizás esta respuesta te ayude un poco a entenderlas un poquito mejor: salesforce.stackexchange)
Dentro de dicha Flexipage Tab,Servicios, lo que podrás encontrar son listas de: Proveedores de servicios, Listas de Cuotas, Listas de pedidos , Calificaciones para Servicios …
Dentro de otra Flexipage Tab, Restaurantes, lo que encontraras será una lista de Restaurantes, Listas de pedidos a dichos restaurantes…
Dentro de otra Flexipage Tab, Hoteles, lo que encontraras será una lista de Hoteles, Lista de Reservas…
¿Cómo se usaría?
Desde Mobile y desde web browser sería accesible. Solamente necesitaras Salesforce1 en tu móvil, para browser simplemente registrarte dentro de la comunidad.
¿Quién usaría esta comunidad?
Tanto el proveedor del servicio para publicar su Servicio , Compañía o Restaurante u Hotel… tanto como el usuario que busca dicho servicio, para comparar servicios , para hacer un pedido de comida, para reservar un hotel, para preguntar una cuota ..
¿Cómo usar la comunidad y la aplicación?
Para ello voy a poner un ejemplo que ayudará a entenderla mejor.
Tengo dos personas en mi ejemplo: una es Pepe el Cerrajero del Barrio y el otra es José nuevo en el barrio, justo se trasladó con su familia a su nueva casita.
Pepe, es un Fontanero muy moderno sus hijas le mantienen a la última en tecnología y tiene un iPhone, en el cual le descargaron la aplicación Salesforce1.
José conoce Salesforce1 y también Salesforce y es miembro de la comunidad de : Lo buscas? Lo tengo!
El primer día en casa y uno de las puertas de la casa no cierra bien, la llave se quedo dentro de la cerradura y no pueden cerrarla. Justo se mudaron y el primer día en casa su familia no estará a salvo! ( bueno es un decir el nuevo barrio es muy tranquilo).
Resulta que unos días antes Pepe entro en la comunidad y registro su servicio:
Desde su móvil hizo click en la acción global : Service Provider ( No te preocupes se verá también en Español , Salesforce lo hace por me, lo “Translate” todo! )
Crea su servicio : Cerrajerías Pepe. Abre y cierra todo lo que esté a su alcance S.L
Los antiguos clientes de Pepe se dieron cuenta que al fin puso su negocio en internet y entraron para revisarlo. Parece que Pepe es bueno en su trabajo tiene una calificación del 92.5%.
Volviendo a José, el cual necesita un cerrajero urgentemente, pide un presupuesto a Pepe. Solamente desde el servicio hace click en la Chatter Action: Request Quote.
Al momento el móvil de Pepe le avisa mediante una notificación que alguien quiere un presupuesto urgente para cambiar la cerradura de una puerta.
Pepe desde la petición de cuota hace click en la Chatter Action asociada: Send Quote, y Evualá! La cuota se ha mandado, la petición de cuota se ha actualizado a enviada y José recibirá al momento una notificación con dicha cuota.
José abre su notificación, desde su notificación se mueve a la quota y Hurra! Le gusta le parece aceptable, además Pepe le ha puesto que puede ir en 20 minutos si acepta la quota. Dicho y hecho, José se va a la acción relacionada con quota: Accept Quote, entra, Acepta la cuota y listo.
Al instante Pepe recibe la notificación que le comunica que su cuota se ha aceptado y tiene un nuevo trabajo que hacer.
Desde el pedido/ Order se va a la acción: Actualizar Pedido (Update order) y actualiza el estado a “Trabajando”, modifica el campo “Detalles” para comunicar a José que se pone en camino.
José, recibe la notificación que le indica que su pedido se ha modificado. Llendo al pedido desde la notificacioón José puede ver que Pepe se encuentra en camino.
Al terminar de arreglar la cerradura Pepe actualiza el pedido a terminado
y a José se le crean dos “Tasks” una para realizar el pago a Pepe y otra para calificar el servicio recibido.
IMPORTANTE, a tener en cuenta: Lo que ves es solamente un prototipo, una idea para mostrar que podriamos hacer con Salesforce1 y comunidades. Luego Lo Buscas Lo Tengo no esta funcionando como tal… pero quién sabe si en un futuro??!!
En estos momentos “Communities” no esta listo para Salesforce1, Winter ’14. Sin embargo las noticias son que en Spring ’14 Comunidades estarán disponibles. Estoy pasando todo mi desarrollo a una nueva organización pre-release Spring 14 y aparentemente esta funcionando. Tengo algunos problemillas con Global Chatter Actions y pequeñas cosillas que me imagino estarán en proceso. Puede que próximamente haga publica la communidad! 🙂
Por ahora nada más, intentaré actualizar con lo que vaya apareciendo y quizás como ya digo hacer pública la comunidad 🙂
Espero que te haya gustado la idea! Nos vemos pronto!
Links que te pueden ayudar para escribir y estructurar el código de la aplicación . Los cuales he usado en esta implementación. Solamente he escrito triggers, no he necesitado nada más, y en triggers lo que hecho ha sido mandar notificaciones y hacer una serie de validaciones. Minima cantidad de código.
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns – Separation of Concerns
Apex Enterprise Patterns – Service Layer
Me ha gustado mucho la idea Carolina, y el ejemplo no puede ser más representativo ;-).
Esperemos que Communities esté pronto totalmente integrado en Salesforce1 para poner en práctica soluciones móviles como ésta que propones.
No había visto antes los “patrones de diseño” que comentas. Les echaré un ojo!
Como siempre, gracias por tu aportación!!
Muchas gracias Jose Luis!!! Ojalá de verdad. Estuve probando en mi pre-release de Spring ’14 que supuestamente debería funcionar pero parece que aun esta en proceso. Pero lo mismo prontito 🙂
Gracias de nuevo!!
Me esta funcionando hoy, no he hecho ningun cambio .. pero oye parece que va. Luego voy a intentar en el siguiente finde hacer publica la comunidad! 🙂
Estupendo!!! A ver si no te da guerra y lo puedes hacer público.