false
castellano
yes
https://www.ejaramod.com/search
https://www.ejaramod.com/2021/09/BPMN-Compuerta-cst.html
https://www.ejaramod.com/2021/09/BPMN-Compuerta-cst.html
item
https://www.ejaramod.com/
default
default
default
default
default
texto
×

Tabla de Contenido

Más

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England.

London is the capital city of England. London is the capital city of England. London is the capital city of England.

Glosario

Más

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Preguntas Frecuentes

Más

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Búsqueda

Más

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Acerca de

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Declaración

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

Tokyo is the capital of Japan.

×
×
×
×
×
Introducción Elementos Actividades Tareas Subprocesos Eventos Compuertas Calles Artefactos Datos Conectores Diagramas
Introducción Elementos BPMN Actividades Tareas Subprocesos Eventos Compuertas Calles Artefactos Datos Conectores Diagramas BPMN
Este texto es reemplazado por el contendio de id=tableofcontents
Modeling Languages - BPMNTM
Modeling Languages

Compuertas BPMN

Compuertas BPMN

Una Compuerta controla la divergencia y la convergencia de los Flujos de Secuencia en un Proceso. Es decir, determina cómo se separa un Flujo en uno o varios caminos, y cómo posteriormente se unen esos caminos.

Tradicionalmente las Compuertas han sido usadas para describir decisiones binarias. BPMN extiende su uso para diferentes tipos de comportamiento tanto divergente como convergente.

Una Compuerta se dibuja con un rombo de línea delgada. Dentro del rombo se coloca un Marcador que indica el tipo de Compuerta.

Ejemplo sencillo con compuerta exclusiva. Explicación sencilla.


Compuerta Exclusiva

Explicación más completa en términos de Tokens. Explicar que es un Token y hacer el enlace.

Ejemplo sencillo con compuerta paralela. Explicación sencilla.


Compuerta Paralela

texto.


Expresión Condicional

Una Expresión Condicional (o Expresión Lógica) es una declaración sobre los ítems (normalmente datos) que maneja el Proceso, y que puede ser verdadera o falsa en un determinado momento. Por ejemplo: "la factura está aprobada", o "el producto tiene fallas".

El los distintos ejemplos usaremos la palabra "Condición" para referirnos a una "Expresión condicional".

En BPMN las Condiciones se usan en los Flujos Condicionales que salen de algunas Compuertas (Exclusivas, Inclusivas y Complejas), y también de Actvidades. También se usan en Actividades Iterativas para indicar cuando debe terminar un ciclo.

Cuando el Proceso es Ejecutable, las Condiciones deben estar escritas en un lenguaje formal, por ejemplo: XPath u OCL. Si el Proceso no es Ejecutable se puede usar lenguaje natural, pero el modelador debe cuidar que toda Condición esté escrita de manera tal que el lector del diagrama pueda determinar si éste es verdadera o falsa, según sea el estado de los datos al momento de evaluarla.


Las Compuertas no representan "trabajo"

Se considera que una Compuerta no tienen ningún efecto sobre el desempeño del Proceso (costo, tiempo, recursos, etc.). Las Compuertas se realizan de manera instantánea, a diferencia de las Actividades que describen el trabajo realizado por el Proceso.

Distinguir entre compuertas divergentes y convergentes.

Advanced

BPMN-Specification-text. BPMN-Specification-text. BPMN-Specification-text.

BPMN-Specification-text. BPMN-Specification-text. BPMN-Specification-text.

Tipos de Compuertas

Una Compuerta tiene dos dimensiones:

  1. Tipo: indica la estrategia usada para unir o separar los Tokens que fluyen por la Compuerta. Hay cinco Tipos: Exclusiva de Datos, Paralela, Exclusiva de Eventos, Inclusiva y Compleja. Un Marcador interno muestra el Tipo de la Compuerta.
  2. Configuración: indica si a la Compuerta convergen (llegan) o desde la Compuerta divergen (salen) varios Flujos de Secuencia. La cantidad de Flujos de Secuencia Entrantes y Salientes determina si la Compuerta es Convergente, Divergente, o ambas.

Tipos de Compuertas

TipoIconoConvergenteDivergente
Exclusiva de Datos Los Tokens entrantes pasan al Flujo de salida a medida que van llegando, uno tras otro. Cada Flujo de salida tiene una condición. El Token entrante continúa por el Flujo de salida cuya condición es verdadera.
Paralela Espera que llegen todos los Tokens por los Flujos entrantes, entonces los sincroniza, es decir, los une en uno solo que continúa por el Flujo de salida. El Token entrante se divide y sale por cada uno de los Flujos de salida.
Exclusiva de Eventos Mismo comportamiento que la Compuerta Exclusiva de Datos. Cada Flujo de salida tiene un Evento de Captura. El Token entrante continúa por el Flujo cuyo Evento se activa primero.
Inclusiva Espera que llegen todos los Tokens por los Flujos entrantes que están activos, los une en uno solo que continúa por el Flujo de salida. Cada Flujo de salida tiene una condición. El Token entrante se divide y sale por cada uno de los Flujos cuya condición es verdadera.
Complex El modelador indica la condición de activación, por ejemplo, "basta que lleguen dos Tokens por cualquiera de los cinco Flujos entrantes". Luego los Token son sincronizados, y continúan como uno solo por el Flujo de salida. Mismo comportamiento que la Compuerta Inclusiva.

Compuerta Exclusiva


Divergente
Desvía el Flujo del Proceso por uno de entre varios caminos posibles. El desvío se basa en Condiciones asociadas a cada Flujo de Salida.
Convergente
Los Tokens que arriban van pasando hacia la salida uno tras otro sin sincronización.
Marcador Interno: "X" (es opcional).

Esta sección contiene aspectos generales de esta Compuerta, para una descripción detallada dirígase al artículo Compuerta Exclusiva.


Compuerta Exclusiva - Ejemplo


Nótese que la decisión se ha tomado en la Tarea Evaluar desperfecto, al llegar a la Compuerta ya se sabe si hay que reparar o no: la Compuerta Exclusiva Divergente solo señala el camino a seguir.

La Compuerta Exclusiva Convergente hace que el Flujo siga un camino único que conduce a la Tarea Instalar pieza.

Opcionalmente, la Compuerta Exclusiva puede usar una "X" como marcador interno. La recomendación es ser consistente en el uso de este marcador. Es decir, todas las Compuertas Exclusivas deben tener el marcador o ninguna debe tenerlo.


Configuración Divergente

La Compuerta Exclusiva Divergente tiene la siguiente Configuración:

  1. Un Flujo de Secuencia de Entrada.
  2. Dos o más Flujos de Secuencia de Salida.
  3. Opcionalmente, un único Flujo por Defecto. Este Flujo se marca con una línea diagonal y es Incondicional. Si tiene una Condición, es ignorada.
  4. Cada Flujo de Secuencia de Salida, excepto el Flujo por Defecto, tiene una Condición.
  5. Todas las Condiciones son independientes.
  6. Los Flujos de Secuencia de Salida, excepto el Flujo por Defecto, están ordenados. (Este orden no se refleja en el diagrama, es una propiedad interna de la Compuerta.)

Compuerta Exclusiva - Configuración Divergente


Nótese que la Compuerta no tiene asociada una Condición, son los Flujos de Secuencia de Salida los que tienen Condiciones.

El Flujo por Defecto actúa como un "mecanismo de escape", sirve para asegurar que el Proceso pueda continuar en caso de que todas las Condiciones de los demás Flujos sean falsas.


Configuración Convergente

Como toda Compuerta Convergente, la Compuerta Exclusiva tiene dos o más Flujos de Secuencia de Entrada y un Flujo de Secuencia de Salida.


Compuerta Exclusiva - Configuración Convergente


Compuerta Paralela


Divergente
Separa el Flujo del Proceso en varios caminos paralelos, es decir, se siguen todos al mismo tiempo sin verificar ninguna Condición.
Convergente
Sincroniza varios caminos paralelos, es decir, espera que haya un Token en cada Flujo de Entrada para activarse.
Marcador Interno: "✚"

