BBO
type: Ontology
imports: uo.owl
created by: Amina ANNANE, Nathalie Aussenac and Mouna Kamel
comment: BBO is a business process ontology. The core element of BBO is a formalization of a BPMN 2.0 fragment (namely Chapter 10 of BPMN 2.0 specification). BPMN 2.0 is state-of-the-art meta-model of business processes. Copyright © 2019 MELODI @ Toulouse Institute of Computer Science Research
label: BPMNbasedOntology
version info: 1.0.0

dependsOn
type: ObjectProperty
domain: Activity
range: Activity
comment: If an Activity A dependsOn an Activity B, A can not start before completing B.

has_activationCondition
type: ObjectProperty
inverse of: has_complexGateway
type: FunctionalProperty
domain: ComplexGateway
range: Expression
comment: Determines which combination of incoming tokens will be synchronized for activation of the Gateway.

has_activity
type: ObjectProperty
type: FunctionalProperty
range: Activity
comment: [IRIT]denotes the activity related to the source element

has_activityRef
type: ObjectProperty
type: FunctionalProperty
domain: CompensateEventDefinition
range: Activity
comment: For a Start Event: This Event “catches” the compensation for an Event Sub-Process. No further information is REQUIRED. The Event Sub-Process will provide the Id necessary to match the Compensation Event with the Event that threw the compensation, or the compensation will have been a broadcast. For an End Event: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level). For an Intermediate Event within normal flow: The Activity to be compensated MAY be supplied. If an Activity is not supplied, then the compensation is broadcast to all completed Activities in the current Sub- Process (if present), or the entire Process instance (if at the global level). This “throws” the compensation. For an Intermediate Event attached to the boundary of an Activity: This Event “catches” the compensation. No further information is REQUIRED. The Activity the Event is attached to will provide the Id necessary to match the Compensation Event with the Event that threw the compensation, or the compensation will have been a broadcast.

has_boundaryEventRef
type: ObjectProperty
inverse of: attachedToRef
domain: Activity
range: BoundaryEvent
comment: This references the Intermediate Events that are attached to the boundary of the Activity.

has_callableElement
type: ObjectProperty
domain: Class
  union of: InputOutputBinding
  union of: Interface
range: CallableElement

has_calledElement
type: ObjectProperty
type: FunctionalProperty
domain: CallActivity
range: CallableElement
comment: The element to be called, which will be either a Process or a GlobalTask.

has_completionCondition
type: ObjectProperty
type: FunctionalProperty
domain: Class
  union of: AdHocSubProcess
  union of: MultiInstanceLoopCharacteristics
range: Expression
comment: This attribute defines a boolean Expression that when evaluated to true, cancels the remaining Activity instances and produces a token.

has_complexGateway
type: ObjectProperty
type: FunctionalProperty
domain: Expression
range: ComplexGateway
comment: [IRIT] references the ComplexGateway which is concerned with the Expression

has_condition
type: ObjectProperty
domain: Class
  union of: ComplexBehaviorDefinition
  union of: ConditionalEventDefinition
range: Class
  union of: Expression
  union of: FormalExpression
comment: This relation has two source concepts. The definition is related to the source concept: (1) conditionalEventDefinition: The Expression might be underspecified and provided in the form of natural language. For executable Processes (isExecutable = true), if the trigger is Conditional, then a FormalExpression MUST be entered. (2) complexBehaviorDefinition: This attribute defines a boolean Expression that when evaluated to true, cancels the remaining Activity instances and produces a token.

has_conditionExpression
type: ObjectProperty
inverse of: has_sequenceFlow
type: FunctionalProperty
domain: SequenceFlow
range: Expression
comment: An optional boolean Expression that acts as a gating condition. A token will only be placed on this Sequence Flow if this conditionExpression evaluates to true.

has_container
type: ObjectProperty
inverse of: has_flowElements
type: FunctionalProperty
domain: FlowElement
range: FlowElementsContainer
comment: [IRIT] this relation references the FlowElementContainer that includes the FlowElement

has_default
type: ObjectProperty
inverse of: has defaultElement
type: FunctionalProperty
domain: Class
  union of: Activity
  union of: ComplexGateway
  union of: ExclusiveGateway
  union of: InclusiveGateway
range: SequenceFlow
comment: The Sequence Flow that will receive a token when none of the conditionExpressions on other outgoing Sequence Flows evaluate to true. The default Sequence Flow should not have a conditionExpression. Any such Expression SHALL be ignored.

has_errorRef
type: ObjectProperty
domain: Class
  union of: ErrorEventDefinition
  union of: Operation
range: Error
comment: for an Operation instance: specifies errors that the Operation may return. An Operation MAY refer to zero or more Error elements.
comment: for an ErrorEventDefinition instance: If the trigger is an Error, then an Error payload MAY be provided.

has_escalationRef
type: ObjectProperty
type: FunctionalProperty
domain: EscalationEventDefinition
range: Escalation
comment: If the trigger is an Escalation, then an Escalation payload MAY be provided.

has_eventDefinition
type: ObjectProperty
inverse of: has eventDefinitionEvent
domain: Event
range: EventDefinition
comment: Defines the event EventDefinitions that are triggers expected for a catch Event. These EventDefinitions are only valid inside the current Event. • If there is no EventDefinition defined, then this is considered a catch None Event and the Event will not have an internal marker (see Figure 10.91). • If there is more than one EventDefinition defined, this is considered a catch Multiple Event and the Event will have the pentagon internal marker (see Figure 10.90). This is an ordered set.

has_exclusiveGateway
type: ObjectProperty
domain: SequenceFlow
range: ExclusiveGateway
comment: [IRIT] specifies the exclusive gateway referenced by the default sequence flow

has_expression
type: ObjectProperty
type: FunctionalProperty
range: Expression
comment: The Expression that evaluates the value used to bind the ResourceParameter. (ResourceParameterBinding)

has_flowElements
type: ObjectProperty
domain: FlowElementsContainer
range: FlowElement
comment: This association specifies the particular flow elements contained in a FlowElementContainer. Flow elements are Events, Gateways, Sequence Flows, Activities, Data Objects, Data Associations, and Choreography Activities.

has_inclusiveGateway
type: ObjectProperty
domain: SequenceFlow
range: InclusiveGateway
comment: [IRIT] specifies the inclusive gateway referenced by the default sequence flow

has_incoming
type: ObjectProperty
inverse of: has_targetRef
domain: FlowNode
range: SequenceFlow
comment: identifies the incoming Sequence Flow of the FlowNode.

has_inputSet
type: ObjectProperty
domain: Class
  union of: InputOutputSpecification
  union of: ThrowEvent
range: InputSet
comment: A reference to the InputSets defined by the InputOutputSpecification. Every InputOutputSpecification MUST define at least one InputSet.

has_ioBinding
type: ObjectProperty
domain: CallableElement
range: InputOutputBinding
comment: The InputOutputBinding defines a combination of one InputSet and one OutputSet in order to bind this to an operation defined in an interface.

has_ioSpecification
type: ObjectProperty
type: FunctionalProperty
domain: Class
  union of: Activity
  union of: CallableElement
  union of: InputSet
  union of: OutputSet
range: InputOutputSpecification
comment: The InputOutputSpecification defines the inputs and outputs and the InputSets and OutputSets for the Activity. See page 211 for more information on the InputOutputSpecification.

has_loopCharacteristics
type: ObjectProperty
type: FunctionalProperty
domain: Activity
range: LoopCharacteristics
comment: An Activity MAY be performed once or MAY be repeated. If repeated, the Activity MUST have loopCharacteristics that define the repetition criteria (if the isExecutable attribute of the Process is set to true).

