Escribir un proceso recursivo BPEL

Ahora La recursividad es un patrón de programación clásica, y, en teoría, debería ser bastante sencillo para un proceso para el sistema. Sin embargo, a primera vista no es tan evidente.

La cuestión aquí es que la forma en que un BPEL Process dice en voz alta a otro proceso es arrastrar un Link Partner a su BPEL Process y luego usar el servicio Examinador de seleccionar el proceso de despliegue que se desea llamada.

Por supuesto, con nuestro escenario, la primera cuestión que golpeó es que aún no hemos implementado el proceso como todavía estamos a escribir en él! Lo obvio de hacer aquí es crear un proceso trozo, con la base y recibir una justa respuesta de operaciones definidas y luego desplegar el talón. Esto funciona muy bien, ahora podemos seleccionar el proceso en el 'Service Browser "y terminar la aplicación del proceso.

Sin embargo, el siguiente problema se produce cuando tratamos de volver a implementar el proceso terminado. Aquí el despliegue falla con un error que no puede validar el WSDL para el Link Partner. El asunto aquí es que, como parte del proceso de implementación que son "sobre-escribir" la versión antigua trozo del proceso, con una nueva versión (ya que queremos mantener el número de versión de la misma).

La forma BPEL PM para alcanzar este objetivo, es un-instalar la versión anterior del proceso, antes de implementar la nueva versión. Como parte del despliegue, el motor BPEL valida el WSDL para todos los enlaces incluidos nuestros socios de la ONU desplegadas recientemente la versión del proceso y como resultado no!

Afortunadamente, existe una sencilla evitar. En primer lugar crear e implementar el proceso de sub como antes, a continuación, una vez desplegado ir a la consola de BPEL y seleccione el proceso desde el tablero de instrumentos. A continuación, seleccione la ficha WSDL y haga clic en la dirección de la ubicación de WSDL.

Esto abrirá un explorador que contiene el WSDL para el proceso de BPEL, guarde el archivo en el sistema de archivos local (Archivo-> Guardar como en IE) como. wsdl archivo. Ahora, cuando usted crea su Link Partner en el proceso, en lugar de utilizar el 'Navegador' el uso de servicios en "Examinar WSDL archivos de su sistema local de archivos 'y seleccione el archivo WSDL que acaba de guardar.

Nota: Cuando se le solicite hacer una copia local especificar ' sí ».

Desde aquí se podrá aplicar e implementar el proceso de BPEL sin ningún problema.

Ejemplo

He creado un proceso simple ejemplo, basado por supuesto en el ejemplo factorial clásico. Puede descargar este aquí.

Consideraciones de implementación

El único inconveniente de este enfoque es que el archivo WSDL contendrá ahora la ubicación de punto final para el servicio dentro de la misma. Así es que iban a implementar el proceso en un servidor diferente que sería un error en tiempo de ejecución.

Así que hay que modificar el archivo WSDL en tiempo de despliegue de manera que el punto final refleja el nombre y el número de puerto donde el proceso es en realidad se va a desplegar. La forma más sencilla de hacerlo es actualizar el script de manera que la hormiga de forma automática lo hará por ti.

Pensamiento Final

Ahora, en teoría, podría haber anidado increíblemente procesos que utilizan este enfoque, sin embargo le aconsejo es una mala práctica y es probable que tenga consecuencias en el rendimiento.

Por ejemplo, si nos quedamos el proceso para elaborar factorial factorial 50, que se traduciría en proceso de casos 50. Ahora bien, si espera que manejar 1000 proceso que se ejecuta en paralelo, esto daría lugar a 50.000 casos el proceso - por lo que el número real de instancia de proceso podría aumentar de manera muy dramática.

Así que se recomienda utilizar este método con precaución para asegurarse de que no dé lugar a un aumento dramático en el número total de instancias de proceso.

No hay comentarios:

Publicar un comentario