Información de entorno de ejecución

Las actividades que realizan trabajo relacionado con la aplicación (a diferencia del trabajo exclusivo del motor de flujo de trabajo, como actividades de finalización de proceso y de ruta) requieren un límite transaccional claro entre los códigos del motor y de la aplicación. También resultan útiles las invocaciones asíncronas entre el motor de flujo de trabajo y la aplicación (p.ej. un usuario no debería tener que esperar mientras el flujo de trabajo transiciona a la siguiente actividad antes de que se le devuelva el control en la interfaz de usuario).

Con este fin, hay tres funciones diferenciadas en una actividad de flujo: start(), execute() y complete(). Tras la finalización de una actividad en la instancia de proceso de flujo de trabajo, el motor de flujo de trabajo llama a la función para continuar con el proceso. Esta función evalúa las transiciones salientes de la actividad para determinar cuál(es) se va(n) a seguir.

Por cada actividad a seguir, se llama la correspondiente función start(). Luego se configuran los datos de instancia de actividad adecuados para esa actividad. Si la actividad se va a ejecutar directamente sin necesidad de mensajería JMS (el API de Java Message Service (JMS) forma parte de Java EE), es decir, siempre se ejecuta una actividad de ruta directamente al no haber trabajo relacionado con la aplicación, entonces en este punto se invoca el método execute(). De lo contrario, se envía un mensaje JMS al ejecutar la actividad especificada (es decir, una actividad automática). El manejador de mensajes de flujo de trabajo resuelve el proceso y la actividad especificados en el mensaje y llama a la función execute() de la actividad.

Después de llamar al código de aplicación para llevar a cabo el trabajo especificado por la actividad, se envía otro mensaje para completar la actividad. De nuevo, el manejador de mensajes de flujo de trabajo resuelve el proceso y la actividad especificados en el mensaje y llama a la función complete() de la actividad. Tras marcar la actividad como completada, se vuelve a llamar la función para continuar con el proceso para resolver el conjunto de transiciones a seguir desde la actividad completada y el proceso empieza de nuevo.