Toda la información de producto en wiki.bizagi.com aplica para Bizagi BPM Suite 9.1.X.
Para las nuevas versiones de Bizagi BPM Suite (10.X y superior) visite la Guía de Usuario.
 

Sub-procesos Multiples

De

<keywords content="keywords"> múltiple, múltiples, sub-proceso, sub-procesos, sub proceso, subproceso, subprocesos, multiples instancias, muchos, varios </keywords>

Contenido

Sub-procesos Múltiples

Image:Modeling the Process10 Image001.jpg Image:Modeling the Process7 Image021.jpg

Bizagi ofrece un Asistente muy sencillo de usar para configurar Múltiple sub-procesos, en los que se permite la creación de varias ocurrencias o instancias del mismo proceso.

Para ilustrar esta funcionalidad piense en un Salón de Clases. En éste hay varios alumnos que deben ser matriculados para que puedan asistir a clases. Se tienen dos procesos: Salón de Clases, donde los estudiantes entregarán sus Solicitudes para ingresar a estudiar, y Matrícula de Alumnos donde cada estudiante debe ser matriculado independientemente.



Antes de comenzar

Para que pueda configurar fácilmente sus múltiples sub-procesos siga los siguientes pasos:

  • Defina y diagrame el Proceso Padre: es el proceso desde donde se crea el múltiple sub-proceso. En el ejemplo anterior el proceso padre sería Salón de Clases.
  • Defina y diagrame el sub-proceso: este es el proceso en donde se llevarán a cabo las actividades de cada instancia creada. En el ejemplo anterior, es Matrículas.
  • Cree la Colección: usando el Asistente de Procesos vaya al Segundo paso de éste y Edite el Modelo de Datos para crear el XPath de la colección. La Colección es la relación que determina que hay muchas instancias (o registros) de algo. En el ejemplo anterior la Colección es la relación entre Salón de Clase y Matrículas.


Es importante aclarar algunos conceptos:

  • El número de instancias creadas puede ser determinado por una constante o por el número de registros en una Colección (relación 1-a-muchos). Los Múltiples sub-procesos sólo aplican para procesos que no son embebidos.
  • Contexto: El contexto de un proceso está definido por dónde se guarda la información y cómo se accede a ésta. Entonces, el contexto es la entidad Principal de Negocio desde donde se construirá cada proceso. En el ejemplo anterior, el contexto del proceso de Salón de Clases es la entidad SalondeClases.

El contexto del proceso de Matrículas de Alumnos es la entidad Matrículas. Si el Múltiple sub-proceso no fuera el Matrículas de cada Alumno sino su aprobación, el contexto de ese proceso sería la entidad Alumno.

  • La configuración básica creará un Múltiple sub-proceso como configuración por defecto. El modo Avanzado permitirá una mayor flexibilidad para casos de negocio avanzados.
  • Los procesos pueden crearse de dos maneras: en Paralelo o Secuencial. La figura del proceso se mostrará de acuerdo a el modo seleccionado.


Paralelo


Secuencial


Configure un Múltiple Sub-proceso básico

Continuamos con el ejemplo del Salón de Clases. En ese ejemplo el proceso padre es Aplicación de Estudiantes y el sub-proceso múltiple es Matrículas de Alumnos. En el Modelo de Datos se ha definido una colección: hay una relación entre SalondeClases y Matrículas. Se puede apreciar que al momento de crear la relación entre dos entidades, automáticamente se crea un atributo en la Entidad Muchos que hace Referencia  la Entidad Uno. Este atributo es clave para poder acceder a atributos del proceso padre desde un subproceso.  


1. Estando en el proceso Padre vaya al primer paso del Asistente de Procesos y seleccione Editar, para editar el proceso padre.