has_loopCondition
type: ObjectProperty
type: FunctionalProperty
domain: StandardLoopCharacteristics
range: Expression
comment: A boolean Expression that controls the loop. The Activity will only loop as long as this condition is true. The looping behavior MAY be underspecified, meaning that the modeler can simply document the condition, in which case the loop cannot be formally executed.

has_messageRef
type: ObjectProperty
type: FunctionalProperty
domain: Class
  union of: MessageEventDefinition
  union of: ReceiveTask
  union of: SendTask
range: Message
comment: The Message MUST be supplied (if the isExecutable attribute of the Process is set to true).

has_noneBehaviorEventRef
type: ObjectProperty
type: FunctionalProperty
domain: MultiInstanceLoopCharacteristics
range: EventDefinition

has_oneBehaviorEventRef
type: ObjectProperty
type: FunctionalProperty
domain: MultiInstanceLoopCharacteristics
range: EventDefinition
comment: The EventDefinition which is thrown when behavior is set to one and the first internal Activity instance has completed.

has_operationRef
type: ObjectProperty
type: FunctionalProperty
domain: Class
  union of: InputOutputBinding
  union of: MessageEventDefinition
  union of: ReceiveTask
  union of: SendTask
  union of: ServiceTask
range: Operation
comment: This attribute specifies the operation that is invoked

has_outgoing
type: ObjectProperty
inverse of: has_sourceRef
domain: FlowNode
range: SequenceFlow
comment: identifies the outgoing Sequence Flow of the FlowNode.

has_outputSet
type: ObjectProperty
domain: InputOutputSpecification
range: OutputSet
comment: A reference to the OutputSets defined by the InputOutputSpecification. Every InputOutputSpecification MUST define at least one OutputSet.

has_parameterRef
type: ObjectProperty
type: FunctionalProperty
range: ResourceParameter
comment: Reference to the parameter defined by the Resource.

has_prefix
type: ObjectProperty
domain: UnitOfMeasure
range: UO_0000046
comment: This relation allows to specifiy the prefix (centi, mili, etc.) of a given unit of measure.

has_process
type: ObjectProperty
type: FunctionalProperty
range: Process
comment: the process assigned to the resource role

has_property
type: ObjectProperty
inverse of: has propertyElement
domain: Class
  union of: Activity
  union of: Event
  union of: Process
range: Property
comment: 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.

has_resourceParameterBindings
type: ObjectProperty
comment: This defines the Parameter bindings used for the Resource assignment (see below). Is only applicable if a resourceRef is specified.

has_resourceParameters
type: ObjectProperty
domain: Resource
range: ResourceParameter
comment: This model association specifies the definition of the parameters needed at runtime to resolve the Resource.

has_sequenceFlow
type: ObjectProperty
type: FunctionalProperty
domain: Class
  union of: ConditionExpression
  union of: FlowNode
range: SequenceFlow
comment: [IRIT] specifies the SequenceFlow of the FlowNode

has_signalRef
type: ObjectProperty
type: FunctionalProperty
domain: SignalEventDefinition
range: Signal
comment: [IRIT] specifies the Signal of the SignalEventDefinition

has source
type: ObjectProperty
domain: LinkEventDefinition
range: LinkEventDefinition
comment: Used to reference the corresponding 'catch' or 'target' LinkEventDefinition, when this LinkEventDefinition represents a 'throw' or 'source' LinkEventDefinition.

has_sourceRef
type: ObjectProperty
type: FunctionalProperty
domain: SequenceFlow
range: FlowNode
comment: The FlowNode that the Sequence Flow is connecting from. For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the source. However, Activities that are Event Sub-Processes are not allowed to be a source. For a Choreography: Of the types of FlowNode, only Choreography Activities, Gateways, and Events can be the source.

has_supportedInterfaceRefs
type: ObjectProperty
domain: CallableElement
range: Interface
comment: The Interfaces describing the external behavior provided by this element.

has target
type: ObjectProperty
domain: LinkEventDefinition
range: LinkEventDefinition
comment: Used to reference the corresponding 'throw' or 'source' LinkEventDefinition, when this LinkEventDefinition represents a 'catch' or 'target' LinkEventDefinition.

has_targetRef
type: ObjectProperty
type: FunctionalProperty
domain: SequenceFlow
range: FlowNode
comment: The FlowNode that the Sequence Flow is connecting to. For a Process: Of the types of FlowNode, only Activities, Gateways, and Events can be the target. However, Activities that are Event Sub-Processes are not allowed to be a target. For a Choreography: Of the types of FlowNode, only Choreography Activities, Gateways, and Events can be the target.

has_timeCycle
type: ObjectProperty
type: FunctionalProperty
domain: TimerEventDefinition
range: Expression
property disjoint with: has_timeDate
property disjoint with: has_timeDuration
comment: If the trigger is a Timer, then a timeCycle MAY be entered. Timer attributes are mutually exclusive and if any of the other Timer attributes is set, timeCycle MUST NOT be set (if the isExecutable attribute of the Process is set to true). The return type of the attribute timeCycle MUST conform to the ISO-8601 format for recurring time interval representations.

has_timeDate
type: ObjectProperty
type: FunctionalProperty
domain: TimerEventDefinition
range: Expression
property disjoint with: has_timeDuration
comment: If the trigger is a Timer, then a timeDate MAY be entered. Timer attributes are mutually exclusive and if any of the other Timer attributes is set, timeDate MUST NOT be set (if the isExecutable attribute of the Process is set to true). The return type of the attribute timeDate MUST conform to the ISO-8601 format for date and time representations.

has_timeDuration
type: ObjectProperty
type: FunctionalProperty
domain: TimerEventDefinition
range: Expression
comment: If the trigger is a Timer, then a timeDuration MAY be entered. Timer attributes are mutually exclusive and if any of the other Timer attributes is set, timeDuration MUST NOT be set (if the isExecutable attribute of the Process is set to true). The return type of the attribute timeDuration MUST conform to the ISO-8601 format for time interval representations.

attachedToRef
type: ObjectProperty
type: FunctionalProperty
domain: BoundaryEvent
range: Activity
comment: Denotes the Activity that boundary Event is attached to.

supports
type: ObjectProperty
domain: Process
range: Process
comment: 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.

takesPlaceAt
type: ObjectProperty
domain: Class
  union of: Activity
  union of: Process
range: ManufacturingFacility
comment: Allows to specifiy where the activity or the process will take place

body
type: DatatypeProperty
domain: FormalExpression
comment: The body of the Expression.

cancelRemainingInstances
type: DatatypeProperty
domain: AdHocSubProcess
range: boolean
comment: This attribute is used only if ordering is parallel. It determines whether running instances are cancelled when the completionCondition becomes true.

completionQuantity
type: DatatypeProperty
domain: Activity
range: integer
comment: This attribute defines the number of tokens that MUST be generated from the Activity. This number of tokens will be sent done any outgoing Sequence Flow (assuming any Sequence Flow conditions are satisfied). Note that any value for the attribute that is greater than 1 is an advanced type of modeling and should be used with caution.

errorCode
type: DatatypeProperty
domain: Error
range: string
comment: For an End Event: If the result is an Error, then the errorCode MUST be supplied (if the processType attribute of the Process is set to executable) This “throws” the Error. For an Intermediate Event within normal flow: If the trigger is an Error, then the errorCode MUST be entered (if the processType attribute of the Process is set to executable). This “throws” the Error. For an Intermediate Event attached to the boundary of an Activity: If the trigger is an Error, then the errorCode MAY be entered. This Event “catches” the Error. If there is no errorCode, then any error SHALL trigger the Event. If there is an errorCode, then only an Error that matches the errorCode SHALL trigger the Event.

