Flexqueue: Liberación de Batch Apex

Hace un tiempo que tuve la oportunidad de trabajar con una nueva funcionalidad aun en “piloto” que posiblemente el año que viene vea la luz ( siempre Safe Harbor 🙂 ) . Dicha funcionalidad es Flexiqueue.

¿Qué es Flexiqueue?

Flexiqueue es el nombre corto para Flexible Queue, cola flexible. Flexiqueue nos va a permitir lanza ¡más de 5 procesos Batch a la vez! Como lo lees, hasta ahora solamente podíamos tener 5 procesos Batch por Organización/ Entorno, sin embargo cuando esta nueva funcionalidad vea la luz podremos lanzar hasta un total de 100 procesos a la vez en la misma organización/entorno.

Pero importante, quizás estamos pensando en estos momentos que dichos ,100 procesos, van a entrar en proceso de ejecución, es aquí donde tengo que matizar, ya que solamente 5 procesos como hasta ahora van a ser ejecutados paralelamente y los restantes 95 se quedarán en estado de espera.

 ¿Qué podemos hacer mientras dichos 95 procesos están en estado de espera?

Como sabemos por ahora los procesos batch se ejecutan en el orden en que son lanzados ( no como @future), sabemos que el primer proceso batch que se ha llamado es el primero en entrar en ejecución ( al menos eso nos han dicho 😉 )

Pues es aquí, en esta espera que cuando … recibimos una llamada y necesitamos que uno de los proceso batch que están en espera sea el siguiente en entrar en ejecución, ¡no podemos esperar! Lo necesitamos ¡YA! , ¡Quiero lanzar mi proceso Batch! ( Exactamente igual que Jonah Jameson cuando dice “I want Spiderman!!” , pues eso nosotros queremos nuestro proceso Batch ya ya ya! )

Con Flexiqueue, podemos tenerlo, podemos re-ordenar los procesos Batch que están en espera para poner al principio de la lista el que deseamos que sea lanzado primero.

Todo ello lo haremos en una nueva UI la cual nos permitirá re-ordenar procesos Batch.

Esta nueva UI que se encuentra bajo el menu: Apex Flex Queue

Screenshot 2014-11-23 15.12.28

¿Entonces, vamos a tener dos UIs y dos tablas para representar los procesos Batch?

Sí, tendremos dos UIs , una para poder re-ordenar los procesos que se encuentran a la espera

Screenshot 2014-11-23 15.13.08

 

Y otra para poder cancelar aquellos procesos que se están ejecutando.

Screenshot 2014-11-23 15.13.29

Y no, solamente tendremos una tabla, exactamente como antes para preguntar y controlar los procesos batch: AsyncApexJobs 

¡Ojo! Como seguramente habéis notado , he dicho que puedo abortar procesos que están ejecutándose en estos momentos… entonces ¿quiere decir eso que no voy a poder parar/ abortar los procesos que están en la cola a la espera de ser ejecutados hasta que no entren en ejecución?

Como digo esto es un piloto, no se me permite abortar procesos a través de la UI pero lo que si puedo es parar/abortar cualquier proceso usando : System.abort(BatchId).

Seguramente para cuando se haga reléase de esta funcionalidad también se pueda abortar a través de UI.

¿Qué nos quedaría por pedir?

¡Queremos poder re-ordenar a través de código!! Queremos tener un método una API, algo que nos permita en nuestros desarrollos poder re-ordenar, tener el control sobre los procesos batch sin necesidad de hacer esta reordenación manualmente. Pues bien, en el piloto que trabajé no me fue posible, pero en conversaciones con Salesforce , dicha llamada/método/API esta en el “roadmap” con lo cual ¡también la tendremos!

 

… pero ¡Atención! ¡Cuidado! Con un gran poder vienen grandes responsabilidades…

 caution

Debemos tener en cuenta cuando se debe hacer dicha reordenación porque podemos caer en el error que re-ordenar y re-ordenar y re-ordenar … (hasta el infinito y mas allá ) y que alguno de los procesos batch que están en la cola nunca se ejecuten. Así que cuidado!

Además podría ocurrir que alguno de los procesos batch sea dependiente de otros en cadena y si re-ordenamos dejaríamos sin terminar un proceso que alguno de nuestros clientes necesite…

Una seria de escenarios que debemos tener en cuenta a la hora de hacer dicha reordenación.

Para terminar os dejo el link de la sesión que hice en Dreamforce donde también hay una pequeña demo de cómo Flexiqueue funciona.

¡Muchas gracias!!¡Y hasta pronto!!

 

3 thoughts on “Flexqueue: Liberación de Batch Apex

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s