2. Haga clic derecho sobre la figura de procesos donde se configurará el Múltiple sub-proceso. Si la figura aún no es un sub-proceso, seleccione Transformar a sub-proceso. Si la figura ya es un sub-proceso pero no es múltiple selecciones Configurar sub-proceso. El Asistente de sub-procesos será desplegado.



3. Selecciones Múltiple y oprima Siguiente.



4. Seleccione el sub-proceso y oprima Siguiente



5. Para utilizar la configuración Básica para Múltiple sub-proceso, de clic en Siguiente de nuevo. Para opciones avanzadas, de clic en la casilla de Configuración Avanzada en la parte inferior de la pantalla. En este ejemplo serán utilizadas las opciones básicas.


6. Seleccione el XPath de la Colección. Este es el Xpath que relaciona la entidad padre con la coleccion de las instancias que seran creadas cuando se ejecute el múltiple sub-proceso. En este caso, sera : AplicacionEstudiantes.Estudiantes : esta es la colección de Estudiantes en el proceso de Student Enrollment.



7. Clic en Finalizar.

Acceder a Información del Padre desde un Múltiple Subproceso

Tal como se mencionó previamente en este artículo, es posible navegar desde la entidad de Aplicación del múltiple proceso, hasta el proceso padre; a través de los atributos generados automáticamente al crear una relación uno a muchos entre dos entidades.

Continuando con el ejemplo de los alumnos que se desean matricular; al asociar la colección mostrada en el paso 6 de la sección anterior al múltiple supbproceso, en la Entidad de Aplicación del múltiple subproceso (Student Enrollment) se crea automáticamente una relación uno a muchos entre esta entidad de Aplicación y la Entidad Student (que es la entidad que se definió en el Xpath de la Colección).




El poder navegar desde el proceso hijo para obtener información del proceso padre puede ser útil al momento de crear expresiones o formas que requieran acceder a información del proceso padre desde un múltiple subproceso.

En el ejemplo que se presenta en esta sección se desea acceder a dos atributos que están en el proceso padre (Application Date y Documents Ok) al momento de definir las fomas, para mostrarlos como no editables en una de las formas del proceso hijo.

Al momento de diseñar la forma se puede navegar fácilmente a través de los atributos que se crearon automáticamente al momento de crear la relación entre las entidades. En este caso se navega desde la entidad de aplicación del subproceso que es StudentEnrollment (que corresponde al contexto desde donde se crean las formas de las actividades del subproceso), y se continúa a través de los atributos generados al crear las relaciones uno a muchos de las entidades en el modelo de datos del proceso. Se navega por Student, StudentApplication (que corresponde a la Entidad Padre), y de allí de accede a los atributos deseados.  



Al crear y asociar una expresión a una actividad dentro del múltiple subproceso es muy sencillo navegar hasta la Entidad de Aplicación del proceso padre y así poder acceder a los atributos de esta Entidad. En la imagen a continuación se muestra como se puede navegar de manera similar a como se hace al crear una forma (a través de los atributos generados al crear relaciones uno a muchos).

  



Configuración Avanzada de Múltiple sub-proceso

La opción avanzada de Múltiple sub-procesos en el Asistente tiene propiedades especiales para usuarios avanzados o casos de negocio con condiciones especiales.

  • Los usuarios podrán configurar el numero de instancias a crear, no solamente utilizando una colección sino también un numero fijo almacenado en un atributo.
  • También es posible seleccionar como sera ejecutado el sub-proceso, creando instancias al mismo tiempo o de una en una.
  • Los usuarios también pueden configurar como el proceso padre se comparta de acuerdo a la finalización de las instancias creadas de los sub-procesos.


Si espera a que todos terminen para continuar, o si solamente espera a uno, o si continua cada vez que una instancia termine y así en adelante.

La siguiente parte explica estas propiedades.

XPath de la Colección


Es el XPath que relaciona la entidad del proceso Padre con la entidad de la Colección desde la cual se crearán las múltiples instancias.

Número de Instancias