escalationCode
type: DatatypeProperty
domain: Escalation
range: string
comment: For an End Event: If the Result is an Escalation, then the escalationCode MUST be supplied (if the processType attribute of the Process is set to executable). This “throws” the Escalation. For an Intermediate Event within normal flow: If the trigger is an Escalation, then the escalationCode MUST be entered (if the processType attribute of the Process is set to executable). This “throws” the Escalation. For an Intermediate Event attached to the boundary of an Activity: If the trigger is an Escalation, then the escalationCode MAY be entered. This Event “catches” the Escalation. If there is no escalationCode, then any Escalation SHALL trigger the Event. If there is an escalationCode, then only an Escalation that matches the escalationCode SHALL trigger the Event.

id
type: DatatypeProperty
type: FunctionalProperty
range: string
comment: This attribute is used to uniquely identify BPMN elements. The id is REQUIRED if this element is referenced or intended to be referenced by something else. If the element is not currently referenced and is never intended to be referenced, the id MAY be omitted.

implementation
type: DatatypeProperty
domain: Class
  union of: GlobalBusinessRuleTask
  union of: GlobalUserTask
  union of: ReceiveTask
  union of: SendTask
  union of: ServiceTask
  union of: UserTask
comment: This attribute specifies the technology that will be used to send and receive the Messages. Valid values are ##unspecified for leaving the implementation technology open, ##WebService for the Web service technology or a URI identifying any other technology or coordination protocol. A Web service is the default technology.

instantiate
type: DatatypeProperty
domain: Class
  union of: EventBasedGateway
  union of: ReceiveTask
range: boolean
comment: When true, receipt of one of the Events will instantiate the Process instance.

isClosed
type: DatatypeProperty
domain: Process
range: boolean
comment: 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.

isExecutable
type: DatatypeProperty
domain: Process
range: boolean
comment: 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 Chapter 14 (see page 426). 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.

isForCompensation
type: DatatypeProperty
domain: Activity
range: boolean
comment: A flag that identifies whether this Activity is intended for the purposes of compensation. If false, then this Activity executes as a result of normal execution flow. If true, this Activity is only activated when a Compensation Event is detected and initiated under Compensation Event visibility scope (see page 281 for more information on scopes).

isImmediate
type: DatatypeProperty
type: FunctionalProperty
domain: SequenceFlow
range: boolean
comment: An optional boolean value specifying whether Activities or Choreography Activities not in the model containing the Sequence Flow can occur between the elements connected by the Sequence Flow. If the value is true, they MAY NOT occur. If the value is false, they MAY occur. Also see the isClosed attribute on Process, Choreography, and Collaboration. When the attribute has no value, the default semantics depends on the kind of model containing Sequence Flows: • For non-executable Processes (public Processes and non-executable private Processes) and Choreographies no value has the same semantics as if the value were false. • For an executable Processes no value has the same semantics as if the value were true. • For executable Processes, the attribute MUST NOT be false.

isRequired
type: DatatypeProperty
domain: ResourceParameter
range: boolean
comment: Specifies, if a parameter is optional or mandatory.

isSequential
type: DatatypeProperty
domain: MultiInstanceLoopCharacteristics
range: boolean
comment: This attribute is a flag that controls whether the Activity instances will execute sequentially or in parallel.

language
type: DatatypeProperty
type: FunctionalProperty
domain: FormalExpression
range: string
comment: Overrides the Expression language specified in the Definitions. The language MUST be specified in a URI format.

loopMaximum
type: DatatypeProperty
type: FunctionalProperty
domain: StandardLoopCharacteristics
range: integer
comment: Serves as a cap on the number of iterations.

method
type: DatatypeProperty
domain: Transaction
comment: The method is an attribute that defines the Transaction method used to commit or cancel a Transaction. For executable Processes, it SHOULD be set to a technology specific URI, e.g., http://schemas.xmlsoap.org/ws/2004/10/wsat for WSAtomicTransaction, or http://docs.oasis-open.org/ws-tx/wsba/2006/06/AtomicOutcome for WS-BusinessActivity.

name
type: DatatypeProperty
range: string
comment: The descriptive name of the element.

parallelMultiple
type: DatatypeProperty
domain: CatchEvent
range: boolean
comment: This attribute is only relevant when the catch Event has more than EventDefinition (Multiple). If this value is true, then all of the types of triggers that are listed in the catch Event MUST be triggered before the Process is instantiated.

script
type: DatatypeProperty
type: FunctionalProperty
domain: ScriptTask
range: string
comment: The modeler MAY include a script that can be run when the Task is performed. If a script is not included, then the Task will act as the equivalent of an Abstract Task.

scriptFormat
type: DatatypeProperty
type: FunctionalProperty
domain: ScriptTask
range: string
comment: Defines the format of the script. This attribute value MUST be specified with a mime-type format. And it MUST be specified if a script is provided.

scriptLanguage
type: DatatypeProperty
domain: GlobalScriptTask
range: string

startQuantity
type: DatatypeProperty
domain: Activity
range: integer
comment: This attribute defines the number of tokens that MUST arrive before the Activity can begin. Note that any value for the attribute that is greater than 1 is an advanced type of modeling and should be used with caution.

testBefore
type: DatatypeProperty
domain: StandardLoopCharacteristics
range: boolean
comment: Flag that controls whether the loop condition is evaluated at the beginning (testBefore = true) or at the end (testBefore = false) of the loop iteration.

waitForCompletion
type: DatatypeProperty
domain: CompensateEventDefinition
range: boolean
comment: For a throw Compensation Event, this flag determines whether the throw Intermediate Event waits for the triggered compensation to complete (the default), or just triggers the compensation and immediately continues (the BPMN 1.2 behavior).

Activity
type: Class
subclass of: FlowNode
subclass of: Class
  complement of: Restriction
    on property: has_outgoing
    qualified cardinality: 1
    on class: ConditionalSequenceFlow
subclass of: Restriction
  on property: has_default
  max qualified cardinality: 1
  on class: SequenceFlow
subclass of: Restriction
  on property: has_ioSpecification
  max qualified cardinality: 1
  on class: InputOutputSpecification
subclass of: Restriction
  on property: has_loopCharacteristics
  max qualified cardinality: 1
  on class: LoopCharacteristics
subclass of: Restriction
  on property: takesPlaceAt
  max qualified cardinality: 1
  on class: ManufacturingFacility
disjoint with: Event
disjoint with: Gateway
comment: Work that a company or organization performs using business processes. An activity can be atomic or non-atomic (compound). The types of activities that are a part of a Process Model are: Process, Sub-Process, and Task.

AdHocSubProcess
type: Class
subclass of: SubProcess
subclass of: Class
  complement of: Restriction
    on property: has_flowElements
    some values from: Class
      union of: EndEvent
      union of: StartEvent
subclass of: Restriction
  on property: has_flowElements
  some values from: Activity
subclass of: Restriction
  on property: has_completionCondition
  qualified cardinality: 1
  on class: Expression
comment: An Ad-Hoc Sub-Process is a specialized type of Sub-Process that is a group of Activities that have no REQUIRED sequence relationships. A set of Activities can be defined for the Process, but the sequence and number of performances for the Activities is determined by the performers of the Activities.

Agent
type: Class
comment: Person or a Software that performs an activity