Esta sección contiene aspectos generales de esta Compuerta, para una descripción detallada dirígase al artículo Compuerta Paralela.


Compuerta Paralela - Ejemplo


Después de ejecutar Recibir pedido se procede a realizar tres Actividades en paralelo: Realizar cobro, Ensamblar producto y Planificar despacho. Cuando las tres han terminado, en cualquier orden, se ejecuta Despachar producto.

El que las Actividades se "realicen en paralelo" no significa, necesariamente, que se ejecuten al mismo tiempo. Puede que el encargado de realizar una Actividad se demore más en comenzarla. Además, una Actividad pude tomar más tiempo que otra, por lo que puede continuar mientras otra aún no termina.

En el ejemplo, las tres Actividades después de la Compuerta Paralela Divergente reciben al mismo tiempo la autorización para comenzar. Sin embargo, cada una podría comenzar en un momento distinto y demorarse más o menos tiempo.


Configuración Divergente

La Compuerta Paralela Divergente tiene la siguiente configuración:

  1. Un Flujo de Secuencia de Entrada.
  2. Dos o más Flujos de Secuencia de Salida Incondicionales.

Ni la Compuerta ni los Flujos de Secuencia de Salida tienen Condiciones. Además, no hay Flujo por Defecto.


Compuerta Paralela - Configuración Divergente


Configuración Convergente

La Compuerta Paralela Convergente sincroniza los Flujos de Entrada, es decir, espera a que lleguen Tokens por todos los Flujos para activarse.

Como toda Compuerta Convergente, la Compuerta Paralela Convergente tiene dos o más Flujos de Secuencia entrantes y un Flujo de Secuencia saliente.


Compuerta Paralela - Configuración Convergente


Compuerta de Eventos


Divergente
Desvía el Flujo del Proceso por uno de entre varios caminos posibles. El desvío se basa en Eventos asociados a cada Flujo de Salida.
Convergente
Al igual que la Compuerta Exclusiva, los Tokens que arriban van pasando hacia la salida uno tras otro sin sincronización. Implementa una unión simple o múltiple.
Marcador Interno: icono de Evento Intermedio Múltiple.

Esta sección contiene aspectos generales de esta Compuerta, para una descripción detallada dirígase al artículo Compuerta de Eventos.


Compuerta de Eventos - Ejemplo


Después de informar el monto de la indemnización al cliente, el Proceso espera su respuesta dentro de un plazo de 30 días hábiles. Si, dentro del plazo, el cliente rechaza el monto, se procede a solicitar un arbitraje. Si, dentro del plazo, el cliente acepta el monto, se le paga la indemnización. Si se cumple el plazo, sin que el cliente se haya pronunciado, se asume que ha aceptado el monto y se le paga la indemnización.

El Proceso queda esperando que se gatille uno de los tres Eventos. El primero que se gatilla activa su Flujo de Salida, los otros dos son descartados.

La Compuerta de Eventos Divergente no solo incluye a la Compuerta en sí y sus Flujos de Secuencia de Salida, sino también a los Eventos asociados a esos Flujos.

Los Eventos asociados a la Compuerta deben ser Intermedios en modo Captura y de tipo: Mensaje, Timer, Condicional, Señal o Múltiple.


Configuración Divergente

La Compuerta de Eventos Divergente tiene la siguiente Configuración:

  1. Un Flujo de Secuencia de Entrada.
  2. Dos o más Flujos de Secuencia de Salida Incondicionales.
  3. Cada Flujo de Secuencia de Salida tiene un Evento Intermedio de Captura.
    • Los Eventos deben ser de tipo Mensaje, Timer, Condicional, Señal o Múltiple.
    • Si el Evento es de tipo Múltiple, entonces solo debe incluir Eventos de tipo Mensaje, Timer, Condicional o Señal.
    • Para recibir Mensajes, en lugar de Eventos Intermedios Mensaje de Captura, se pueden usar Tareas de Recepción, pero no deben mezclarse Eventos y Tareas en una misma Compuerta.
    • Los Eventos o Tareas solo pueden tener un Flujo de Secuencia de Entrada, el que proviene de la Compuerta.
    • Las Tareas de Recepción no pueden tener Eventos en el Borde.
    • Todos los Eventos o Tareas son independentes.

Ni la Compuerta ni los Flujos de Secuencia de Salida tienen Condiciones. Además, no hay Flujo por Defecto.

A diferencia de las otras Compuertas, la configuración de la Compuerta de Eventos Divergente no solo incluye a la Compuerta en sí y sus Flujos de Secuencia de Salida, sino también a los Eventos asociados a esos Flujos.


Compuerta de Eventos - Configuración Divergente


Los Eventos asociados a la Compuerta deben ser Intermedios en modo Captura y de tipo: Mensaje, Timer, Condicional, Señal o Múltiple.


Configuración Convergente

La Compuerta de Eventos Convergente deja pasar los Tokens que llegan uno tras otro, sin sincronización. Es decir, tiene la misma configuración y el mismo comportamiento que la Compuerta Exclusiva Convergente.

Para evitar el uso de dos Compuertas que funcionan igual, se recomienda no usar la Compuerta de Eventos Convergente. En su lugar, debería usarse la Compuerta Exclusiva Convergente. (Recuérdese que incluso ésta, en un Flujo no Controlado, puede ser obviada.)

Compuerta Inclusiva

Divergente
Desvía el Flujo del Proceso por uno o más de entre varios caminos posibles. El desvío se basa en Condiciones asociadas a cada Flujo de Salida.
Convergente
Sincroniza varios Flujos de Secuencia alternativos o paralelos que son alcanzables, es decir, que por ellos debe, en algún momento, llegar un Token.
Marcador Interno: "◯"

Esta sección contiene aspectos generales de esta Compuerta, para una descripción detallada dirígase al artículo Compuerta Inclusiva.


Compuerta Inclusiva - Ejemplo


Por ejemplo, para cumplir con una orden de trabajo hay que analizar cuántas HH se requieren, y si es o no posible cubrirlas con el personal contratado, o si se requieren horas extras y/o contratar personal adicional.

Puede que se requieran pocas HHs y haya horas normales disponibles para cubrirlas, en ese caso solo se ejecutará la Tarea Asignar personal disponible. En otra situación, puede no haber horas normales disponibles, pero sí suficientes horas extras disponibles, entonces solo se ejecutará Autorizar horas extras.

Pueden darse todas las combinaciones, incluso puede ser necesario Asignar personal disponible, Autorizar horas extras y, además, Contratar personal externo en caso que haya horas normales y extras disponibles, pero no sean suficientes para cubrir las necesidades.

La decisión de cómo cubrir las HH necesarias se toma en la Tarea Cuantificar el Trabajo. Después se pasa a la Compuerta Inclusiva Divergente que indica los tres caminos posibles, de los cuales se pueden tomar uno, dos e incluso los tres en forma paralela. A continuación, la Compuerta Inclusiva Convergente sincroniza los caminos tomados. Finalmente, se ejecuta Asignar tareas, y el Proceso finaliza.


Configuración Divergente

La Compuerta Inclusiva Divergente tiene la siguiente Configuración:

  1. Un Flujo de Secuencia de Entrada.
  2. Dos o más Flujos de Secuencia de Salida.
  3. Opcionalmente, uno de los Flujos de Secuencia de Salida es un Flujo por Defecto. Este Flujo se marca con una línea diagonal y es Incondicional. Si tiene una Condición, es ignorada. Solo puede haber un Flujo por Defecto.
  4. Cada Flujo de Secuencia de Salida, excepto el Flujo por Defecto, tiene una Condición.
  5. Todas las Condiciones son independientes.

La Compuerta no tiene asociada una Condición, son los Flujos de Secuencia salientes los que tienen Condiciones.

El Flujo por Defecto actúa como un "mecanismo de escape", es decir, para asegurar que el Proceso pueda continuar en caso de que todas las Condiciones de los demás Flujos sean falsas.

Nótese que la configuraciones de la Compuertas Inclusiva y Exclusiva Divergentes son similares, solo difieren en que en la Exclusiva los Flujos de Salida están ordenados para poder saber cuándo terminar la evaluación de las Condiciones.


