Hay cuatro formas de llamar a otros flujos de trabajo desde un flujo de trabajo. Cada forma de llamar a un flujo de trabajo o flujos de trabajo se representa por un elemento distinto del esquema del flujo de trabajo.

Flujos de trabajo sincrónicos

Un flujo de trabajo puede iniciar otro flujo de trabajo de forma sincrónica. El flujo de trabajo al que se ha llamado se ejecuta como parte integral de la ejecución del flujo de trabajo que llama, y se ejecuta en el mismo espacio de memoria que el flujo de trabajo que llama. El flujo de trabajo que llama inicia otro flujo de trabajo y, a continuación, espera hasta el final de la ejecución del flujo de trabajo llamado antes de empezar a ejecutar el siguiente elemento de su esquema. Normalmente, puede llamar a un flujo de trabajo de forma sincrónica porque el flujo de trabajo que llama necesita la salida del flujo de trabajo llamado como parámetro de entrada para un elemento de esquema posterior. Por ejemplo, un flujo de trabajo puede llamar al flujo de trabajo Iniciar máquina virtual y esperar para iniciar una máquina virtual y, a continuación, obtener la dirección IP de esta máquina virtual para pasársela a otro elemento o a otro usuario por correo electrónico.

Flujos de trabajo asincrónicos

Un flujo de trabajo puede iniciar otro flujo de trabajo de forma asincrónica. El flujo de trabajo que llama inicia otro flujo de trabajo pero continúa ejecutando inmediatamente el siguiente elemento de su esquema sin esperar al resultado del flujo de trabajo llamado. El flujo de trabajo llamado se ejecuta con parámetros de entrada que define el flujo de trabajo que llama, pero el ciclo de vida del flujo de trabajo llamado es independiente del ciclo de vida del flujo de trabajo que llama. Los flujos de trabajo asincrónicos le permiten crear cadenas de flujos de trabajo que pasan los parámetros de entrada de un flujo de trabajo al siguiente. Por ejemplo, un flujo de trabajo puede crear varios objetos durante su ejecución. A continuación, el flujo de trabajo puede iniciar flujos de trabajo asincrónicos que utilizan estos objetos como parámetros de entrada en sus propias ejecuciones. Cuando el flujo de trabajo original ha iniciado todos los flujos de trabajo necesarios y ejecutado sus elementos restantes, finaliza. Sin embargo, los flujos de trabajo asincrónicos que ha iniciado continúan con sus ejecuciones de manera independiente del flujo de trabajo que los inició.

Para conseguir que el flujo de trabajo que llama espere al resultado del flujo de trabajo llamado, puede utilizar un flujo de trabajo anidado o crear una tarea de scripts que recupere el estado del token del flujo de trabajo llamado y, a continuación, recupere el resultado del flujo de trabajo cuando se complete.

Flujos de trabajo programados

Un flujo de trabajo puede llamar a otro flujo de trabajo pero retrasar el inicio de ese flujo de trabajo hasta una fecha y hora posteriores. A continuación, el flujo de trabajo que llama continúa su ejecución hasta que finaliza. Al llamar a un flujo de trabajo programado, se crea una tarea para iniciar ese flujo de trabajo en la fecha y la hora definidas. Cuando el flujo de trabajo que llama se ha ejecutado, puede ver el flujo de trabajo programado en las vistas Programador y Mi Orchestrator del cliente de Orchestrator.

Los flujos de trabajo programados solo se ejecutan una vez. Puede programar un flujo de trabajo para que se ejecute de manera periódica llamando al método Workflow.scheduleRecurrently en un elemento de tarea de scripts en un flujo de trabajo sincrónico.

Flujos de trabajo anidados

Un flujo de trabajo puede iniciar varios flujos de trabajo de manera simultánea anidando varios flujos de trabajo en un solo elemento de esquema. Todos los flujos de trabajo que figuran en el elemento de flujo de trabajo anidado se inician de manera simultánea cuando el flujo de trabajo que llama llega al elemento de flujo de trabajo anidado en su esquema. Cada flujo de trabajo anidado se inicia en un espacio de memoria distinto del espacio de memoria del flujo de trabajo que llama. El flujo de trabajo que llama espera hasta que todos los flujos de trabajo anidados han completado sus ejecuciones para iniciar la ejecución del siguiente elemento de su esquema. El flujo de trabajo que llama puede así utilizar los resultados de los flujos de trabajo anidados como parámetros de entrada cuando ejecuta sus elementos restantes.