
Gestión del ciclo de vida de subprocesos BPEL
Un proceso que se crea e inicia por otro proceso es conocido como un subproceso. La manera en que puede gestionarse el ciclo de vida de los subprocesos depende de cómo están modelados estos procesos.
A fines de modularidad y reutilización, a menudo es razonable implementar uno o varios pasos de la lógica de negocio como un proceso diferenciado e invocar dicho proceso desde el proceso principal. Además, un subproceso puede iniciar otro proceso. Esto puede conducir a una jerarquía de instancias de proceso. Cuando se despliegan estos procesos, todas las plantillas de proceso de la relación de proceso a proceso deben desplegarse en la misma base de datos de Business Process Choreographer.
Un subproceso puede tener una relación de igual a igual o una relación de padre a hijo con el proceso que llama. Esta relación determina el comportamiento de un subproceso cuando se invoca una acción que gestiona el ciclo de vida para el proceso que llama. Las operaciones de ciclo de vida abarcan la suspensión, reanudación, terminación, supresión y compensación. En una relación de padre a hijo, las operaciones que gestionan el ciclo de vida del proceso sólo pueden realizarse en instancias de proceso de nivel superior.
- Igual
- Un proceso de igual se considera un proceso de nivel superior.
Un
proceso de nivel superior es una instancia de proceso que no ha sido invocada
por otra instancia de proceso, o sí lo ha sido pero tiene autonomía de igual. Si el subproceso forma parte de una relación de igual a igual, las operaciones de
ciclo de vida en la instancia de proceso que llama no se propagan a la instancia
de subproceso.
Un proceso de larga ejecución que se crea e inicia con una interfaz unidireccional se considera un proceso de igual. Se pasa por alto su atributo autonomy durante la ejecución.
- Hijo
- Si el subproceso forma parte de una relación de padre a hijo, las operaciones
de ciclo de vida en la instancia de proceso padre se aplican a la instancia de
subproceso. Por ejemplo, si la instancia de proceso padre se suspende, todas las instancias
de subproceso con autonomía de hijo se suspenden también. El proceso hijo debe
haber finalizado cuando devuelve el control al proceso padre,
es decir, la última operación de un proceso hijo debe ser su respuesta al
proceso padre que ha efectuado la llamada. Compruebe que todas las vías de
acceso posibles en la lógica de proceso finalizan con una actividad respooner como la última operación de la vía de acceso.
Si el padre ha terminado, debe esperar hasta que hayan terminado todos los procesos hijo. Si la actividad invocar que ha llamado al proceso hijo caduca, se omite, se fuerza para reintentarla o se fuerza para que termine, el proceso hijo termina primero. Mientras el proceso hijo está terminando, la actividad invocar permanece en estado en ejecución hasta que el proceso hijo alcanza el estado terminado.
Un microflujo siempre se ejecuta como un proceso hijo, es decir, se pasa por alto su atributo autonomy.
Una relación de padre a hijo sólo se puede establecer entre procesos que interactúan directamente dentro de un módulo, o a través de límites de módulo utilizando la importación o exportación SCA. Si otro componente SCA intercepta esta interacción, puede impedir que se establezca una relación de padre a hijo, por ejemplo, un componente de correlación de interfaces que se conecta entre los dos componentes de proceso.