Compuerta Inclusiva - Configuración Divergente



Configuración Convergente

La Compuerta Inclusiva Convergente sincroniza varios Flujos de Secuencia alcanzables, es decir, aquellos por los cuales debe, en algún momento, llegar un Token. A veces funciona como una Paralela Convergente, pues todos los Flujos son alcanzables, en otros casos debe esperar Tokens por solo un subconjunto de los Flujos.

Como toda Compuerta Convergente, la Compuerta Inclusiva Convergente tiene dos o más Flujos de Secuencia entrantes y un Flujo de Secuencia saliente.


Compuerta Inclusiva - Configuración Convergente


Compuerta Compleja


Divergente
Al igual que la Compuerta Inclusiva, desvía el Flujo del Proceso por uno o más de entre varios caminos posibles. El desvío se basa en Condiciones asociadas a cada Flujo de Salida.
Convergente
Implementa una sincronización basada en una Condición. Por ejemplo, si hay cinco Flujos de Entrada, la Condición puede ser que los tres primeros Tokens que lleguen serán sincronizados y activarán la Compuerta.
Marcador Interno: ""

Esta sección contiene aspectos generales de esta Compuerta, para una descripción detallada dirígase al artículo Compuerta Compleja.

La Compuerta Compleja permite crear modelos sofisticados, que pueden ser difíciles de entender para las personas no especializadas que leen un diagrama BPMN. Por este motivo, limitaremos la exposición principal de la Compuerta Compleja a la implementación de un Discriminador Estructurado N/M, que es un modelo fácil de entender y aplicar.

Un Discriminador Estructurado N/M (1 ≤ N < M) consiste en una Compuerta Compleja Convergente que tiene M Flujos de Entrada y un Flujo de Salida. Los Flujos de Entrada provienen de una Compuerta Paralela Divergente. La Compuerta Compleja espera que lleguen N Tokens para activarse y enviar un Token por su Flujo de Salida. Después queda a la espera de los restantes M-N Tokens. Cuando éstos llegan, los consume y vuelve a esperar N Tokens para activarse.

El ejemplo describe la siguiente lógica de negocio: para comenzar a preparar el informe de evaluación de la tesis se necesita la evaluación del profesor guía y de uno de los profesores informantes. Mientas se prepara el informe de evaluación puede llegar la evaluación del otro profesor informante y ser usado en la preparación del informe. Si se ha terminado el informe de evaluación y aún no se recibe la evaluación del otro profesor informante, entonces se aborta la respectiva Actividad de recepción y el Proceso termina.


Compuerta Compleja - Ejemplo


En el ejemplo, la Compuerta Compleja implementa un Discriminador 1/2, es decir, se activa cuando llega un Token por uno de sus dos Flujos de Entrada. Ese Token, junto con el que viene de Recibir evaluación del profesor guía, activa la Compuerta Paralela Convergente. El segundo Token que llega a la Compuerta Compleja es consumido sin activar su Flujo de Salida y, por lo tanto, no llega a la Compuerta Paralela Convergente. Sin embargo, la segunda evaluación recibida desde un profesor informante no se pierde, en la medida que es recibida y almacenada puede ser utilizada para preparar el informe de evaluación.

Nótese que el Proceso termina con un Evento Final Terminador, que tiene el efecto de abortar cualquier Actividad que esté ejecutándose y luego terminar el Proceso. Esto es necesario porque puede ocurrir que se haya terminado la Actividad Preparar informe de evaluación mientras todavía se espera la evaluación del otro profesor informante.


Configuración Divergente

La Compuerta Compleja Divergente desvía el Flujo del Proceso por uno o más de entre varios caminos posibles. El desvío se basa en Condiciones asociadas a cada Flujo de Salida. Es decir, tiene la misma Configuración y el mismo comportamiento que la Compuerta Inclusiva Divergente.

Para evitar el uso de dos Compuertas que funcionan igual, se recomienda no usar la Compuerta Compleja Divergente. En su lugar, debería usarse la Compuerta Inclusiva Divergente.


Compuerta Compleja - Divergente



Configuración Convergente

La Compuerta Compleja Convergente que implementa un Discriminador Estructurado N/M tiene la siguiente Configuración:

  • Tiene M Flujos de Entrada, con M ≥ 2.
  • Los Flujos de Entrada provienen de caminos paralelos que se originan en una Compuerta Paralela Divergente. Además, los caminos son independientes, es decir, no hay Flujos de Secuencia que salgan o lleguen a ellos.
  • La Compuerta tiene una Condición que indica cuántos Tokens (1 ≤ N < M) , en diferentes Flujos de Entrada, deben llegar para activar el Flujo de Salida.
  • Un Flujo de Salida Condicional que deja pasar un Token cuando llegan los primeros N Tokens, pero no emite un Token cuando llegan los restantes M-N Tokens.

Por ejemplo, un Discriminador 2/3 tiene 3 Flujos de Entrada. Cuando llegan Tokens por 2 de los Flujos, la Compuerta se activa y emite un Token por el Flujo de Salida. Luego espera un Token por el tercer Flujo de Entrada, cuando llega lo consume y no emite un Token por el Flujo de Salida.


Compuerta Compleja - Configuración Convergente



Compuertas Configuraciones y Estrategias

Compuertas Divergencia

Una Compuerta Divergente tiene dos o más Flujos de Secuencia de Salida.


Compuertas Divergentes

Las Compuertas BPMN implementan cuatro estrategias divergentes, es decir, cuatro formas en las que los Flujos de Salida son activados.

  1. Divergencia Exclusiva de Datos: se activa un Flujo de Salida cuya Condición asociada es verdadera.
  2. Divergencia Exclusiva de Eventos: se activa el Flujo de Salida cuyo Evento asociado se gatilla primero.
  3. Divergencia Paralela: se activan todos los Flujos de Salida.
  4. Divergencia Inclusiva: se activan todos los Flujos de Salida cuya Condición asociada es verdadera.

Compuertas Divergencia Exclusiva de Datos

Una Divergencia Exclusiva de Datos es un punto en el Proceso donde el Flujo puede desviarse por uno de entre varios caminos alternativos, dependiendo de si se cumple o no una Condición.

Cuando un Token llega a un punto de Divergencia Exclusiva de Datos, se evalúan las Condiciones de los caminos de salida, es decir, se utilizan los datos para determinar el valor lógico (verdadero o falso) de las Condiciones. Se sigue el primer camino cuya Condición es verdadera.

Por ejemplo, si el precio es $100, se seguirá el camino cuya Condición es precio ≥ $70.


Divergencia Exclusiva de Datos

En BPMN la Divergencia Exclusiva de Datos es implementada por la Compuerta Exclusiva Divergente.


Compuerta Exclusiva de Datos Divergente

La Especificación de BPMN usa los términos "Branching point" y "Decision" para referirse a la Divergencia Exclusiva.

Compuertas Divergencia Exclusiva de Eventos

Una Divergencia Exclusiva de Eventos es un punto en el Proceso donde un Flujo puede desviarse por uno de entre varios caminos alternativos, dependiendo de si se gatilla o no un Evento.

Cuando un Token llega a un punto de Divergencia Exclusiva de Eventos, se queda a la espera de que ocurran dos o más Eventos. Se sigue el camino guardado por el primer Evento que se gatilla.

Por ejemplo, si se espera la respuesta de un cliente, con un tiempo límite y éste se cumple, entonces la espera termina y se sigue el camino inferior.


Divergencia Exclusiva de Eventos

En BPMN la Divergencia Exclusiva de Evento es implementada por la Compuerta Exclusiva de Eventos.


Compuerta Exclusiva de Eventos Divergente


Compuertas Divergencia Paralela

Una Divergencia Paralela es un punto en el Proceso donde un Flujo se desvía por dos o más Flujos concurrentes.

Cuando un Token llega a un punto de Divergencia Paralela se divide en dos o más Sub-Tokens y cada uno sigue un camnino diferente.

Por ejemplo, después de procesar un pedido se puede, en paralelo, cobrar, preparar la mercancía y planificar el despacho.