Es el número de ocurrencias que el Múltiple sub-procesos crearía, de acuerdo a la cantidad de objetos encontrados en la colección, o definidos por un número. Registros en la Colección: Depende de cuántos items existen creados en la Colección Constante Entera: Es un número fijo Atributo Entero: En un atributo tipo Entero que hace parte del modelo de datos.

Limpiar Instancias Previas

Cuando está seleccionada esta opción, todas las instancias de la colección se re-crearán en el caso de que el proceso padre ingrese nuevamente en el Múltiple sub-proceso.

Es decir, si por algún motivo un caso en un proceso entra más de una vez al mismo múltipe sub-proceso, por defecto las instancias de la colección que ya fueron usadas para crear un caso del múltiple, no se vuelven a usar. Sólo se crearán casos del múltiple para las instancias que no hayan abierto ya un caso. La funcionalidad de Limpiar Instancias previas, si está seleccionada, ignora el comportamiento por defecto y cuando se re-ingresa al múltiple se crean de nuevo TODAS las instancias, sin importar si estas ya fueron creadas.

Modo de Ejecución

Determina si las instancias del sub-proceso se crean todas al mismo tiempo (Paralelo) o si se crean una a la vez (Secuencial)

IMPORTANTE:

  • Si el Modo Secuencial esta seleccionado, entonces no existirá Modo De Salida. Solamente el modo Paralelo habilitara el modo de salida.
  • Si la opción Agrupar Por esta habilitada, solamente Modo De Ejecución en Paralelo estará disponible.

Usar Agrupamiento

Hay algunos casos en los que los múltiples sub-procesos deben ser creados agrupando por atributos de la colección. El número de sub-procesos creados depende de los valores diferentes de dichos atributos.

En nuestro ejemplo del Salón de Clases, si el múltiple sub-proceso necesita ser agrupado por mujer y hombre, solamente se crearán dos instancias del sub-proceso: una para hombres y otras para mujeres.

La imagen siguiente muestra como de una colección de tres estudiantes, solamente se crean dos casos, uno para las mujeres y otro para los hombres.




Para agrupar instancias de un subproceso tenga en cuenta que la colección a la cual se aplicará el agrupamiento debe estar asociada a la entidad del subproceso que se lanzará por cada grupo. Igualmente se requiere que el proceso padre y el subproceso tengan diferentes entidades de contexto, por lo que la entidad del subproceso no puede ser la misma entidad a agrupar.

Para agrupar instancias de subproceso siga los pasos que se describen a continuación:



1. Defina la entidad del subproceso. Recuerde que para poder agrupar subprocesos la entidad de subproceso no puede ser la misma entidad a agrupar. En este caso definiremos una entidad llamada grupos para el subproceso Agrupar estudiantes.



2. Configure el subproceso como subproceso múltiple en las opciones de configuración de subproceso.




3. Una vez seleccionado el diagrama asociado para el subproceso, seleccione la opción propiedades avanzadas.



4. Seleccione la colección que desea agrupar. En este caso agruparemos por la colección Estudiantes.



5. En la última pantalla del asistente, seleccione la opción "Agrupar por". El asistente le solicitará definir la colección a agrupar, en este caso “Estudiantes”. Una vez lo haga, el asistente le advertirá que debe existir una relación entre dicha entidad y la entidad del subproceso. Dé clic en aceptar para establecer dicha relación automáticamente. Luego dé clic en siguiente.





6. Seleccione los atributos por los que desea realizar el agrupamiento. Debe seleccionarlos desde la parte izquierda y luego dar clic en las flechas para pasarlos o quitarlos de la parte derecha. Agruparemos por género. Luego dé clic en Finalizar




Al ejecutar el proceso usted verá que no es posible acceder a la información del proceso padre debido a que no se hace un mapeo automático de los datos, es decir, no existe una relación entre la entidad del subproceso y la entidad del proceso padre sino únicamente entre el proceso padre y la entidad agrupada. Es necesario entonces definir la relación faltante.

