Resumen. Resumen. Resumen. Resumen. Resumen. Resumen.
Resumen. Resumen. Resumen. Resumen. Resumen. Resumen.
Texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto. Texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto.
Texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto. Texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto texto.
Tipos de Subprocesos
Un Subproceso es una Actividad compuesta, en el sentido que se modela en un nivel más detallado con un diagrama BPMN.
Un Subproceso se dibuja, como cualquier Actividad, con un rectángulo redondeado. Puede presentarse colapsado o expandido.
| Tipo | Notación | Descripción |
|---|---|---|
| Colapsado | Icons | El diagrama BPMN que describe el Subproceso está oculto. Un cuadrado pequeño con un signo más (+) en la parte inferior central del rectángulo indica que el Subproceso está colapsado, y lo distingue de una Tarea. Al estar colapsado, el Subproceso simplifica el diagrama que lo contiene. |
| Expandido | Icons | El diagrama BPMN que describe el Subproceso está visible. El rectángulo está expandido para acomodar el diagrama. No se coloca el cuadrado pequeño con un signo más (+) en la parte inferior del rectángulo. No puede haber Flujos de Secuencia desde Objetos de Flujo del Proceso que contiene el Subproceso hacia Objetos de Flujo al interior del Subproceso. |
Un Subproceso define ámbito contextual para visibilidad de atributos, alcance transaccional, para el manejo de excepciones, para compensaciones.
Cuando un diagrama BMPN contiene un Subproceso (colapsado o expandido) hay dos escenarios:
- El Subproceso es parte del Flujo del Proceso que lo contiene, es decir, tiene Flujos de Secuencia entrantes y/o salientes, y se activa cuando llega un Token por un Flujo de Secuencia entrante. Hay dos variantes:
-
El Subproceso está contendido (embebido, anidado) dentro del Proceso donde está diagramado.
- El Subproceso es responsabilidad del rol representado por la Piscina/Carril que lo contiene.
- Por lo anterior, el diagrama del detalle del Subproceso no puede tener Piscinas ni Carriles.
- El Subproceso y el Proceso que lo contiene comparten los mismos datos.
-
El Subproceso hace referencia a otro Proceso.
- El Subproceso no contiene un diagrama, sino una referencia a un Proceso Principal.
- Para crear la referencia se utiliza una Actividad de Llamada (rectángulo de línea gruesa).
- El Proceso Principal referenciado está en su propia Piscina y puede contener Carriles. Además, puede estar dentro de una Colaboración con otras Piscinas.
- El Proceso referenciado es independiente del que lo llama, y puede ser llamado desde varios otros Procesos. Además, puede actuar de manera independiente.
- El Proceso que llama y el llamado no comparten el mismo conjunto de datos. Para el traspaso de datos deben usarse Entradas/Salidas de Datos.
- Es un Subproceso Evento que no es parte del Flujo del Proceso que lo contiene, es decir, no tiene Flujos de Secuencia entrantes o salientes, y se activa cuando ocurre el Evento que marca su inicio. Como su nombre lo indica, tiene caraterísticas de un Subproceso y de un Evento.
Nota: en BPMN 1.2 se usaban los términos Subproceso Embebido (Embedded Sub-Process) y Subproceso Reutilizable (Reusable Sub-Process) respectivamente. En BPMN 2.0 hubo un cambio en la terminología, ahora Subproceso Embebido es Subproceso a secas, y Subproceso Reutilizable es Actividad de Llamada a un Proceso predefinido. Sin embargo, en la misma especificación de BPMN 2.0, al explicar los conceptos, siguen usando las expresiones de BPMN 1.2. Nos parece que los términos más claros son: Subproceso Embebido, y Llamada a Proceso (reutilizable) respectivamente.
Variantes de Subproceso Embebido
Además del Subproceso Embebido normal, hay tres variantes: Transacción, Ad-Hoc y Subproceso Evento.
| Descripción | Expandido | Colapsado |
|---|---|---|
| Ad hoc. Un subproceso ad-hoc tiene en su parte central inferior un símbolo de tilde (∼). | Icons | Icons |
| Transacción. El rectángulo redondeado se dibuja con línea doble. | Icons | Icons |
| Evento. El rectángulo redondeado se dibuja con línea punteada. | Icons | Icons |
Marcadores
Los Subprocesos pueden tener hasta cuatro Marcadores en su parte inferior central: Marcador de Iteración (con tres variantes), Marcador de Compensación, Marcador Ad-Hoc y Marcador Colapsado.
- Un Subproceso sin Marcadores es un Subproceso normal expandido.
- Un Subproceso puede tener hasta cuatro Marcadores.
- Solo se puede utilizar un Marcador de Iteración (Estádar, Multi-Instancia Paralelo, Multi-Instancia Secuencial).
- Un Marcador de Iteración se puede usar en combinación con cualquiera de los otros Marcadores.
- El Marcador de Subproceso Colapsado se puede usar en combinación con cualquiera de los otros Marcadores.
- El Marcador de Compensación se puede usar en combinación con cualquiera de los otros Marcadores.
- El Marcador Ad-Hoc se puede usare en combinación con cualquiera de los otros Marcadores.
- Todos los Marcadores presentes deben estar agrupados, y todo el grupo debe estar centrado en la parte inferior del Subproceso. Si el Subproceso está colapsado, los Marcadores de Compensación e Iteración deben estar a la izquierda del signa más (+), y el Marcador Ad-Hoc a derecha del mismo.
Semántica de Ejecución
Execution Semantics
La siguiente descripción aplica para todos las variantes de Subprocesos, excepto para Subprocesos Evento, y Subprocesos usados como Manejadores de Compensación.
Un Subproceso puede tener varios Flujos de Secuencia entrantes y varios Flujos de Secuencia salientes.
Un Subproceso tiene un único Evento inicial de tipo Vacío (no puede tener Eventos iniciales de otros tipos), o ningún Evento Inicial.
Una vez que se instancia un Subproceso, sus elementos se comportan como en un Proceso normal. La instanciación y finalización de un Subproceso se define de la siguiente manera:
Once a Sub-Process is instantiated, its elements behave as in a normal Process. The instantiation and completion of a Sub-Process is defined as follows:
- Se crea una instancia de un Subproceso cuando llega un Token desde un Flujo de Secuencia. Si el Subproceso tiene un Evento inicial (Vacío), el Token llega a éste. Si el Subproceso no tiene Evento incial, todas las Actividades y/o Compuertas sin Flujo se Secuencia entrantes obtienen un Token.
- La instancia del Subproceso se completa cuando no hay más Tokens en el Subproceso y ninguna de sus actividades sigue Activa.
- Si se llega a un Evento Final Terminar, el Subproceso finaliza de manera anormal. Para un Evento Final Calcelar, el Subproceso se termina de manera anormal y la Transacción asociada es abortada. El control abandona el Subproceso a través de un Evento Intermedio de borde Cancelar. Para todos los demás Eventos Finales, se ejecuta el comportamiento asociado con el tipo del Evento.
- Si se llama a un Proceso global a través de una Actividad de Llamada, entonces la Actividad de Llamada tiene la misma semántica de instanciación y terminación que un Subproceso embebido. Sin embargo, el Proceso Global llamado puede tener también Eventos Iniciales no Vacíos, los que son ignorados cuando se llama al Proceso desde otro Proceso.
Especificación BPMN
A Sub-Process is a compound Activity that is included within a Process (see page 171) or Choreography (see page 335). It is compound in that it can be broken down into a finer level of detail (a Process or Choreography) through a set of sub-Activities.
A Sub-Process is an Activity whose internal details have been modeled using Activities, Gateways, Events, and Sequence Flows. A Sub-Process is a graphical object within a Process, but it also can be “opened up” to show a lower-level Process.
A Sub-Process is an Activity that encapsulates a Process that is in turn modeled by Activities, Gateways, Events, and Sequence Flows.
They are used to create a context for exception handling that applies to a group of Activities (see page 274 for more details). Compensations can be handled similarly (see page 301 for more details).
A Sub-Process object shares the same shape as the Task object, which is a rounded rectangle.
The Sub-Process can be in a collapsed view that hides its details (see Figure 10.25 ) or a Sub-Process can be in an expanded view that shows its details within the view of the Process in which it is contained (see Figure 10.26 ).
Collapsed Sub-Process The details of the Sub-Process are not visible in the Diagram (see page 171). A “plus” sign in the lower-center of the shape indicates that the Activity is a Sub-Process and has a lowerlevel of detail. In the collapsed form, the Sub-Process object uses a marker to distinguish it as a Sub-Process, rather than a Task. The Sub-Process marker MUST be a small square with a plus sign (+) inside. The square MUST be positioned at the bottom center of the shape.
Expanded Sub-Process The boundary of the Sub-Process is expanded and the details (a Process) are visible within its boundary (see page 171). Note that Sequence Flows cannot cross the boundary of a Sub-Process.
Sub-Processes define a contextual scope that can be used for attribute visibility, transactional scope, for the handling of exceptions (see page 274 for more details), of Events, or for compensation (see page 301 for more details).
The Sub-Process now corresponds to the Embedded Sub-Process of BPMN 1.2. The Reusable Sub-Process of BPMN 1.2 corresponds to the Call Activity (calling a Process - see page 182). Figure 10.29 shows the class diagram related to SubProcesses. A nested (or embedded) Sub-Process is an activity that shares the same set of data as its parent process (see page 171). This is opposed to a Sub-Process that is independent, re-usable, and referenced from the parent process. Data needs to be passed to the referenced Sub-Process, but not to the nested Sub-Process.
Ad-Hoc. An Ad-Hoc Sub-Process is a rounded corner rectangle that MUST be drawn with a single thin line.The marker for an ad-hoc Sub-Process MUST be a “tilde” symbol.
Transaction. A boundary drawn with a double line SHALL be reserved for Transaction Sub-Processes.
Event. boundary drawn with a dotted line SHALL be reserved for Event Sub-Processes.
A Sub-Process is instantiated when it is reached by a Sequence Flow token. The Sub-Process has either a unique empty Start Event, which gets a token upon instantiation, or it has no Start Event but Activities and Gateways without incoming Sequence Flows. In the latter case all such Activities and Gateways get a token. A Sub-Process MUST not have any non-empty Start Events.
A Sub-Process instance completes when there are no more tokens in the Sub-Process and none of its activities is still active.
If a “terminate” End Event is reached, the Sub-Process is abnormally terminated. For a “cancel” End Event, the Sub-Process is abnormally terminated and the associated Transaction is aborted. Control leaves the Sub-Process through a cancel intermediate boundary Event. For all other End Events, the behavior associated with the Event type is performed, e.g., the associated Message is sent for a Message End Event, the associated signal is sent for a signal End Event, and so on.
If a global Process is called through a Call Activity, then the Call Activity has the same instantiation and termination semantics as a Sub-Process. However, in contrast to a Sub-Process, the global Process that is called MAY also have non-empty Start Events. These non-empty Start Events are alternative to the empty Start Event and hence they are ignored when the Process is called from another Process.