Divergencia Paralela

Hay dos mecanismos de implementar la Divergencia Paralela en BPMN:

  1. Compuerta Paralela Divergente.
  2. Actividad o Evento con varios Flujos de Secuencia de Salida Incondicionales.

Cuando el Flujo llega a la Compuerta Paralela Divergente se activan todos los Flujos de Secuencia de Salida de forma inmediata.


Compuerta Paralela Divergente

Cuando una Actividad o Evento tiene varios Flujos de Secuencia de Salida Incondicionales, cada uno de éstos recibe un Token cuando la Actividad o Evento finaliza. Esto se conoce como "Flujo no Controlado" divergente.


Actividad con varios Flujos de Salida

Según la Especificación de BPMN, es preferible usar Actividades con varios Flujos de Secuencia de Salida, y usar una Compuerta Paralela Divergente solo cuando los caminos paralelos serán sincronizados por una Compuerta Paralela Convergente más adelante en el Proceso. Sin embargo, en este sitio preferimos usar la Compuerta Paralela Divergente en todos los casos, pues nos parece que facilita la lectura del diagrama.

La Especificación de BPMN usa los términos "Fork" y "AND-Split" para referirse a la Divergencia Paralela.

Compuertas Divergencia Inclusiva

Una Divergencia Inclusiva es un punto en el Proceso donde el Flujo puede desviarse por uno o más de entre varios caminos alternativos, dependiendo de si se cumplen o no determinadas Condiciones.

Cuando un Token llega a un punto de Divergencia Inclusiva, se evalúan las Condiciones de todos los caminos de salida, es decir, se utilizan los datos para determinar el valor lógico (verdadero o falso) de cada Condición. Se siguen todos los caminos cuya Condición es verdadera.

Por ejemplo, al vender un producto se pueden ofrecer servicios adicionales: envío, ensamblado, garantía extendida. El cliente puede elegir algunos o todos los servicios adicionales.


Divergencia Inclusiva

Hay dos mecanismos de implementar la Divergencia Inclusiva en BPMN:

  1. Compuerta Inclusiva Divergente.
  2. Una Actividad con múltiples Flujos de Secuencia de Salida Condicionales.

Cuando el Flujo llega a la Compuerta Inclusiva Divergente se activan todos los Flujos de Secuencia de Salida cuya Condición es verdadera.


Compuerta Inclusiva Divergente

Usando Flujos de Secuencia Condicionales (marcados con mini-rombos) desde una Actividad, se logra el mismo comportamiento que una Compuerta Inclusiva divergente.


Flujos Condicionales

La Especificación de BPMN usa el término "Branching Point" para referirse a la Divergencia Inclusiva.

Compuertas Convergencia

Una Compuerta Convergente tiene dos o más Flujos de Secuencia de Entrada.


Compuertas Convergentes

Las Compuertas BPMN implementan cuatro estrategias convergentes, es decir, cuatro formas en las que los Flujos de Entrada son canalizados.

  1. Convergencia Exclusiva: los Tokens que llegan desde van pasando uno a uno, sin ningún tipo de sincronización, coordinación o espera.
  2. Convergencia Paralela: espera que llegen todos los Tokens por todos los Flujos de Entrada, y en ese momento se sincronizan y continúan como uno solo.
  3. Convergencia Inclusiva: espera que llegen todos los Tokens por los Flujos de Secuencia activos, y en ese momento se sincronizan y continúan como uno solo.
  4. Convergencia Discriminante: a medida que llegan Tokens, se va evaluando una condición, cuando esta se torna verdadera, los Tokens son sincronizados y continúan como uno solo.

Compuertas Convergencia Exclusiva

Una Convergencia Exclusiva o No Controlada es un punto del Proceso donde varios Flujos se unen, los Tokens que arriban por estos Flujos mantienen su independencia.

Los Tokens que llegan por los distintos caminos van pasando uno a uno, sin ningún tipo de sincronización, coordinación o espera.

Por ejemplo, asumiendo que no hay aglomeración, si el público está organizado en varias filas para acceder a un pórtico, entonces cada persona pasará por éste cuando llegue al comienzo de la fila.


Convergencia Exclusiva

Hay dos mecanismos de implementar la Convergencia Inclusiva en BPMN:

  1. Compuerta Exclusiva Convergente.
  2. Una Actividad o Evento con varios Flujos de Secuencia de Entrada.

Cada Token que llega por cualquier Flujo de Secuencia a la Compuerta es enrutado al Flujo de Secuencia de Salida de forma inmediata. Normalmente, una Compuerta Exclusiva Convergente cierra un Bloque comenzado por una Compuerta Exclusiva Divergente. En cada ejecución del Bloque solo llega un Token a la Compuerta Convergente.


Compuerta Exclusiva Convergente

Una Actividad o Evento se activa cada vez que llega un Token por algunos de sus Flujos de Entrada. Esto se conoce como "Flujo no Controlado", en el sentido que no existe una Compuerta que aplique algún tipo de sincronización antes de la Actividad o Evento.


Actividad con varios Flujos de Entrada

La Especificación de BPMN usa los términos "Merge", "Exclusive Combining" y "OR-Join" para referirse a la Convergencia Exclusiva.

Compuertas Convergencia Paralela

Una Convergencia Paralela o Sincronizada es un punto en el Proceso donde varios Flujos se unen, los Tokens que arriban por estos Flujos son sincronizados.

Se espera a que llegen Tokens por todos los caminos, en ese momento son sincronizados y continúan como un único Token.

Por ejemplo, para armar un computador de escritorio se necesitan una torre, una pantalla y un teclado. Cuando llegan las tres partes se procede al armado.


Divergencia Paralela

En BPMN la Convergencia Paralela es implementada por la Compuerta Paralela Convergente. Normalmente, una Compuerta Paralela Convergente cierra un Bloque comenzado por una Compuerta Paralela Divergente. En cada ejecución del Bloque llegan a la Compuerta Convergente todos los Tokens que salieron de la Compuerta Divergente, una parte de ellos la activarán.


Compuerta Paralela Convergente

La Especificación de BPMN usa los términos "Join", "Synchronization" y "AND-Join" para referirse a la Convergencia Paralela.

Compuertas Convergencia Inclusiva

Una Convergencia Inclusiva es un punto en el Proceso donde varios Flujos se unen, los Tokens que arriban por estos Flujos alcanzables son sincronizados.

Se espera a que llegen Tokens por cada uno de los caminos alcanzables, es decir, aquellos por los cuales debe, en algún momento, llegar un Token, y en ese momento son sincronizados y continúan como uno solo.

Por ejemplo, un Informe puede tener uno, dos o tres de estos anexos: Resumen, Anexo Técnico y Anexo Económico. Si se sabe que un Informe determinado solo tendrá Resumen y Anexo Técnico, entonces habrá que esperar estos dos documentos para completar el Informe. Si solo tendrá un Anexo Económico, entonces se procederá cuando éste llegue. Así, se conoce qué documentos deben llegar (uno, dos o los tres) y se espera por ellos.


Convergencia Inclusiva

En BPMN la Convergencia Inclusiva es implementada por la Compuerta Inclusiva Convergente. Normalmente, una Compuerta Inclusiva Convergente cierra un Bloque comenzado por una Compuerta Inclusiva Divergente. En cada ejecución del Bloque llegan a la Compuerta Convergente el o los Tokens que salieron de la Compuerta Divergente.


Compuerta Inclusiva Convergente


Compuertas Convergencia Discriminante

Una Convergencia Discriminante es un punto en el Proceso donde dos o más Flujos Paralelos se unen, los Tokens son sincronizados cuando se cumple una Condición.

La Condición define un Discriminador N/M (1 ≤ N < M), es decir, se torna verdadera cuando llegan Tokens por N de los M Flujos de Entrada.

A medida que llegan Tokens, se va evaluando la Condición, cuando ésta se torna verdadera los Tokens son sincronizados y continúan como uno solo.