Para lo anterior diríjase a la vista de Asistente, dé clic en entidades, entidades maestras y luego sobre la entidad del proceso padre. Una vez se desplieguen las sub-opciones de dicha entidad, dé clic derecho sobre la opción “Atributos” y luego en “Nueva relación”



Defina una relación de uno a uno entre la entidad del proceso padre y la entidad del subproceso. En este caso la relación se establece entre la entidad StudentApplicants y Groups.


Adicional a esto es necesario tomar la relación entre el proceso padre y la entidad agrupada y basarse en ella para establecer la relación faltante. Para ello definimos una Expresion a la entrada de la primera actividad del subproceso que obtenga el id de la entidad de contexto del padre y lo setee en la entidad del subproceso.




En este caso la expresión sería la siguiente:

var idParent=<Groups.Students[1].StudentsApplication> 

<Groups.idStudentsApplication>=idParent


Una vez hecho esto, usted podrá acceder a los datos del contexto del proceso padre normalmente.


IMPORTANTE :

  • Esta opción esta disponible cuando la entidad de la colección difiere de la entidad de negocio del sub-proceso. Si ambas entidades son la misma, el múltiple sub-proceso no podrá ser agrupado.
  • Si la opción Agrupar por esta seleccionada, el modo de ejecución va a ser Paralelo

Entidad Relacionada o Agrupar En Colección

Cuando la entidad de negocio del sub-proceso difiere de la entidad Colección, el asistente mostrara uno de estas opciones. Entidad Relacionada o Agrupar En Colección

El campo "Entidad Relacionada" sera mostrado si la Colección no esta agrupada(utilizando la opción Agrupar Por). Si la colección esta agrupada, el campo "Grupo En La Colección" sera mostrado, por que se requiere una relación uno-a-muchos para agrupar los registros de la colección en diferentes sub-colecciones. Normalmente, la entidad Colección y la Entidad De Negocio del Múltiple Sub-proceso son las misma entidad, pero algunas veces no. Por ejemplo, un proceso donde antes de Matricular Estudiantes, estos deben ser aprobados. El proceso Aprobar Estudiantes tendrá Estudiantes como si entidad de negocio. Sin embargo, en el proceso de Matricular Estudiantes, la entidad Colección es Estudiantes, pero la entidad de negocio del sub-proceso es Matricula[Enrolment]. En este caso la entidad del sub-proceso es diferente de la entidad Colección.

Modo de Salida

Determina el comportamiento de la saluda del Proceso con respecto al Proceso Padre.


StandAlone: El proceso padre continua con la siguiente actividad tan pronto el sub-proceso está creado, sin esperar a que éste termine. El patrón de Secuencia no aplica en este caso pues no depende del proceso padre, es decir, si el proceso padre termina, los sub-procesos seguirán abiertos. IMPORTANTE : Esta opción no sera mostrada si el modo de ejecución "Secuencial" ha sido seleccionado. Solamente en el modo de ejecución Paralelo.

Integrado: La ejecución del sub-proceso es requerida antes de que el proceso padre pueda continuar con la siguiente actividad. Este comportamiento puede ser comparado con el patrón en donde una actividad B no puede ser ejecutada hasta que una actividad A sea completada. El modo Integrado tiene cuatro opciones de acuerdo a las necesidades de cada negocio.

  • Todos los Tokens: Todas las instancias creadas del sub-proceso se sincronizan y solo hasta que TODAS hayan terminado, el proceso padre puede continuar.
  • Cada Token: Al finalizar CADA sub-proceso el proceso padre crea un Nuevo token y continúa su flujo. La actividad que siga después del sub-proceso se realizará tantas veces como sub-procesos se hayan creado. Es importante tener un claro entendimiento de esto pues es necesario sincronizar el proceso en algún punto con una Compuerta Exclusiva usada como Convergencia.
  • Un Token: El proceso padre continuará a la siguiente actividad cuando el PRIMER sub-proceso haya finalizado.
  • Definido por Expresión: El proceso padre continuará de acuerdo a una expresión, o regla de negocio.


