Introducción
Un Proceso es un conjunto de Objetos de Flujo (Actividades, Compuertas y Eventos) unidos por Flujos de Secuencia, que determinan el orden en que Proceso fluye a través de los Objetos de Flujo.
BPMN incluye elementos que aportan información sobre el Proceso, pero que no son parte del Flujo de Proceso. Estos elementos son: Anotaciones de Texto, Datos y Actividades de Compensación. BPMN usa Asociaciones para conectar estos elementos complementarios con los Objetos de Flujo.
Los Tokens no fluyen por las Asociaciones y, por lo tanto, no tienen un efecto directo en el Flujo del Proceso.
Una Asociación se representa con un línea punteada. Si se necesita indicar una dirección, se puede agregar una punta de flecha en uno o en ambos sentidos.
Asociación desde y hacia Eventos
Los Eventos, como los demás elementos de BPMN, pueden unirse a Artefactos mediante Asociaciones (línea punteada simple).
Los Eventos Mensaje también se pueden unir a Objetos de Datos y Almacenes de Datos por medio de Asociaciones de Datos (línea punteada con punta de flecha).
Cuando un Evento captura un Mensaje, los datos que este transporta desde fuera del Proceso son pasados a Objetos y/o Almacenes de Datos dentro del Proceso. Por este motivo, un Evento Mensaje de Captura (Inicial o Intermedio) tiene un Flujo de Mensaje entrante y una o más Asociaciones de Datos salientes. En el caso del Evento Mensaje de Lanzamiento (Intermedio o Final) la situación es la inversa: una o más Asociaciones de Datos entrantes y un Flujo de Mensaje que sale del Proceso.
Asociaciones de Datos con Eventos Mensaje
| Posición del Evento | Modo | Entrante | Notación | Saliente | Descripción | |
|---|---|---|---|---|---|---|
| Evento Inicial | Proceso Principal | Captura | Una o más Asociaciones de Datos salientes que toman los datos del Mensaje entrante y los incorporan al Proceso. | |||
| Subproceso | Captura | N/A | ||||
| Evento Intermedio | en el Flujo | Captura | Una o más Asociaciones de Datos salientes que toman los datos del Mensaje entrante y los incorporan al Proceso. | |||
| Lanzamiento | Una o más Asociaciones de Datos entrantes que toman los datos del Proceso para construir el Mensaje a enviar. | |||||
| en el Borde | Captura con Interrupción | Una o más Asociaciones de Datos salientes que toman los datos del Mensaje entrante y los incorporan al Proceso. | ||||
| Captura sin Interrupción | Una o más Asociaciones de Datos salientes que toman los datos del Mensaje entrante y los incorporan al Proceso. | |||||
| Evento Final | Lanzamiento | Una o más Asociaciones de Datos entrantes que toman los datos del Proceso para construir el Mensaje a enviar. | ||||
Todo Evento Mensaje Capturador tiene a lo menos una Asociación de Datos saliente, y todo Evento Mensaje Lanzador tiene a lo menos una Asociación de Datos entrante, pero no es obligatorio que estas Asociaciones de Datos estén dibujadas en el diagrama.
Asociación a Artefactos
Actualmente BPMN define dos tipos de Artefactos: Anotación de Texto y Grupo.
Los Grupos, por definición, no están unidos a otros elementos.
Una Anotación de Texto puede estar unida, con Asociaciones, a varios elementos para resaltar que la información que contiene se refiere a esos elementos. Si la Anotación de Texto entrega información sobre el diagrama en general, no necesita Asociaciones.
Cuando se usa con Anotaciones de Texto, la Asociación no necesita dirección.
BPMN permite que modeladores y herramientas agreguen nuevos Artefactos. Si estos nuevos Artefactos requieren conectarse a otros elementos, deben hacerlo a través de Asociaciones.
Asociación de Datos
Procesos, Actividades y Eventos requieren y producen datos. Los datos son modelados con Objetos de Datos, Entradas de Datos y Salidas de Datos.
Las Asociaciones de Datos se utilizan para relacionar los datos con los elementos que los requieren o producen.
La Asociación de Datos tiene dirección, apunta al elemento que recibe los datos.
Alternativamente, los Objetos de Datos se pueden asociar directamente a un Flujo de Secuencia. Esta es una simplificación visual, pues sigue habiendo dos Asociaciones de Datos, una que va de la Actividad A hacia el Objeto de Datos, y otra que va desde éste hacia la Actividad B.
Una Actividad puede tener Asociaciones de Datos entrantes y salientes.
Un Evento de Captura (Mensaje, Señal, Error, Escalada) puede tener una Asociación de Datos de salida, que toma el ítem capturado y los coloca en un Objeto de Datos.
Un Evento de Lanzamiento (Mensaje, Señal, Error, Escalada) puede tener una Asociación de Datos de entrada, que toma los datos de un Objeto de Datos y los coloca en el Evento para construir el ítem a lanzar.
En su versión más simple, la Asociación de Datos actúa solo como un canal por el cual fluyen datos. Sin embargo, también puede definir reglas de transformación, de forma tal que los datos son modificados al pasar por la Asociación. Esto es relevante cuando se usa BPMN en la Ejecución de Procesos, pero no para el Modelado de Procesos.
En la Ejecución de Procesos, las Asociaciones de Datos pueden tener más de un origen, y su representación en el diagrama es opcional.
Asociación a Compensación
También se utiliza una Asociación para mostrar la Actividad encargada de manejar una Compensación. La Compensación ocurre fuera del Flujo del Proceso.
La Asociación nace en un Evento Intermedio de Compensación colocado en el borde de la Actividad que debe ser compensada. Y llega a una Actividad de Tipo Compensación.
La compensación sólo se activa en caso que la Actividad a compensar es parte de una Transacción y ésta falla. Entonces se compensarán las Actividades que hayan terminado con éxito. Por este motivo nunca pasará un Token desde el Evento Intermedio de Compensación hacia el Manejador de la Compensación.
Nótese que este es el único caso en que una Asociación se origina y llega a dos Objetos de Flujo: desde un Evento a una Actividad.
Especificación BPMN
An Association is used to link information and Artifacts with BPMN graphical elements (see page 65). Text Annotations (see page 69) and other Artifacts (see page 64) can be Associated with the graphical elements. An arrowhead on the Association indicates a direction of flow (e.g., data), when appropriate.
An Association is used to associate information and Artifacts with Flow Objects. Text and graphical non-Flow Objects can be associated with the Flow Objects and Flow. An Association is also used to show the Activity used for compensation. More information about compensation can be found on page 300.
An Association is line that MUST be drawn with a dotted single line (see Figure 8.9).
The use of text, color, size, and lines for an Association MUST follow the rules defined in “Use of Text, Color, Size, and Lines in a Diagram” on page 39.
If there is a reason to put directionality on the Association then a line arrowhead MAY be added to the Association line (see Figure 8.11). The directionality of the Association can be in one (1) direction or in both directions.
Note that directional Associations were used in BPMN 1.2 to show how Data Objects were inputs or outputs to Activities. In BPMN 2.0.2, a Data Association connector is used to show inputs and outputs (see page 220). A Data Association uses the same notation as a directed Association (as in Figure 8.11, above).
An Association is used to connect user-defined text (an Annotation) with a Flow Object (see Figure 8.12)
Compensation Association occurs outside the normal flow of the Process and is based upon a Compensation Intermediate Event that is triggered through the failure of a transaction or a throw Compensation Event (see page 302). The target of the Association MUST be marked as a Compensation Activity.
Data Associations are used to move data between Data Objects, Properties, and inputs and outputs of Activities, Processes, and GlobalTasks. Tokens do not flow along a Data Association, and as a result they have no direct effect on the flow of the Process.
The purpose of retrieving data from Data Objects or Process Data Inputs is to fill the Activities inputs and later push the output values from the execution of the Activity back into Data Objects or Process Data Outputs.
DataAssociation
The DataAssociation class is a BaseElement contained by an Activity or Event, used to model how data is pushed into or pulled from item-aware elements. DataAssociation elements have one or more sources and a target; the source of the association is copied into the target.
The ItemDefinition from the souceRef and targetRef MUST have the same ItemDefinition or the DataAssociation MUST have a transformation Expression that transforms the source ItemDefinition into the target ItemDefinition.
Optionally, Data Associations can be visually represented in the diagram by using the Association connector style (see Figure 10.65 and Figure 10.66).
The core concepts of a DataAssociation are that they have sources, a target, and an optional transformation.
When a data association is “executed,” data is copied to the target. What is copied depends if there is a transformation defined or not.
If there is no transformation defined or referenced, then only one source MUST be defined, and the contents of this source will be copied into the target.
If there is a transformation defined or referenced, then this transformation Expression will be evaluated and the result of the evaluation is copied into the target. There can be zero (0) to many sources defined in this case, but there is no requirement that these sources are used inside the Expression.
In any case, sources are used to define if the data association can be “executed,” if any of the sources is in the state of “unavailable,” then the data association cannot be executed, and the Activity or Event where the data association is defined MUST wait until this condition is met.
Data Associations are always contained within another element that defines when these data associations are going to be executed. Activities define two sets of data associations, while Events define only one.
For Events, there is only one set, but they are used differently for catch or throw Events. For a catch Event, data associations are used to push data from the Message received into Data Objects and properties. For a throw Event, data associations are used to fill the Message that is being thrown.
As DataAssociations are used in different stages of the Process and Activity lifecycle, the possible sources and targets vary according to that stage. This defines the scope of possible elements that can be referenced as source and target. For example: when an Activity starts executing, the scope of valid targets include the Activity data inputs, while at the end of the Activity execution, the scope of valid sources include Activity data outputs. Assignment
The Assignment class is used to specify a simple mapping of data elements using a specified Expression language.
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 Assignment using the same attribute.
The Assignment element inherits the attributes and model associations of BaseElement (see Table 8.5). Table 10.64 presents the additional attributes of the Assignment element. DataInputAssociation
The DataInputAssociation can be used to associate an ItemAwareElement element with a DataInput contained in an Activity. The source of such a DataAssociation can be every ItemAwareElement accessible in the current scope, e.g., a Data Object, a Property, or an Expression. DataOutputAssociation
The DataOutputAssociation can be used to associate a DataOutput contained within an ACTIVITY with any ItemAwareElement accessible in the scope the association will be executed in. The target of such a DataAssociation can be every ItemAwareElement accessible in the current scope, e.g., a Data Object, a Property, or an Expression.