Por ejemplo, para realizar la Evaluación de un trabajador se usan tres insumos: Informe del Supervisor, Informe de RRHH e Informe de Pares. Sin embargo, basta que lleguen dos de ellos para proceder. Por ejemplo, si llegan primero el Informe del Supervisor y el Informe de RRHH, se realiza la Evaluación, sin esperar por el Informe de Pares. En este caso, tenemos un Discriminador 2/3.


Convergencia Discriminante

En BPMN la Convergencia Discriminante es implementada por la Compuerta Compleja Convergente. Normalmente, una Compuerta Compleja Convergente cierra un Bloque comenzado por una Compuerta Paralela Divergente. En cada ejecución del Bloque solo llega un Token a la Compuerta Convergente.


Compuerta Compleja Discriminante


Compuertas Bloques

La Especificación de BPMN describe las configuraciones y funcionamiento de las Compuertas Convergentes y Divergentes de forma aislada. Es decir, no establece reglas sobre como combinarlas. Sin embergo, tanto los ejemplos de la Especificación de BPMN como la experiencia en el modelado de Procesos muestran que las Compuertas se usan dentro de Bloques, que pueden ser de tres tipos:

  1. Bloque Cerrado: comienza con una Compuerta Divergente de la que salen varios caminos que confluyen en una Compuerta Convergente que cierra el Bloque.
  2. Bloque Abierto: comienza con una Compuerta Divergente de la que salen varios caminos que continúan de manera separada.
  3. Bloque Iterativo o Ciclo: se crea conectando un Flujo de Secuencia a un objeto anterior en el Proceso. Se usa una Compuerta Exclusiva para controlar el ciclo.

Modelo Correcto y Modelo Inválido

Un Modelo BPMN es Sintácticamente Correcto si cumple con las reglas del lenguaje. Si nos limitamos a los elementos visuales, esto significa que "el diagrama está bien dibujado".

Un Modelo BPMN es Inválido en Tiempo de Ejecución (runtime) si, en algunas instanciaciones, queda en un punto muerto (deadlock), es decir, no puede continuar la ejecución.

BPMN permite gran flexibilidad para representar Procesos. Sin embargo, esta libertad puede conducir a diagramas difíciles de comprender o, incluso, a Modelos Inválidos.

Por ejemplo, cuando se cumple la Condición 2, el Token llega a la Compuerta Convergente Paralela por el camino inferior, pero por el camino superior nunca llegará un Token. La ejecucion llega a un punto muerto porque la Compuerta Paralela Convergente necesita un Token por cada uno de sus Flujos de Entrada para activarse.

Por otro lado, si se cumple la Condición 1, entonces el Token pasa a la Compuerta Paralela Divergente, donde se divide en dos Tokens que llegan a la Paralela Convergente y la ejecución continúa sin problemas.


Modelo Inválido

El comportamiento anómalo ocurre porque al Bloque que comienza y termina con Compuertas Paralelas llega un Flujo externo. Cuando llega un Token por este Flujo se pierde la lógica original del Bloque: llegan a la Compuerta Paralela Convergente los Tokens que salieron de la Compuerta Paralela Divergente.


Bloque Estructurado

En un Bloque estructurado no hay Flujos de Secuencia que entran o salen del Bloque, y tampoco hay Flujos de Secuencia entre sus caminos internos.


Bloque Estructurado

El uso de Bloques Estructurados tiene las siguientes ventajas:

  • Evita Modelos Inválidos producto del uso desordenado de Compuertas.
  • Los modelos son más fáciles de construir y leer, pues se utiliza un número acotado de estructuras.

En el ejemplo anterior, el Bloque pierde su estructura porque llega un Flujo desde fuera. En el siguiente ejemplo, es un Flujo entre los caminos del Bloque el que provoca el quiebre.


Bloque No Estructurado (a)

Cuando se cumple la Condición 2, a la Compuerta Convergente Paralela llegan dos Tokens por el Flujo de Entrada inferior, el primero que llega es consumido por la Compuerta y el otro queda en espera. La Compuerta nunca se activa, pues el Token que espera por el Flujo de Entrada superior nunca llegará.


Bloque No Estructurado (b)

Compuertas Bloque Cerrado

Un Bloque Cerrado comienza con una Compuerta Divergente de la que salen varios caminos que confluyen en una Compuerta Convergente que cierra el Bloque.


Bloque Cerrado con Compuertas Exclusivas

(En la descripción que sigue se asume que los Bloques son Estructurados, y que la Compuerta Compleja Convergente se usa para implementar un Discriminante N/M.)

Puesto que hay cinco tipos de Compuerta, hay 25 formas de combinarlas para formar Bloques Cerrados. Sin embargo, no todos son válidos o prácticos.

Bloques Cerrados

Exclusiva Paralela Eventos Inclusiva Compleja

OK

INVALIDO

NO PRACTICO

NO PRACTICO

INVALIDO

OK ?

OK

NO PRACTICO

NO PRACTICO

OK

OK

INVALIDO

NO PRACTICO

NO PRACTICO

INVALIDO

OK ?

INVALIDO

NO PRACTICO

OK

INVALIDO

NO PRACTICO

INVALIDO

NO PRACTICO

NO PRACTICO

INVALIDO


Bloques Esenciales

Los Bloques Cerrados Esenciales implementan de forma directa las Estrategias de Divergencia y Convergencia.


Bloque Esencial - Bloque Cerrado Paralelo

Hay cinco Bloques Cerrados Esenciales:

  1. Exclusiva 🠊 Exclusiva: implementa Divergencia Exclusiva de Datos y Convergencia Exclusiva. Desvía el Flujo del Proceso por uno de entre varios caminos posibles, dependiendo de si se cumple o no una Condición. Cierra con una unión simple, es decir, un camino único para cualquier Token que llegue a la Compuerta.
  2. Paralela 🠊 Paralela: implementa Divergencia Paralela y Convergencia Paralela. Separa el flujo en varios caminos paralelos de manera incondicional, los que son sincronizados al cerrar el bloque.
  3. Paralela 🠊 Compleja: implementa Divergencia Paralela y Convergencia Discriminante. Separa el flujo en varios caminos paralelos de manera incondicional, en el cierre implementa un Discriminador N/M (1 ≤ N < M).
  4. Eventos 🠊 Exclusiva: implementa Divergencia Exclusiva de Eventos y Convergencia Exclusiva. Desvía el Flujo del Proceso por uno de entre varios caminos posibles, dependiendo de si se gatilla o no un Evento. Cierra con una unión simple, es decir, un camino único para cualquier Token que llegue a la Compuerta.
  5. Inclusiva 🠊 Inclusiva: implementa Divergencia Inclusiva y Convergencia Inclusiva. Desvía el Flujo del Proceso por uno o más de varios caminos posibles, los que son sincronizados al cerrar el bloque.

Bloques con Salida Múltiple

UN Bloques Cerrados con Salida Múltiple tiene más de un Token de salida.


Bloque con Salida Múltiple - Bloque Paralelo-Exclusivo

Hay dos Bloques Cerrados con Salida Múltiple:

  1. Paralela 🠊 Exclusiva: implementa Divergencia Paralela y Convergencia Exclusiva. Los Token generados por la Compuerta Paralela pasan por la Compuerta Exclusiva manera independiente. Es decir, el Bloque deja pasar tantos Tokens como Flujos de Salida tiene la Compuerta Paralela.
  2. Inclusiva 🠊 Exclusiva: implementa Divergencia Inclusiva y Convergencia Exclusiva. Los Token generados por la Compuerta Inclusiva pasan por la Compuerta Exclusiva manera independiente. Es decir, el Bloque deja pasar todos los Tokens generados la Compuerta Inclusiva.

Bloques Inválidos

Un Bloque Cerrado es Inválido cuando la Compuerta de Cierre queda en un punto muerto, es decir, nunca se activa.

El problema ocurre cuando la Compuerta de Cierre es Paralela o Compleja, pero el Bloque no comienza con una Paralela Divergente.


Bloque Inválido - Bloque Exclusivo-Paralelo