Ejemplo I Múltiple Sub-procesos

Un cliente puede solicitar varios productos en un Proceso de Solicitud de Préstamo. Sin embargo, cada uno de ellos debe ser desembolsado por separado. El sub-proceso múltiple instanciará un proceso de Desembolso [Disbursement] para cada producto solicitado. Una vez todos los desembolsos han sido completados, el proceso Solicitud de Préstamo continuará

<videoflash>_feK8Ca8MUU|640|505|</videoflash>


Las siguientes imágenes muestran un proceso de Solicitud de Préstamo con tres productos. Cada uno de ellos crea un sub-proceso de Desembolso [Disbursement] .




Multiple sub-procesos Ejemplo con Propiedades Avanzadas

Un cliente puede solicitar varios productos en un Proceso de Solicitud de Préstamo. Los productos deben ser desembolsados por separado de acuerdo al tipo de crédito: tarjeta de crédito, Prestamos, etc.

  • El múltiple sub-proceso va a crear una instancia de Desembolso para cada tipo de producto solicitado. Por esto, se utilizara la opción Agrupar Por, y se seleccionara Tipo De Producto.
  • Una vez que todos los procesos de Desembolso han sido completados, el proceso de Solicitud De Prestamos continuara. Para esto se va a seleccionar el modo de salida "Esperar Todos los Tokens"

Observe que el modelo tiene tres entidades: La entidad del proceso padre : Solicitud La entidad de la colección : Productos (Solicitud De Producto) La entidad del sub-proceso : Desembolsar Producto Para poder utilizar la opción Agrupar Por, la entidad de la colección y la entidad del sub-proceso deben ser diferentes como en este caso. La relación entre Solicitud De Producto y Desembolso de Producto serán creadas automáticamente.



1. Seleccione las Opciones Avanzadas en el asistente y de clic en Siguiente. Luego, seleccione el proceso de Desembolso.



2. Seleccione la Colección



3. Para crear el proceso de Desembolso para cada tipo de producto, sin importar el numero de productos, se debe definir un atributo para agrupar. Seleccione la casilla con la opcion Agrupar por. El modo de Ejecución sera seleccionado por defecto. Ahora, de clic en la opción Agrupar En Colección para crear la relación entre la entidad Proceso (Desembolso) y la entidad de la colección (Productos) Luego, de clic en Siguiente

  


4. Seleccione los atributos para la opción Agrupar Por. Seleccione Tipo De Producto para este caso. Luego, de clic en Finalizar.



Multiples Sub-Procesos Ejemplo con creación secuencial

Un salón de clases de segundo grado matricula los estudiantes de acuerdo a su apellido. Por ello, se usará el modo secuencial de Ejecución. De esta manera, cada caso será creado en orden alfabético. el siguiente es el modelo de datos



1. Seleccione el proceso Matricula (Enrollment)



2. Seleccione Opciones Avanzadas en el asistente y de clic en Siguiente.


Image:Multiple subprocesses Image003.jpg


3. Seleccione la Colección: Estudiantes Ademas, seleccione el numero de instancias : Items en la colección. En este caso, la colección ha sido creada ya en el proceso. Clic en Siguiente.



4. Seleccione el modo de Ejecución Secuencial. Luego, de clic en la entidad Relacionada para crear la relaciona entre Matricula (Enrollment) y Estudiantes (Students).



5. Seleccione el atributo para ordenar las instancias. En este caso, se va a seleccionar el atributo Apellido. De esta forma solamente una instancia sera creada al tiempo. Cuando finalice, la siguiente sera creada y así sucesivamente en orden alfabético.

Clic en Finalizar


<comments />