AllMultiInstanceLoopCharacteristics
type: Class
subclass of: MultiInstanceLoopCharacteristics
comment: All: no Event is ever thrown, a token is produced after completion of all instances. Any thrown Events can be caught by boundary Events on the Multi-Instance Activity.

BoundaryEvent
type: Class
subclass of: CatchEvent
subclass of: Restriction
  on property: attachedToRef
  qualified cardinality: 1
  on class: Activity

BusinessRuleTask
type: Class
subclass of: Task
comment: A Business Rule Task provides a mechanism for the Process to provide input to a Business Rules Engine and to get the output of calculations that the Business Rules Engine might provide. The InputOutputSpecification of the Task (see page 211) will allow the Process to send data to and receive data from the Business Rules Engine.

CallActivity
type: Class
subclass of: Activity
subclass of: Restriction
  on property: has_calledElement
  max qualified cardinality: 1
  on class: CallableElement
comment: A Call Activity identifies a point in the Process where a global Process or a Global Task is used. The Call Activity acts as a ‘wrapper’ for the invocation of a global Process or Global Task within the execution. The activation of a call Activity results in the transfer of control to the called global Process or Global Task.

CallableElement
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: has_ioSpecification
  max qualified cardinality: 1
  on class: InputOutputSpecification
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: CallableElement is the abstract super class of all Activities that have been defined outside of a Process or Choreography but which can be called (or reused), by a Call Activity, from within a Process or Choreography. It MAY reference Interfaces that define the service operations that it provides. The BPMN elements that can be called by Call Activities (i.e., are CallableElements) are: Process and GlobalTask (see Figure 10.43).

CancelEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: CancelEventDefinition
subclass of: Event
disjoint with: IntermediateCatchEvent
disjoint with: IntermediateThrowEvent
disjoint with: InterruptingEventSubProcessStartEvent
disjoint with: NonEventSubProcessStartEvent
disjoint with: NonInterruptingBoundaryEvent
disjoint with: ProcessStartEvent

CancelEventDefinition
type: Class
subclass of: EventDefinition
comment: Cancel Events are only used in the context of modeling Transaction Sub-Processes (see page 178 for more details on Transactions). There are two variations: a catch Intermediate Event and an End Event.

CatchEvent
type: Class
subclass of: Event
comment: Events that catch a trigger. All Start Events and some Intermediate Events are catching Events.

Cell
type: Class
subclass of: ManufacturingFacility
subclass of: Restriction
  on property: is partOf
  max qualified cardinality: 1
  on class: Shop
comment: /

CompensateEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_activityRef
  max qualified cardinality: 1
  on class: Activity
comment: Compensation Events are used in the context of triggering or handling compensation (see page 302 for more details on compensation). There are four variations: a Start Event, both a catch and throw Intermediate Event, and an End Event.

CompensationEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: CompensateEventDefinition
subclass of: Event
disjoint with: IntermediateCatchEvent
disjoint with: NonEventSubProcessStartEvent
disjoint with: NonInterruptingBoundaryEvent
disjoint with: InterruptingEventSubProcessStartEvent
disjoint with: ProcessStartEvent

ComplexBehaviorDefinition
type: Class
subclass of: Restriction
  on property: has_condition
  qualified cardinality: 1
  on class: FormalExpression
subclass of: Restriction
  on property: has multiInstanceLoopCharacteristics
  qualified cardinality: 1
  on class: MultiInstanceLoopCharacteristics
subclass of: Restriction
  on property: has event
  max qualified cardinality: 1
  on class: ImplicitThrowEvent
comment: This element controls when and which Events are thrown in case behavior of the Multi-Instance Activity is set to complex.

ComplexGateway
type: Class
subclass of: Gateway
subclass of: Restriction
  on property: has_activationCondition
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has_default
  max qualified cardinality: 1
  on class: SequenceFlow
comment: The Complex Gateway can be used to model complex synchronization behavior. An Expression activationCondition is used to describe the precise behavior. For example, this Expression could specify that tokens on three out of five incoming Sequence Flows are needed to activate the Gateway. What tokens are produced by the Gateway is determined by conditions on the outgoing Sequence Flows as in the split behavior of the Inclusive Gateway. If tokens arrive later on the two remaining Sequence Flows, those tokens cause a reset of the Gateway and new token can be produced on the outgoing Sequence Flows. To determine whether it needs to wait for additional tokens before it can reset, the Gateway uses the synchronization semantics of the Inclusive Gateway.

ComplexMultiInstanceLoopCharacteristics
type: Class
subclass of: MultiInstanceLoopCharacteristics
comment: Complex: the complexBehaviorDefinitions are consulted to determine if and which Events to throw. Any thrown Events can be caught by boundary Events on the Multi-Instance Activity.

Component
type: Class
subclass of: MaterialResource
comment: /

Computer
type: Class
subclass of: MaterialResource

ConditionExpression
type: Class
subclass of: Expression
subclass of: Restriction
  on property: has_sequenceFlow
  max qualified cardinality: 1
  on class: SequenceFlow
comment: /

ConditionalEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: ConditionalEventDefinition
subclass of: Event
disjoint with: EndEvent
disjoint with: IntermediateThrowEvent
disjoint with: NonEventSubProcessStartEvent

ConditionalEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_condition
  qualified cardinality: 1
  on class: Expression
comment: /

ConsumableResource
type: Class
subclass of: Resource
comment: /

ConvergingGateway
type: Class
equivalent class: Class
  intersection of: Gateway
  intersection of: Restriction
    on property: has_incoming
    min qualified cardinality: 2
    on class: SequenceFlow
  intersection of: Restriction
    on property: has_outgoing
    qualified cardinality: 1
    on class: SequenceFlow
subclass of: Gateway

DataResource
type: Class
subclass of: Resource
comment: /

Database
type: Class
subclass of: DataResource
comment: /

DefaultSequenceFlow
type: Class
equivalent class: Class
  intersection of: SequenceFlow
  intersection of: Restriction
    on property: has defaultElement
    qualified cardinality: 1
    on class: Class
      union of: Activity
      union of: ComplexGateway
      union of: ExclusiveGateway
      union of: InclusiveGateway
subclass of: SequenceFlow

Device
type: Class
subclass of: MaterialResource
comment: /

DivergingGateway
type: Class
equivalent class: Class
  intersection of: Gateway
  intersection of: Restriction
    on property: has_outgoing
    min qualified cardinality: 2
    on class: SequenceFlow
  intersection of: Restriction
    on property: has_incoming
    qualified cardinality: 1
    on class: SequenceFlow
subclass of: Gateway

DocumentResource
type: Class
subclass of: DataResource
comment: /

EndEvent
type: Class
subclass of: ThrowEvent
subclass of: Class
  complement of: Restriction
    on property: has_outgoing
    some values from: SequenceFlow
subclass of: Restriction
  on property: has_incoming
  some values from: SequenceFlow
disjoint with: LinkEvent
disjoint with: ParallelMultipleEvent
disjoint with: TimerEvent
comment: As the name implies, the End Event indicates where a Process will end. In terms of Sequence Flows, the End Event ends the flow of the Process, and thus, will not have any outgoing Sequence Flows—no Sequence Flow can connect from an End Event.

Enterprise
type: Class
subclass of: ManufacturingFacility
comment: /

EquipmentDraw
type: Class
subclass of: TechnicalDocument
comment: Type of technical documentation containing the design information of a material resource.

Error
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An Error represents the content of an Error Event or the Fault of a failed Operation. An ItemDefinition is used to specify the structure of the Error. An Error is generated when there is a critical problem in the processing of an Activity or when the execution of an Operation failed.

ErrorEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: ErrorEventDefinition
subclass of: Event
disjoint with: IntermediateCatchEvent
disjoint with: IntermediateThrowEvent
disjoint with: NonEventSubProcessStartEvent
disjoint with: NonInterruptingBoundaryEvent
disjoint with: InterruptingEventSubProcessStartEvent
disjoint with: ProcessStartEvent

ErrorEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_errorRef
  max qualified cardinality: 1
  on class: Error
comment: /

Escalation
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An Escalation identifies a business situation that a Process might need to react to. An ItemDefinition is used to specify the structure of the Escalation.

EscalationEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: EscalationEventDefinition
subclass of: Event
disjoint with: IntermediateCatchEvent
disjoint with: NonEventSubProcessStartEvent
disjoint with: ProcessStartEvent

EscalationEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_escalationRef
  max qualified cardinality: 1
  on class: Escalation
comment: /

Event
type: Class
subclass of: FlowNode
disjoint with: Gateway
comment: An Event is something that “happens” during the course of a Process. These Events affect the flow of the Process and usually have a cause or an impact and in general require or allow for a reaction. The term “event” is general enough to cover many things in a Process. The start of an Activity, the end of an Activity, the change of state of a document, a Message that arrives, etc., all could be considered Events.

EventBasedGateway
type: Class
subclass of: Gateway
subclass of: Class
  complement of: Restriction
    on property: has_outgoing
    some values from: ConditionalSequenceFlow
subclass of: Restriction
  on property: has_outgoing
  min qualified cardinality: 2
  on class: SequenceFlow
comment: The Event-Based Gateway represents a branching point in the Process where the alternative paths that follow the Gateway are based on Events that occur, rather than the evaluation of Expressions using Process data (as with an Exclusive or Inclusive Gateway). A specific Event, usually the receipt of a Message, determines the path that will be taken. Basically, the decision is made by another Participant, based on data that is not visible to Process, thus, requiring the use of the Event-Based Gateway.

EventDefinition
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: has eventDefinitionEvent
  max qualified cardinality: 1
  on class: Event
comment: Event Definitions refers to the triggers of Catch Events (Start and receive Intermediate Events) and the Results of Throw Events (End Events and send Intermediate Events). The types of Event Definitions are: CancelEventDefinition, CompensationEventDefinition, ConditionalEventDefinition ErrorEventDefinition, EscalationEventDefinition, MessageEventDefinitio, LinkEventDefinition, SignalEventDefinition, TerminateEventDefinition, an TimerEventDefinition (see Table 10.93). A None Event is determined by an Event that does not specify an Event Definition. A Multiple Event is determined by an Event that specifies more than one Event Definition. The different types of Events (Start, End, and Intermediate) utilize a subset of the available types of Event Definitions.

EventSubProcess
type: Class
subclass of: SubProcess
subclass of: Class
  union of: Restriction
    on property: has_incoming
    some values from: SequenceFlow
  union of: Restriction
    on property: has_outgoing
    some values from: SequenceFlow
subclass of: Restriction
  on property: has_flowElements
  qualified cardinality: 1
  on class: EventSubProcessStartEvent
comment: EventBasedSubProcess

EventSubProcessStartEvent
type: Class
equivalent class: Class
  intersection of: SubProcessStartEvent
  intersection of: Restriction
    on property: has_eventDefinition
    some values from: Class
      union of: CompensateEventDefinition
      union of: ConditionalEventDefinition
      union of: ErrorEventDefinition
      union of: EscalationEventDefinition
      union of: MessageEventDefinition
      union of: SignalEventDefinition
subclass of: SubProcessStartEvent
comment: The StartEvent of an EventBasedSubProcess

ExclusiveGateway
type: Class
subclass of: Gateway
subclass of: Restriction
  on property: has_default
  max qualified cardinality: 1
  on class: SequenceFlow
comment: A diverging Exclusive Gateway (Decision) is used to create alternative paths within a Process flow. This is basically the “diversion point in the road” for a Process. For a given instance of the Process, only one of the paths can be taken.

ExecutableBusinessProcess
type: Class
subclass of: PrivateProcess

ExecutableScript
type: Class
subclass of: DocumentResource
comment: /

Expression
type: Class
subclass of: Restriction
  on property: has_complexGateway
  max qualified cardinality: 1
  on class: ComplexGateway
comment: 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.

Factory
type: Class
subclass of: ManufacturingFacility
subclass of: Restriction
  on property: is partOf
  max qualified cardinality: 1
  on class: Enterprise
comment: /