Hay ocho Bloques Cerrados Inválidos:

  1. Exclusiva 🠊 Paralela: la Compuerta Exclusiva Divergente solo deja pasar un Token, pero la Compuerta Paralela Convergente espera Tokens por todos los Flujos.
  2. Exclusiva 🠊 Compleja: la Compuerta Exclusiva Divergente solo deja pasar un Token, pero la Compuerta Compleja Convergente debe recibir varios Tokens para que funcione como un Discriminador N/M en el caso general.
  3. Eventos 🠊 Paralela: la Compuerta de Eventos Divergente solo deja pasar un Token, pero la Compuerta Paralela Convergente espera Tokens por todos los Flujos.
  4. Eventos 🠊 Compleja: la Compuerta de Eventos Divergente solo deja pasar un Token, pero la Compuerta Compleja Convergente debe recibir varios Tokens para que funcione como un Discriminador N/M en el caso general.
  5. Inclusiva-Paralela: la Compuerta Inclusiva Divergente no siempre dejara pasar todos los Tokens, pero la Compuerta Paralela Convergente espera Tokens por todos los Flujos.
  6. Inclusiva 🠊 Compleja: la Compuerta Inclusiva Divergente no siempre dejara pasar todos los Tokens, pero la Compuerta Compleja Convergente debe recibir varios Tokens para que funcione como un Discriminador N/M en el caso general.
  7. Compleja 🠊 Paralela: la Compuerta Compleja Divergente no siempre dejara pasar todos los Tokens, pero la Compuerta Paralela Convergente espera Tokens por todos los Flujos.
  8. Compleja 🠊 Compleja: la Compuerta Compleja Divergente no siempre dejara pasar todos los Tokens, pero la Compuerta Compleja Convergente debe recibir varios Tokens para que funcione como un Discriminador N/M en el caso general.

Bloques no Prácticos

Hay diez Bloques Cerrados que no son prácticos, en el sentido que tienen el mismo comportamiento que otro Bloque con distintas Compuertas.


Bloque no Práctico - Bloque Exclusivo-Eventos

El criterio para preferir un Bloque sobre otro es usar la Compuerta cuyo funcionamiento es más conocido y claro. Esto se resume en los siguientes tres puntos:

  1. La Compuerta Eventos Convergente funciona igual que la Exclusiva Convergente, por lo tanto se debe usar siempre esta última. Esto se puede ver en la columna de la Compuerta Eventos de la Tabla de Bloques Cerrados.
  2. La Compuerta Inclusiva Convergente funciona como una Exclusiva Convergente cuando cierra un Bloque iniciado por una Exclusiva, y como una Paralela Convergente cuando cierra un Bloque iniciado por una Paralela, por lo tanto se debe usar solo cuando cierra un Bloque iniciado por una Exclusiva. Esto se puede ver en la columna de la Compuerta Inclusiva de la Tabla de Bloques Cerrados.
  3. La Compuerta Compleja Divergente funciona igual que la Inclusiva Divergente, por lo tanto se debe usar siempre esta última. Esto se puede ver en la fila de la Compuerta Compleja de la Tabla de Bloques Cerrados.

Hay diez Bloques Cerrados no Prácticos:

  1. Exclusiva 🠊 Eventos, preferir Exclusiva 🠊 Exclusiva. Eventos Convergente funciona igual que Exclusiva Convergente.
  2. Exclusiva 🠊 Inclusiva, preferir Exclusiva 🠊 Exclusiva. Inclusiva Convergente después de Exclusiva Divergente funciona igual que Exclusiva Convergente.
  3. Paralela 🠊 Eventos, preferir Paralela 🠊 Exclusiva. Eventos Convergente funciona igual que Exclusiva Convergente.
  4. Paralela 🠊 Inclusiva, preferir Paralela 🠊 Paralela. Inclusiva Convergente después de Paralela Divergente funciona igual que Paralela Convergente.
  5. Eventos 🠊 Eventos, preferir Eventos 🠊 Exclusiva. Eventos Convergente funciona igual que Exclusiva Convergente.
  6. Eventos 🠊 Inclusiva, preferir Eventos 🠊 Exclusiva. Inclusiva Convergente después de Eventos Divergente funciona igual que Exclusiva Convergente.
  7. Inclusiva 🠊 Eventos, preferir Inclusiva 🠊 Exclusiva. Eventos Convergente funciona igual que Exclusiva Convergente.
  8. Compleja 🠊 Exclusiva, preferir Inclusiva 🠊 Exclusiva. Compleja Divergente funciona igual que Inclusiva Divergente
  9. Compleja 🠊 Eventos, preferir Inclusiva 🠊 Exclusiva. Compleja Divergente funciona igual que la Inclusiva Divergente, y Eventos Convergente funciona igual que Exclusiva Convergente.
  10. Compleja 🠊 Inclusiva, preferir Inclusiva 🠊 Inclusiva. Compleja Divergente funciona igual que Inclusiva Divergente

Compuertas Bloque Abierto

Un Bloque Abierto comienza con una Compuerta Divergente de la que salen varios caminos que continúan de manera separada.


Bloque Abierto de Eventos

Hay cinco tipos de Compuerta, pero solo cuatro Bloques Abiertos, pues la Compuerta Compleja Divergente funciona igual que la Inclusiva Divergente.

  1. Bloque Abierto Exclusivo de Datos: comienza con Exclusiva Divergente e implementa Divergencia Exclusiva de Datos. Desvía el Flujo del Proceso por uno de entre varios caminos posibles, dependiendo de si se cumple o no una Condición.
  2. Bloque Abierto (Exclusivo) de Eventos: comienza con Eventos Divergente e implementa Divergencia Exclusiva de Eventos. Desvía el Flujo del Proceso por uno de entre varios caminos posibles, dependiendo de si se gatilla o no un Evento.
  3. Bloque Abierto Paralelo: comienza con Paralela Divergente e implementa Divergencia Paralela. Separa el flujo en varios caminos paralelos de manera incondicional.
  4. Bloque Inclusivo: comienza con Inclusiva Divergente e implementa Divergencia Inclusiva. Desvía el Flujo del Proceso por uno o más de varios caminos posibles, los que son sincronizados al cerrar el bloque.

Compuertas Bloque Abierto-Cerrado

Es posible combinar los Bloques Abiertos y Cerrados descritos en las secciones anteriores.

En el ejemplo siguiente, parte del Bloque iniciado por una Paralela Divergente es cerrado por una Compuerta Paralela Convergente, pero dos caminos continúan separados como en un Bloque Abierto.


Bloque Abierto-Cerrado (a)

Puede haber más de una Compuerta Convergente, no necesariamente del mismo tipo. Por ejemplo, los dos caminos inferiores pueden converger en una Compuerta Exclusiva.


Bloque Abierto-Cerrado (b)

Como se muestra en Bloque Cerrado, no todas las combinaciones de Compuestas son válidas o prácticas. Por ejemplo, si la Compuerta que abre el Bloque es Exclusiva, el Modelo es Inválido: si se cumple cualquiera de las Condiciones de los dos caminos inferiores, la instancia del Proceso termina correctamente, pero cuando se cumple cualquiera de las Condiciones de los tres caminos superiores, la Compuerta Convergente Paralela queda en un punto muerto, pues solo recibe un Token, pero necesita tres para activarse.


Bloque Abierto-Cerrado (c)

Las combinaciones de Compuertas pueden ser más sofisticadas. En el siguiente ejemplo, dos caminos paralelos cierran con una Compleja Convergente, cuyo Token de salida llega a una Paralela Convergente, que recibe un segundo Token por el tercer camino paralelo que salió de la Compuerta Paralela Divergente.


Bloque Abierto-Cerrado (d)

Compuerta Exclusiva Ciclo

Un Ciclo se crea conectando un Flujo de Secuencia a un objeto anterior en el Proceso. Se usa una Compuerta Exclusiva para controlar el ciclo.

(Se considera que un objeto A es "anterior" a un objeto B si A tiene un Flujo de Secuencia saliente que inicia un camino que llega a B.)

Un Ciclo Estructurado contiene un Bloque Interno formado por un conjunto de Objetos de Flujo conectados por Flujos de Secuencia. No hay Flujos de Secuencia que entren o salgan del Bloque Interno, excepto los necesarios para el control del Ciclo.

