---
title: "10.1 General"
chapter: "10 Process"
source: "OMG BPMN 2.0.2 — formal/2013-12-09"
pages: "143-147"
---

> 10 Process · páginas 143-147 · [índice](../README.md)


<a id="sec-10-1"></a>
## 10.1 General


**NOTE:** The content of this clause is REQUIRED for **BPMN Process Modeling Conformance** or for **BPMN Complete Conformance**. However, this clause is NOT REQUIRED for **BPMN Process Choreography Conformance**, **BPMN Process Execution Conformance**, or **BPMN BPEL Process Execution Conformance**. For more information about **BPMN** conformance types, see page 1. A **Process** describes a sequence or flow of **Activities** in an organization with the objective of carrying out work. In **BPMN** a **Process** is depicted as a graph of Flow Elements, which are a set of **Activities**, **Events**, **Gateways**, and **Sequence Flows** that define finite execution semantics (see Figure 10.1). **Processes** can be defined at any level from enterprise-wide **Processes** to **Processes** performed by a single person. Low-level **Processes** can be grouped together to achieve a common business goal.


<a id="fig-10-1"></a>
![Figure 10.1 – An Example of a Process](../figures/fig-10-1.png)

*Figure 10.1 – An Example of a Process* (p. 143)


Note that **BPMN** uses the term **Process** specifically to mean a set of *flow elements*. It uses the terms **Collaboration** and **Choreography** when modeling the interaction between **Processes**. The **Process** package contains classes that are used for modeling the flow of **Activities**, **Events**, and **Gateways**, and how they are sequenced within a **Process** (see Figure 10.2). When a **Process** is defined it is contained within


<a id="fig-10-2"></a>
![Figure 10.2 – Process class diagram](../figures/fig-10-2.png)

*Figure 10.2 – Process class diagram* (p. 144)


A **Process** is a CallableElement, allowing it to be referenced and reused by other **Processes** via the **Call Activity** construct. In this capacity, a **Process** MAY reference a set of Interfaces that define its external behavior. A **Process** is a reusable element and can be imported and used within other Definitions. Figure 10.3 shows the details of the attributes and model associations of a **Process**.


<a id="fig-10-3"></a>
![Figure 10.3 – Process Details class diagram](../figures/fig-10-3.png)

*Figure 10.3 – Process Details class diagram* (p. 145)


The **Process** element inherits the attributes and model associations of CallableElement (see Table 10.24) and of FlowElementContainer (see Table 8.45). Table 10.1 presents the additional attributes and model associations of the **Process** element:


<a id="tab-10-1"></a>
**Table 10.1 – Process Attributes & Model Associations**

| Attribute Name | Description/Usage |
| --- | --- |
| **processType**: ProcessType = none | The processType attribute Provides additional information about the |
| { None \| Private \| Public } | level of abstraction modeled by this **Process**. A public **Process** shows only those flow elements that are relevant to external consumers. Internal details are not modeled. These **Processes** are publicly visible and can be used within a **Collaboration**. Note that the public processType was named abstract in **BPMN 1.2**. A private **Process** is one that is internal to a specific organization. By default, the processType is “none,” meaning undefined. |
| **isExecutable**: boolean [0..1] | An optional Boolean value specifying whether the **Process** is executable. An executable **Process** is a private **Process** that has been modeled for the purpose of being executed according to the semantics of Clause 14. Of course, during the development cycle of the **Process**, there will be stages where the **Process** does not have enough detail to be “executable.” A non-executable **Process** is a private Process that has been modeled for the purpose of documenting **Process** behavior at a modeler-defined level of detail. Thus, information needed for execution, such as formal condition expressions are typically not included in a non-executable **Process**. For public **Processes**, no value has the same semantics as if the value were *false*. The value MAY not be *true* for public **Processes**. |
| **auditing**: Auditing [0..1] | This attribute provides a hook for specifying audit related properties. |
| **monitoring**: Monitoring [0..1] | This attribute provides a hook for specifying monitoring related properties. |
| **artifacts**: Artifact [0..*] | This attribute provides the list of **Artifacts** that are contained within the **Process**. |
| **IsClosed**: boolean = false | A boolean value specifying whether interactions, such as sending and receiving **Messages** and **Events**, not modeled in the **Process** can occur when the **Process** is executed or performed. If the value is *true*, they MAY NOT occur. If the value is *false*, they MAY occur. |
| **supports**: Process [0..*] | Modelers can declare that they intend all executions or performances of one **Process** to also be valid for another **Process**. This means they expect all the executions or performances of the first **Processes** to also follow the steps laid out in the second **Process**. |
| **properties**: Property [0..*] | Modeler-defined properties MAY be added to a **Process**. These properties are contained within the Process. All **Tasks and Sub- Processes** SHALL have access to these properties. |
| **resources**: ResourceRole [0..*] | Defines the resource that will perform or will be responsible for the **Process**. The resource, e.g., a performer, can be specified in the form of a specific individual, a group, an organization role or position, or an organization. Note that the assigned resources of the **Process** does not determine the assigned resources of the **Activities** that are contained by the **Process**. See more details about resource assignment on page 152. |
| **correlationSubscriptions**: CorrelationSubscription [0..*] | correlationSubscriptions are a feature of context-based correlation (cf. sub clause 8.3.3). CorrelationSubscriptions are used to correlate incoming **Messages** against data in the **Process** context. A **Process** MAY contain several correlationSubscriptions. |
| **definitionalCollaborationRef**: Collaboration [0..1] | For **Processes** that interact with other Participants, a definitional **Collaboration** can be referenced by the **Process.** The definitional **Collaboration** specifies the Participants the **Process** interacts with, and more specifically, which individual service, Send or **Receive Task,** or **Message Event,** is connected to which Participant through **Message Flows.** The definitional **Collaboration** need not be displayed. Additionally, the definitional **Collaboration** can be used to include **Conversation** information within a **Process.** |


In addition, a **Process** *instance* has attributes whose values MAY be referenced by Expressions (see Table 10.2). These values are only available when the **Process** is being executed.


<a id="tab-10-2"></a>
**Table 10.2 – Process instance attributes**

| Attribute Name | Description/Usage |
| --- | --- |
| **state**: string = None | See Figure 13.2 ("The Lifecycle of a BPMN Activity") in Section 13.3.2 for permissible values. |