FlowElement
type: Class
subclass of: Restriction
  on property: has_container
  qualified cardinality: 1
  on class: FlowElementsContainer
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: FlowElement is the abstract super class for all elements that can appear in a Process flow, which are FlowNodes (see page 99, which consist of Activities (see page 151), Choreography Activities (see page 321) Gateways (see page 287), and Events (see page 233), Data Objects (see page 205), Data Associations (see page 221), and Sequence Flows (see page 97).

FlowElementsContainer
type: Class
comment: /

FlowNode
type: Class
subclass of: FlowElement
disjoint with: SequenceFlow
comment: The FlowNode element is used to provide a single element as the source and target Sequence Flow associations (see Figure 8.35) instead of the individual associations of the elements that can connect to Sequence Flows (see the section above). Only the Gateway, Activity, Choreography Activity, and Event elements can connect to Sequence Flows and thus, these elements are the only ones that are sub-classes of FlowNode.

FormalExpression
type: Class
subclass of: Expression
subclass of: Restriction
  on property: language
  max qualified cardinality: 1
  on data range: string
comment: 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.

Gateway
type: Class
subclass of: FlowNode
subclass of: Class
  union of: Restriction
    on property: has_incoming
    min qualified cardinality: 2
    on class: SequenceFlow
  union of: Restriction
    on property: has_outgoing
    min qualified cardinality: 2
    on class: SequenceFlow
comment: Gateways are used to control how Sequence Flows interact 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.

GlobalBusinessRuleTask
type: Class
subclass of: GlobalTask
comment: /

GlobalManualTask
type: Class
subclass of: GlobalTask
comment: /

GlobalScriptTask
type: Class
subclass of: GlobalTask
comment: /

GlobalTask
type: Class
subclass of: CallableElement
comment: A Global Task is a reusable, atomic Task definition that can be called from within any Process by a Call Activity.

GlobalUserTask
type: Class
subclass of: GlobalTask
comment: /

Group
type: Class
subclass of: HumanResource
subclass of: Restriction
  on property: groups
  min qualified cardinality: 2
  on class: Person
subclass of: Restriction
  on property: has leader
  max qualified cardinality: 1
  on class: Person
disjoint with: Person
comment: The Group class represents a collection of individual agents (and may itself play the role of a Agent, ie. something that can perform actions). [Definition extracted from FOAF Vocabulary Specification 0.99]

HumanResource
type: Class
subclass of: Agent
subclass of: Resource
disjoint with: WorkProduct
comment: Human agents contributing to the execution of business processes.

ImplicitThrowEvent
type: Class
subclass of: ThrowEvent
comment: A sub-type of throw Event is the ImplicitThrowEvent. This is a non-graphical Event that is used for Multi-Instance Activities (see page 191).

InclusiveGateway
type: Class
subclass of: Gateway
subclass of: Restriction
  on property: has_default
  max qualified cardinality: 1
  on class: SequenceFlow
comment: A diverging Inclusive Gateway (Inclusive Decision) can be used to create alternative but also parallel paths within a Process flow. Unlike the Exclusive Gateway, all condition Expressions are evaluated. The true evaluation of one condition Expression does not exclude the evaluation of other condition Expressions. All Sequence Flows with a true evaluation will be traversed by a token. Since each path is considered to be independent, all combinations of the paths MAY be taken, from zero to all. However, it should be designed so that at least one path is taken.

InputOutputBinding
type: Class
subclass of: Restriction
  on property: has inputResourceRef
  qualified cardinality: 1
  on class: Resource
subclass of: Restriction
  on property: has_operationRef
  qualified cardinality: 1
  on class: Operation
subclass of: Restriction
  on property: has outputResourceRef
  qualified cardinality: 1
  on class: Resource
subclass of: Restriction
  on property: has_callableElement
  max qualified cardinality: 1
  on class: CallableElement
comment: When a CallableElement is exposed as a Service, it has to define one or more InputOutputBinding elements. An InputOutputBinding element binds one Input and one Output of the InputOutputSpecification to an Operation of a Service Interface.

InputOutputSpecification
type: Class
subclass of: Restriction
  on property: has_inputSet
  min qualified cardinality: 1
  on class: InputSet
subclass of: Restriction
  on property: has_outputSet
  min qualified cardinality: 1
  on class: OutputSet
subclass of: Restriction
  on property: has_activity
  max qualified cardinality: 1
  on class: Activity
comment: /

InputSet
type: Class
subclass of: Restriction
  on property: has_ioSpecification
  qualified cardinality: 1
  on class: InputOutputSpecification
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An InputSet is a collection of Resource elements that together define a valid set of Resources for an InputOutputSpecification. An InputOutputSpecification MUST have at least one InputSet element. An InputSet MAY reference zero or more Resource elements. A single Resource MAY be associated with multiple InputSet elements, but it MUST always be referenced by at least one InputSet.

Interface
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: has interfaceOperation
  min qualified cardinality: 1
  on class: Operation
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An interface defines a set of operations that are implemented by Services.

IntermediateCatchEvent
type: Class
subclass of: CatchEvent
disjoint with: NoneEvent
disjoint with: TerminateEvent
comment: A Message Intermediate Event can be used to either send a Message or receive a Message. When used to “catch” the Message, then the Event marker MUST be unfilled (see the lower figure on the right).

IntermediateEvent
type: Class
equivalent class: Class
  union of: BoundaryEvent
  union of: IntermediateCatchEvent
  union of: IntermediateThrowEvent
subclass of: Event
subclass of: Restriction
  on property: has_outgoing
  some values from: SequenceFlow
comment: The Intermediate Event indicates where something happens (an Event) somewhere between the start and end of a Process. It will affect the flow of the Process, but will not start or (directly) terminate the process.

IntermediateThrowEvent
type: Class
subclass of: ThrowEvent
disjoint with: ParallelMultipleEvent
disjoint with: TerminateEvent
disjoint with: TimerEvent
comment: A Message Intermediate Event can be used to either send a Message or receive a Message.

InterruptingBoundaryEvent
type: Class
subclass of: BoundaryEvent
disjoint with: LinkEvent
disjoint with: NoneEvent
disjoint with: TerminateEvent
comment: the Activity attached to this event should be cancelled

InterruptingEventSubProcessStartEvent
type: Class
subclass of: EventSubProcessStartEvent
disjoint with: LinkEvent
disjoint with: NoneEvent
disjoint with: TerminateEvent

Job
type: Class
subclass of: Restriction
  on property: has superiorJob
  max qualified cardinality: 1
  on class: Job

LinkEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: LinkEventDefinition
subclass of: Event
disjoint with: NonEventSubProcessStartEvent
disjoint with: NonInterruptingBoundaryEvent
disjoint with: InterruptingEventSubProcessStartEvent
disjoint with: ProcessStartEvent

LinkEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has source
  min qualified cardinality: 1
  on class: LinkEventDefinition
subclass of: Restriction
  on property: has target
  qualified cardinality: 1
  on class: LinkEventDefinition
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: A Link Event is a mechanism for connecting two sections of a Process. Link Events can be used to create looping situations or to avoid long Sequence Flow lines. The use of Link Events is limited to a single Process level (i.e., they cannot link a parent Process with a Sub-Process).

LoopCharacteristics
type: Class
subclass of: Restriction
  on property: has loopActivity
  max qualified cardinality: 1
  on class: Activity
comment: Activities MAY be repeated sequentially, essentially behaving like a loop. The presence of LoopCharacteristics signifies that the Activity has looping behavior. LoopCharacteristics is an abstract class. Concrete subclasses define specific kinds of looping behavior.

ManualTask
type: Class
subclass of: Task
comment: A Manual Task is a Task that is expected to be performed without the aid of any business process execution engine or any application. An example of this could be a telephone technician installing a telephone at a customer location.

ManufacturingFacility
type: Class
subclass of: Thing
comment: /

MaterialResource
type: Class
subclass of: Resource
comment: a physical resource

Message
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: A Message represents the content of a communication between two Participants. In BPMN 2.0, a Message is a graphical decorator (it was a supporting element in BPMN 1.2). An ItemDefinition is used to specify the Message structure.

MessageEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_messageRef
  max qualified cardinality: 1
  on class: Message
subclass of: Restriction
  on property: has_operationRef
  max qualified cardinality: 1
  on class: Operation
comment: /

MixedGateway
type: Class
equivalent class: Class
  intersection of: Gateway
  intersection of: Restriction
    on property: has_incoming
    min qualified cardinality: 2
    on class: SequenceFlow
  intersection of: Restriction
    on property: has_outgoing
    min qualified cardinality: 2
    on class: SequenceFlow
subclass of: Gateway

MultiInstanceLoopCharacteristics
type: Class
subclass of: LoopCharacteristics
subclass of: Restriction
  on property: has_completionCondition
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has inputResourceItem
  max qualified cardinality: 1
  on class: Resource
subclass of: Restriction
  on property: has loopCardinality
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has loopResourceInputRef
  max qualified cardinality: 1
  on class: ResourceCollection
subclass of: Restriction
  on property: has loopResourceOutputRef
  max qualified cardinality: 1
  on class: ResourceCollection
subclass of: Restriction
  on property: has_noneBehaviorEventRef
  max qualified cardinality: 1
  on class: EventDefinition
subclass of: Restriction
  on property: has_oneBehaviorEventRef
  max qualified cardinality: 1
  on class: EventDefinition
subclass of: Restriction
  on property: has outputResourceItem
  max qualified cardinality: 1
  on class: Resource
comment: The MultiInstanceLoopCharacteristics class allows for creation of a desired number of Activity instances. The instances MAY execute in parallel or MAY be sequential. Either an Expression is used to specify or calculate the desired number of instances or a data driven setup can be used. In that case a data input can be specified, which is able to handle a collection of data. The number of items in the collection determines the number of Activity instances. This data input can be produced by an input Data Association. The modeler can also configure this loop to control the tokens produced.

MultipleEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    min qualified cardinality: 2
    on class: EventDefinition
subclass of: Event
disjoint with: NonEventSubProcessStartEvent

NonExecutableBusinessProcess
type: Class
subclass of: PrivateProcess

NonInterruptingBoundaryEvent
type: Class
subclass of: BoundaryEvent
disjoint with: NoneEvent
disjoint with: TerminateEvent
comment: the Activity attached to this event should not be cancelled

InterruptingEventSubProcessStartEvent
type: Class
subclass of: EventSubProcessStartEvent
disjoint with: NoneEvent
disjoint with: TerminateEvent

NoneMultiInstanceLoopCharacteristics
type: Class
subclass of: MultiInstanceLoopCharacteristics
comment: None: the EventDefinition which is associated through the noneEvent association will be thrown for each instance completing. Any thrown Events can be caught by boundary Events on the Multi-Instance Activity.

OneMultiInstanceLoopCharacteristics
type: Class
subclass of: MultiInstanceLoopCharacteristics
comment: One: the EventDefinition referenced through the oneEvent association will be thrown upon the first instance completing. Any thrown Events can be caught by boundary Events on the Multi-Instance Activity.

Operation
type: Class
subclass of: Restriction
  on property: has inMessageRef
  qualified cardinality: 1
  on class: Message
subclass of: Restriction
  on property: has operationInterface
  qualified cardinality: 1
  on class: Interface
subclass of: Restriction
  on property: has outMessageRef
  max qualified cardinality: 1
  on class: Message
comment: An Operation defines Messages that are consumed and, optionally, produced when the Operation is called. It can also define zero or more errors that are returned when operation fails. The Operation inherits the attributes and model associations of BaseElement

OutputSet
type: Class
subclass of: Restriction
  on property: has_ioSpecification
  qualified cardinality: 1
  on class: InputOutputSpecification
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: An OutputSet is a collection of Resource elements that together can be produced as output from an Activity or Event. An InputOutputSpecification element MUST define at least OutputSet element. An OutputSet MAY reference zero or more Resource elements. A single Resource output MAY be associated with multiple OutputSet elements, but it MUST always be referenced by at least one OutputSet.

ParallelAdHocSubProcess
type: Class
subclass of: AdHocSubProcess
comment: all the Activities of the Sub-Process can be performed in parallel

ParallelGateway
type: Class
subclass of: Gateway
comment: A Parallel Gateway is used to synchronize (combine) parallel flows and to create parallel flows.

ParallelMultipleEvent
type: Class
subclass of: MultipleEvent
comment: all of the types of EventDefinition that are listed in the Event MUST be triggered.

Parameter
type: Class
comment: A specific characteristic of an object that may have different values

ParameterExpectedValue
type: Class

ParameterValue
type: Class

ParameterValueBinding
type: Class
subclass of: Restriction
  on property: has parameter
  qualified cardinality: 1
  on class: Parameter
subclass of: Restriction
  on property: has parameterExpectedValue
  max qualified cardinality: 1
  on class: ParameterExpectedValue
subclass of: Restriction
  on property: has parameterValue
  max qualified cardinality: 1
  on class: ParameterValue
comment: An abstract class that binds a parameter to its value, and eventually its expected value.

Person
type: Class
subclass of: HumanResource
comment: Human individual

PrivateProcess
type: Class
subclass of: Process
comment: A process that is internal to a specific organization and is the type of process that has been generally called a workflow or BPM process.

Process
type: Class
subclass of: CallableElement
subclass of: FlowElementsContainer
subclass of: Restriction
  on property: takesPlaceAt
  max qualified cardinality: 1
  on class: ManufacturingFacility
comment: 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 Flow that adhere to a finite execution semantics.

Property
type: Class
subclass of: Restriction
  on property: has propertyElement
  qualified cardinality: 1
  on class: Class
    union of: Activity
    union of: Event
    union of: Process
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: 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.

PublicProcess
type: Class
subclass of: Process

QualitativeParameter
type: Class
subclass of: Parameter
disjoint with: QuantitativeParameter
comment: parameters that have only qualitative values

QuantitativeParameter
type: Class
subclass of: Parameter
subclass of: Restriction
  on property: has unitOfMeasure
  max qualified cardinality: 1
  on class: UnitOfMeasure
comment: parameters that have only quantitative values

ReceiveTask
type: Class
subclass of: Task
subclass of: Restriction
  on property: has_messageRef
  max qualified cardinality: 1
  on class: Message
subclass of: Restriction
  on property: has_operationRef
  max qualified cardinality: 1
  on class: Operation
comment: A Receive Task is a simple Task that is designed to wait for a Message to arrive from an external Participant (relative to the Process). Once the Message has been received, the Task is completed.

Rendering
type: Class
subclass of: Restriction
  on property: has renderingTask
  qualified cardinality: 1
  on class: Class
    union of: GlobalUserTask
    union of: UserTask

Resource
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: The Resource class is used to specify resources that can be referenced by Activities. These Resources can be Human Resources as well as any other resource assigned to Activities during Process execution time. The definition of a Resource is “abstract,” because it only defines the Resource, without detailing how e.g., actual user IDs are associated at runtime. Multiple Activities can utilize the same Resource.

ResourceCollection
type: Class
comment: An abstract class that groups a set of resources

ResourceParameter
type: Class
subclass of: Parameter
subclass of: Restriction
  on property: has resource
  qualified cardinality: 1
  on class: Resource
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: A parameter related to a specific resource, only one resource

ResourceState
type: Class

Role
type: Class

RootElement
type: Class
comment: RootElement is the abstract super class for all BPMN elements that are contained within Definitions. When contained within Definitions, these elements have their own defined life-cycle and are not deleted with the deletion of other elements. Examples of concrete RootElements include Collaboration, Process, and Choreography. Depending on their use, RootElements can be referenced by multiple other elements (i.e., they can be reused). Some RootElements MAY be contained within other elements instead of Definitions. This is done to avoid the maintenance overhead of an independent life-cycle. For example, an EventDefinition would be contained in a Process since it is used only there. In this case the EventDefinition would be dependent on the tool life-cycle of the Process.

Scheme
type: Class
subclass of: TechnicalDocument
comment: /

ScriptTask
type: Class
subclass of: Task
subclass of: Restriction
  on property: script
  max qualified cardinality: 1
  on data range: string
subclass of: Restriction
  on property: scriptFormat
  max qualified cardinality: 1
  on data range: string
comment: A Script Task is executed by a business process engine. The modeler or implementer defines a script in a language that the engine can interpret. When the Task is ready to start, the engine will execute the script. When the script is completed, the Task will also be completed.

SendTask
type: Class
subclass of: Task
subclass of: Restriction
  on property: has_messageRef
  max qualified cardinality: 1
  on class: Message
subclass of: Restriction
  on property: has_operationRef
  max qualified cardinality: 1
  on class: Operation
comment: A Send Task is a simple Task that is designed to send a Message to an external Participant (relative to the Process). Once the Message has been sent, the Task is completed.

SequenceFlow
type: Class
subclass of: FlowElement
subclass of: Class
  complement of: Class
    intersection of: Restriction
      on property: has_conditionExpression
      some values from: Expression
    intersection of: Restriction
      on property: has_sourceRef
      some values from: Class
        union of: EventBasedGateway
        union of: ParallelGateway
subclass of: Restriction
  on property: has_sourceRef
  qualified cardinality: 1
  on class: FlowNode
subclass of: Restriction
  on property: has_targetRef
  qualified cardinality: 1
  on class: FlowNode
subclass of: Restriction
  on property: has_conditionExpression
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has defaultElement
  max qualified cardinality: 1
  on class: Class
    union of: Activity
    union of: ComplexGateway
    union of: ExclusiveGateway
    union of: InclusiveGateway
subclass of: Restriction
  on property: isImmediate
  max qualified cardinality: 1
  on data range: boolean
comment: A connecting object that shows the order in which activities are performed in a Process and is represented with a solid graphical line. Each Flow has only one source and only one target. A Sequence Flow can cross the boundaries between Lanes of a Pool but cannot cross the boundaries of a Pool.

Axiom
annotated source: SequenceFlow
annotated property: subClassOf
annotated target: Class
  complement of: Class
    intersection of: Restriction
      on property: has_conditionExpression
      some values from: Expression
    intersection of: Restriction
      on property: has_sourceRef
      some values from: Class
        union of: EventBasedGateway
        union of: ParallelGateway
comment: A source Gateway MUST NOT be of type Parallel or Event (for a conditional sequence flow) (p.97) We have added this restriction to the SequenceFlow class rather than the ConditionalSequenceFlow class to state that it is inconsistent to have a SequenceFlow which is at the same time Conditional and has parallel or eventbased gateway source. Otherwise, it would be possible to have such a SequenceFlow classified as a NormalSequenceFlow.

SequentialAdHocSubProcess
type: Class
subclass of: AdHocSubProcess
comment: only one Activity can be performed at a time

ServiceTask
type: Class
subclass of: Task
subclass of: Restriction
  on property: has_operationRef
  max qualified cardinality: 1
  on class: Operation
comment: A Service Task is a Task that uses some sort of service, which could be a Web service or an automated application.

Shop
type: Class
subclass of: ManufacturingFacility
subclass of: Restriction
  on property: is partOf
  max qualified cardinality: 1
  on class: Factory
comment: /

Signal
type: Class
subclass of: RootElement
subclass of: Restriction
  on property: name
  max qualified cardinality: 1
  on data range: string
comment: A BPMN Signal is similar to a signal flare that shot into the sky for anyone who might be interested to notice and then react. Thus, there is a source of the Signal, but no specific intended target.

SignalEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: SignalEventDefinition
subclass of: Event

SignalEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Restriction
  on property: has_signalRef
  qualified cardinality: 1
  on class: Signal
comment: /

SoftwareResource
type: Class
subclass of: Agent
subclass of: Resource
subclass of: Restriction
  on property: is installedOn
  min qualified cardinality: 1
  on class: Computer
comment: A software used by an agent to perform a process, or a software agent that executes specific tasks.

SparePart
type: Class
subclass of: MaterialResource
comment: /

StandardLoopCharacteristics
type: Class
subclass of: LoopCharacteristics
subclass of: Restriction
  on property: has_loopCondition
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: loopMaximum
  max qualified cardinality: 1
  on data range: integer
comment: The StandardLoopCharacteristics class defines looping behavior based on a boolean condition. The Activity will loop as long as the boolean condition is true. The condition is evaluated for every loop iteration, and MAY be evaluated at the beginning or at the end of the iteration. In addition, a numeric cap can be optionally specified. The number of iterations MAY NOT exceed this cap.

StartEvent
type: Class
subclass of: CatchEvent
subclass of: Class
  complement of: Restriction
    on property: has_incoming
    some values from: SequenceFlow
subclass of: Restriction
  on property: has_outgoing
  some values from: SequenceFlow
comment: As the name implies, the Start Event indicates where a particular Process will start. In terms of Sequence Flows, the Start Event starts the flow of the Process, and thus, will not have any incoming Sequence Flows—no Sequence Flow can connect to a Start Event. flow of the Process and does not have any incoming Sequence Flow, but can have a Trigger. The Start Event is displayed as a circle, drawn with a single thin line.

Station
type: Class
subclass of: ManufacturingFacility
subclass of: Restriction
  on property: is partOf
  max qualified cardinality: 1
  on class: Cell
comment: /

SubProcess
type: Class
subclass of: Activity
subclass of: FlowElementsContainer
comment: A Process that is included within another Process.

SubProcessStartEvent
type: Class
subclass of: StartEvent

Task
type: Class
subclass of: Activity
comment: An atomic activity that is included within a Process. A Task is used when the work in the Process is not broken down to a finer level of Process Model detail. Generally, an end-user, an application, or both will perform the Task. A Task object shares the same shape as the Sub-Process, which is a rectangle that has rounded corners.

TechnicalDocument
type: Class
subclass of: DocumentResource
comment: Specific type of document containing technical information about material or software resources such as the user manual.

Telecommand
type: Class
subclass of: DataResource
comment: /

TerminateEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: TerminateEventDefinition
subclass of: Event

TerminateEventDefinition
type: Class
subclass of: EventDefinition
comment: /

ThrowEvent
type: Class
subclass of: Event
subclass of: Restriction
  on property: has_inputSet
  min qualified cardinality: 1
  on class: InputSet
comment: Events that throw a Result. All End Events and some Intermediate Events are throwing Events that MAY eventually be caught by another Event. Typically the trigger carries information out of the scope where the throw Event occurred into the scope of the catching Events. The throwing of a trigger MAY be either implicit as defined by this standard or an extension to it or explicit by a throw Event

TimeExpression
type: Class
subclass of: Expression
comment: An expression that specifies a duration, a specific date, or a cycle

TimerEvent
type: Class
equivalent class: Class
  intersection of: Event
  intersection of: Restriction
    on property: has_eventDefinition
    qualified cardinality: 1
    on class: TimerEventDefinition
subclass of: Event

TimerEventDefinition
type: Class
subclass of: EventDefinition
subclass of: Class
  complement of: Class
    intersection of: Class
      union of: Restriction
        on property: has_timeCycle
        some values from: Expression
      union of: Restriction
        on property: has_timeDate
        some values from: Expression
    intersection of: Restriction
      on property: has_timeDuration
      some values from: Expression
subclass of: Class
  complement of: Class
    intersection of: Class
      union of: Restriction
        on property: has_timeCycle
        some values from: Expression
      union of: Restriction
        on property: has_timeDuration
        some values from: Expression
    intersection of: Restriction
      on property: has_timeDate
      some values from: Expression
subclass of: Class
  complement of: Class
    intersection of: Class
      union of: Restriction
        on property: has_timeDate
        some values from: Expression
      union of: Restriction
        on property: has_timeDuration
        some values from: Expression
    intersection of: Restriction
      on property: has_timeCycle
      some values from: Expression
subclass of: Restriction
  on property: has_timeCycle
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has_timeDate
  max qualified cardinality: 1
  on class: Expression
subclass of: Restriction
  on property: has_timeDuration
  max qualified cardinality: 1
  on class: Expression
comment: /

Tool
type: Class
subclass of: MaterialResource
comment: /

Transaction
type: Class
subclass of: SubProcess
comment: A Sub-Process that represents a set of coordinated activities carried out by independent, loosely-coupled systems in accordance with a contractually defined business relationship. This coordination leads to an agreed, consistent, and verifiable outcome across all participants.

UnderspecifiedExpression
type: Class
equivalent class: Class
  intersection of: Expression
  intersection of: Class
    complement of: FormalExpression
subclass of: Expression

UnitOfMeasure
type: Class
subclass of: Restriction
  on property: has unit
  qualified cardinality: 1
  on class: UO_0000000
subclass of: Restriction
  on property: has_prefix
  max qualified cardinality: 1
  on class: UO_0000046

UserGuide
type: Class
subclass of: TechnicalDocument
comment: A user guide intended to give assistance to people using a particular system. Most user guides contain both a written guide and associated images. In the case of computer applications, it is usual to include screenshots of the human-machine interface(s), and hardware manuals often include clear, simplified diagrams.
label: UserManual

UserTask
type: Class
subclass of: Task
comment: A User Task is a typical “workflow” Task where a human performer performs the Task with the assistance of a software application and is scheduled through a task list manager of some sort.

WorkProcedureDocument
type: Class
subclass of: TechnicalDocument
comment: A document that describes a business process (or a work procedure)