A continuación, se detallan dos Patrones Cíclicos Estructurados estándar: Hacer-Mientras (Do-While) y Mientras-Hacer (While-Do).


Ciclo Hacer-Mientras (Do-While)

El Ciclo tiene un Flujo de Entrada que llega al Bloque Interno. Después del Bloque Interno hay una Compuerta Divergente con dos salidas: una que vuelve al inicio del Bloque Interno para repetir el Ciclo, y otra que se sigue cuando el Ciclo termina.

Primero se ejecuta el Bloque Interno, luego se pregunta si hay que repetirlo o salir. El Ciclo Hacer-Mientras se ejecuta al menos una vez.

Nótese que se podría colocar una Compuerta Exclusiva Convergente antes del inicio del Ciclo, pues llegan dos Flujos de Secuencia directamente a la Actividad que inicia el Bloque Interno. Sin embargo, se acostumbra a dejar el Flujo no Controlado.


Compuerta Exclusiva - Ciclo Hacer-Mientras



Ciclo Mientras-Hacer (While-Do)

El Ciclo comienza con una Compuerta Exclusiva Convergente/Divergente que recibe el Flujo de Entrada al Ciclo y el Flujo de Retorno cuando éste se repite. La Compuerta tiene dos salidas: una que lleva al inicio del Bloque Interno, y otra que se sigue cuando el Ciclo termina.

Primero se pregunta si hay que entrar o no al Ciclo. El Ciclo Mientras-Hacer se realiza cero o más veces.

Nótese que se podría anteponer al Ciclo una Compuerta Exclusiva Convergente para evitar una Compuerta Convergente-Divergente. Sin embargo, se acostumbra a mantener esta última.


Compuerta Exclusiva - Ciclo Mientras-Hacer


Compuertas Conectores

Una Compuerta debe tener varios Flujos de Secuencia de Entrada y/o varios Flujos de Secuencia de Salida, es decir, debe unir y/o separar el Flujo del Proceso.

Una Compuerta no puede ser el destino o el origen de un Flujo de Mensaje.

Una Compuerta no puede ser el destino o el origen de una Asociación de Datos.

Una Compuerta puede estar conectada a una Asociación Simple.


Flujo de Secuencia

Una Compuerta debe tener varios Flujos de Secuencia de Entrada y/o varios Flujos de Secuencia de Salida, es decir, debe unir y/o separar el Flujo del Proceso.

Los Flujos de Secuencia se pueden conectar a cualquier parte de la Compuerta, no necesariamente en sus esquinas.

Según sean de los Flujos de Secuencia de Entrada y Salida.

  • Divergente estricta: un Flujo de Secuencia de Entrada y dos o más Flujos de Secuencia de Salida.
  • Divergente estricta inicial: ningún Flujo de Secuencia de Entrada y dos o más Flujos de Secuencia de Salida. Se ejecuta cuando se instancia el Proceso. Esto ocurre cuando no hay un Evento Inicial
  • Convergente estricta: dos o más Flujos de Secuencia de Entrada y un Flujo de Secuencia de Salida.
  • Convergente/Divergente: dos o más Flujos de Secuencia de Entrada y dos o más Flujos de Secuencia de Salida.

Nótese que una Compuerta no puede tener solo un Flujo de Secuencia de Entrada y solo uno de Salida, como tampoco ningún Flujo de Secuencia de Entrada y solo uno de Salida.

Una Compuerta puede tener varios Flujos de Secuencia de entrada y salida, es decir, ser Convergente y Divergene al mismo tiempo. Sin embargo, es una Buena Práctica que una Compuerta solo realice una de estas funciones. Si se da el caso, habría que crear dos Compuertas consecutivas: primero una Convergente y luego otra Divergente.

BPMN especifica que una Compuerta puede ser estrictamente Divergente o Convergente, también puede ser a la vez Convergente y Divergente. Sin embargo, no recomienda usar esta última configuración.


Compuerta Exclusiva - Ciclo Mientras-Hacer

Texto.


Compuerta Exclusiva - Ciclo Mientras-Hacer


Datos

Las Compuertas requieren datos para determinar si se deben activar o no, y para determinar qué camino(s) seguir. Los datos utilizados son de dos tipos:


Compuerta Exclusiva - Ciclo Mientras-Hacer

  1. Datos del Proceso: son aquellos que recibe, crea y/o manipula el Proceso para lograr su objetivo. Por ejemplo, pedido del cliente, precio del producto, carta de rechazo, etc. Estos datos son modelados en BPMN con Objetos de Datos, Depósitos de Datos, Mensajes y otros elementos que pueden tener datos asociados (Señales, Errores y otros).
  2. Datos de Activación: son aquellos que indican qué Actividades, Eventos, Compuertas y Flujos de Secuencia han sido utilizados durante la ejecución del Proceso, y en qué orden. No es parte BPMN el modelado de estos datos. El lector del diagrama BMN debe usar sus conocimientos del lenguaje para hacer un seguimiento de la ejecución. Por su parte, un Motor BPMS debe incorporar mecanismos para representar estos datos.

(BPMN usa el concepto de Token para explicar el comportamiento de un Proceso, pero esto es un concepto teórico que no es en sí parte del lenguaje. Los diseñadores de un Motor BPMS deben decidir si incorporar o no esto concepto y determinar su funcionamiento. En los ejemplos de este sitio usamos Tokens y cambios de colores para mostrar como avanza la ejecución de los Procesos.)

Datos Requeridos por las Compuertas

TipoIconoConvergenteDivergente
Exclusiva de Datos Datos del Proceso: ninguno.

Datos de Activación: local, el estado de activación de los Flujos de Secuencia Entrantes.
Datos del Proceso: los datos visibles en su contexto para evaluar las Condiciones de los Flujos de Salida.

Datos de Activación: ninguno.
Paralela Datos del Proceso: ninguno.

Datos de Activación: local, el estado de activación de los Flujos de Secuencia Entrantes.
Datos del Proceso: ninguno.

Datos de Activación: ninguno.
Exclusiva de Eventos Datos del Proceso: ninguno.

Datos de Activación: local, el estado de activación de los Flujos de Secuencia Entrantes.
Datos del Proceso: ninguno.

Datos de Activación: ninguno.
Inclusiva Datos del Proceso: ninguno.

Datos de Activación: global, el estado de activación de los caminos que llegan a los Flujos de Secuencia Entrantes.
Datos del Proceso: los datos visibles en su contexto para evaluar las Condiciones de los Flujos de Salida.

Datos de Activación: ninguno.
Complex Datos del Proceso: los datos visibles en su contexto para evaluar las Condición de activación de la Compuerta.

Datos de Activación: global, el estado de activación de los caminos que llegan a los Flujos de Secuencia Entrantes.
Datos del Proceso: los datos visibles en su contexto para evaluar las Condición de activación de la Compuerta.

Datos de Activación: el estado interno de la Compuerta (waiting-for-start o waiting-for-reset).

Texto.Texto.

Texto.Texto.


Flujo de Mensaje

Texto.

Texto.


Asociación

Texto.

Texto.

Exponer de otra manera: separara divergente y convergente.

Una Compuerta nunca puede ser el origen o el destino de un Flujo de Mensaje.

Una Compuerta puede tener cero (0), uno (1) o más Flujos de Secuencia entrantes, cero (0), uno (1) o más Flujos de Secuencia salientes.

Sólo las Compuertas especializadas de inicio pueden no tener flujos de secuencia entrante. Y en un subproceso embedido para crear un "Caja Paralela".

Si la Compuerta no tiene Flujo de Secuencia saliente, entonces marcará el fin de un camino del Proceso. Como Buena Práctica, esto solo debería ocurrir cuando se usa un Subproceso para crear una "Caja Paralela".

¿Puede, una Compuerta, tener solo un Flujo de Secuencia de entrada, y solo uno de salida? Una Compuerta debe tener múltiples flujos de secuencia entrantes o múltiples flujos de secuencia salientes. Es decir, debe ser divergente y/o convergente.

Los Flujos de Secuencia pueden conectarse a cualquier parte de la Compuerta, no es obligatorio que se conecten a las esquinas del rombo.



Compuertas Buenas Prácticas


Flujo de Secuencia

Los flujos entrantes y salientes se pueden conectar a cualquier parte del borde de rombo, no necesariamente en sus esquinas.

Una Compuerta puede tener varios Flujos de Secuencia de entrada y salida, es decir, ser Convergente y Divergene al mismo tiempo. Sin embargo, es una Buena Práctica que una Compuerta solo realice una de estas funciones. Si se da el caso, habría que crear dos Compuertas consecutivas: primero una Convergente y luego otra Divergente.

BPMN especifica que una Compuerta puede ser estrictamente Divergente o Convergente, también puede ser a la vez Convergente y Divergente. Sin embargo, no recomienda usar esta última configuración.

Texto.


Flujo de Mensaje

Texto.

Texto.


Asociación

Texto.

Texto.

Exponer de otra manera: separara divergente y convergente.

Una Compuerta nunca puede ser el origen o el destino de un Flujo de Mensaje.

Una Compuerta puede tener cero (0), uno (1) o más Flujos de Secuencia entrantes, cero (0), uno (1) o más Flujos de Secuencia salientes.

Sólo las Compuertas especializadas de inicio pueden no tener flujos de secuencia entrante. Y en un subproceso embedido para crear un "Caja Paralela".

Si la Compuerta no tiene Flujo de Secuencia saliente, entonces marcará el fin de un camino del Proceso. Como Buena Práctica, esto solo debería ocurrir cuando se usa un Subproceso para crear una "Caja Paralela".

¿Puede, una Compuerta, tener solo un Flujo de Secuencia de entrada, y solo uno de salida? Una Compuerta debe tener múltiples flujos de secuencia entrantes o múltiples flujos de secuencia salientes. Es decir, debe ser divergente y/o convergente.

Los Flujos de Secuencia pueden conectarse a cualquier parte de la Compuerta, no es obligatorio que se conecten a las esquinas del rombo.



Temporal

Texto.Texto.

Texto.Texto.

Texto.Texto.

Texto.Texto.

Especificación BPMN

Expressions

The Expression class is used to specify an Expression using natural-language text. These Expressions are not executable. The natural language text is captured using the documentation attribute, inherited from BaseElement. [técnico]

Expressions are used in many places within BPMN to extract information from the different elements, normally data elements. The most common usage is when modeling decisions, where conditional Expressions are used to direct the flow along specific paths based on some criteria.[ok]

The definition of an Expression can be done in two ways: it can be contained where it is used, or it can be defined at the Process level and then referenced where it is used.[técnico]

Formal Expression

The FormalExpression class is used to specify an executable Expression using a specified Expression language. A natural-language description of the Expression can also be specified, in addition to the formal specification.[técnico]

The default Expression language for all Expressions is specified in the Definitions element, using the expressionLanguage attribute. It can also be overridden on each individual FormalExpression using the same attribute.[técnico]

A Gateway is used to control the divergence and convergence of Sequence Flows in a Process (see page 147, 286) and in a Choreography (see page 335, 344). Thus, it will determine branching, forking, merging, and joining of paths. Internal markers will indicate the type of behavior control.[ok]

Icons within the diamond shape of the Gateway will indicate the type of flow control behavior. Each type of control affects both the incoming and outgoing flow. The types of control include:[ok]

Exclusive decision and merging. Exclusive can be shown with or without the “X” marker. Perform exclusive decisions and merging.[ok]

Perform exclusive decisions and merging. Event-Based gateways can start a new instance of the Process.[ok]

Parallel Gateway forking and joining (see page 292). Parallel Event-based gateways start a new instance of the Process.[ok]

Inclusive Gateway decision and merging (see page 291).[ok]

Gateways are used to control how the Process flows (how Tokens flow) through Sequence Flows as they converge and diverge within a Process. If the flow does not need to be controlled, then a Gateway is not needed. The term “gateway” implies that there is a gating mechanism that either allows or disallows passage through the Gateway; that is, as tokens arrive at a Gateway, they can be merged together on input and/or split apart on output as the Gateway mechanisms are invoked.[ok]

Gateways, like Activities, are capable of consuming or generating additional control tokens, effectively controlling the execution semantics of a given Process. The main difference is that Gateways do not represent ‘work’ being done and they are considered to have zero effect on the operational measures of the Process being executed (cost, time, etc.).[ok]

The Gateway controls the flow of both diverging and converging Sequence Flows. That is, a single Gateway could have multiple input and multiple output flows. Modelers and modeling tools might want to enforce a best practice of a Gateway only performing one of these functions. Thus, it would take two sequential Gateways to first converge and then to diverge the Sequence Flows.[ok]

BPMN uses the term “fork” to refer to the dividing of a path into two or more parallel paths (also known as an AND-Split). It is a place in the Process where activities can be performed concurrently, rather than sequentially. There are two options:[ok]

Multiple Outgoing Sequence Flows can be used (see figure top-right). This represents “uncontrolled” flow is the preferred method for most situations.[ok]

A Parallel Gateway can be used (see figure bottom-right). This will be used rarely, usually in combination with other Gateways.[ok]

BPMN uses the term “join” to refer to the combining of two or more parallel paths into one path (also known as an AND-Join or synchronization). A Parallel Gateway is used to show the joining of multiple Sequence Flows.[ok]

Branching Points (or Decisions) are Gateways within a Process (see page 286) or a Choreography (see page 344) where the flow of control can take one or more alternative paths.[ok]

BPMN uses the term “merge” to refer to the exclusive combining of two or more paths into one path (also known as an OR-Join). A Merging Exclusive Gateway is used to show the merging of multiple Sequence Flows (see upper figure to the right). If all the incoming flow is alternative, then a Gateway is not needed. That is, uncontrolled flow provides the same behavior.[ok]

Gateway Direction: An attribute that adds constraints on how the Gateway MAY be used.[técnico]

  • Unspecified: There are no constraints. The Gateway MAY have any number of incoming and outgoing Sequence Flows.[técnico]
  • Converging: This Gateway MAY have multiple incoming Sequence Flows but MUST have no more than one (1) outgoing Sequence Flow.[técnico]
  • Diverging: This Gateway MAY have multiple outgoing Sequence Flows but MUST have no more than one (1) incoming Sequence Flow.[técnico]
  • Mixed: This Gateway contains multiple outgoing and multiple incoming Sequence Flows.[técnico]

A Gateway is a diamond, which has been used in many flow chart notations for exclusive branching and is familiar to most modelers. A Gateway is a diamond that MUST be drawn with a single thin line.[ok]

Gateways can define all the types of Business Process Sequence Flow behavior: Decisions/branching (exclusive, inclusive, and complex), merging, forking, and joining. Thus, while the diamond has been used traditionally for exclusive decisions, BPMN extends the behavior of the diamonds to reflect any type of Sequence Flow control. Each type of Gateway will have an internal indicator or marker to show the type of Gateway that is being used (see Figure 10.103).[ok]

NOTE: Although the shape of a Gateway is a diamond, it is not a requirement that incoming and outgoing Sequence Flows MUST connect to the corners of the diamond. Sequence Flows can connect to any position on the boundary of the Gateway shape.[ok]

This sub clause applies to all Gateways. Additional Sequence Flow Connection rules are specified for each type of Gateway in the sub clauses below.[ok]

A Gateway MAY be a target for a Sequence Flow. It can have zero (0), one (1), or more incoming Sequence Flows. If the Gateway does not have an incoming Sequence Flow, and there is no Start Event for the Process, then the Gateway’s divergence behavior, depending on the type of Gateway (see below), SHALL be performed when the Process is instantiated. (Es ambiguo, pues parece no tener en cuenta las compuertas especializadas de inicio.)[ok] specialized start gateways.)[ok]

A Gateway MAY be a source of a Sequence Flow; it can have zero, one, or more outgoing Sequence Flows.[ok]

A Gateway MUST have either multiple incoming Sequence Flows or multiple outgoing Sequence Flows (i.e., it MUST merge or split the flow).[ok]