Процесс может выполняться несколько раз, и каждый раз ождиается, что все шаги данного Процесса будут выполняться в соответствии с последовательностью их расположения. К примеру, Процесс на фигуре 10.1 повторяется каждую пятницу, а в каждом из его экземпляров сначала выполняется Задача «Receive Issue List», затем Задача «Review Issue List» и т.д., т.е. ожидается последовательность выполнения, отображенная на диаграмме. Также ожидается, что каждый экземпляр этого Процесса является верным для данной модели, однако, некоторые экземпляры таковыми не являются (к примеру, если Процесс содержит Действия для ручного выполнения, а у исполнителей этих Действий нет соответствующей инструкции по их выполнению).
В некоторых программах моделирования для выполнения Процесса предусмотрено использование большего числа Действий и Событий, нежели указано в модели данного Процесса. Это позволяет осуществлять переход к нужному шагу без внесения изменений в саму модель. Например, изображенные на фигуре 10.1 экземпляры Процесса могут выполнять дополнительное Действие на отрезке между Задачами «Receive Issue List» и «Review Issue List». Данные экземляры являются верными для этого Процесса, поскольку они все так же выполняют содержащиеся в нем Действия (в указанном порядке и в указанных условиях).
Существует 2 способа определения того, что в Процессе возможно использование немоделируемых Действий:
Ограничение использования немоделируемых Действий, определенное посредством значений атрибутов isClosed и isImmediate, может быть применено только при выполнении Процессов и его экземпляров, содержащих такое ограничение. Немоделируемые Действия МОГУТ встречаться в экземплярах других Процессов.
В случае, если Процессом предусмотрено возможное использование немоделируемых Действий, то такие Действия могут появляться и в моделях других Процессов и их экземплярах, выполнение которых может быть верным для исходного Процесса. Рассмотрим пример Процесса, схожего с Процессом на фигуре 10.1, содержащим дополнительное Действие на отрезке между Задачами «Receive Issue List» и «Review Issue List». Процесс на фигуре 10.1 может содержать атрибут isClosed или isImmediate, что позволяет Действиям появляться на этом отрезке. По мере выполнения Процесса на фигуре 10.1 для него становятся верными экземпляры другого Процесса, содержащего дополнительные шаги на отрезке между Задачами «Receive Issue List» и «Review Issue List»). Разработчики модели могут указать, что все экземпляры одного Процесса становятся верными для другого Процесса, и эта связь осуществляется осредством поддерживающей ассоциации между Процессами. В ходе разработки моделей данных Процессов такая ассоциация может не учитываться, поскольку она является лишь отображением намерений разработчиков.
Как правило, такая поддержка осуществляется между приватным и публичным Процессами (см. Общее представление). Публичный Процесс содержит Действия, видимые для внешних объектов (например, Участников Взаимоотношения), в то время как приватный Процесс содержит остальные Действия, недоступные для внешних объектов. Скрытые Действия приватного Процесса для публичного Процесса не моделируются. Однако предполагается, что экземпляры приватного Процесса будут доступны для внешних объектов, как если бы они были экземплярами публичного Процесса. Это означает, что приватный Процесс поддерживает публичный (ожидается, что все экземпляры приватного Процесса будут верны и для публичного).
Процесс, поддерживающий другой Процесс (как в случае с приватным и публичным Процессами), не должен полностью его копировать. НЕОБХОДИМО лишь, чтобы экземпляры этого Процесса появлялись так же, как если бы они были экземплярам другого. В верхней части фигуры 10.127 отображен публичный Процесс с Задачами Отправка и Получение. Поддерживающий его приватный Процесс отображен в нижней части фигуры. Приватный Процесс отправляет и получает те же сообщения, что и публичный, однако, для выполнения этих операций вместо Задач в нем используются События. В нем также содержатся Действия, не входящие в состав публичного Процесса. При этом все экземпляры приватного Процесса будут появляться так, как если бы они были экземплярами публичного, т.к. сообщения отсылаются и принимаются в ТРЕБУЕМОМ публичным Процессом порядке. В публичном Процессе допускается появление немоделируемых Действий.
Фигура 10.127 – Процесс, поддерживающий другой Процесс
Фактически, публичный Процесс выглядит как недостаточно углубленный приватный. То, что не указано в публичном Процессе, есть в приватном. К примеру, если ни один из Потоков операций, направленных от Эксклюзивного Шлюза, не содержит условного выражения, то в приватном Процессе будет указано то, какое из Действий, служащих целями Потоков операций, появится. Другим примером является Событие Таймер, для которого не указано значение элемента EventDefinition. То, когда выключится таймер, указывается в приватном Процессе.
Элемент Auditing и его ассоциации позволяют указывать значения атрибутов, связанных с проверкой. Посредством его использования достигается способность BPMN к расширению. Данный элемент используется Элементам потока и Процессами. Однако данный документ не содержит описания атрибутов проверки, т.к. в BPMN 2.0 указан собственный набор атрибутов и семантики для них.
Фигура 10.128 – Диаграмма классов элемента Auditing
Элемент Monitoring и его ассоциации позволяют указывать значения атрибутов, связанных с проверкой. Посредством его использования достигается способность BPMN к расширению. Данный элемент использьзуется Элементам потока и Процессами. Однако данный документ не содержит описания атрибутов проверки, т.к. в BPMN 2.0 указан собственный набор атрибутов и семантики для них.
Фигура 10.129 – Диаграмма классов элемента Monitoring
Таблица 10.136 – XML–схема для элемента Process
<xsd:element name="process" type="tProcess" substitutionGroup="rootElement"/>
<xsd:complexType name="tProcess">
<xsd:complexContent>
<xsd:extension base="tCallableElement">
<xsd:sequence>
<xsd:element ref="auditing" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="monitoring" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="processRole" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="laneSet" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="flowElement" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="resourceRole" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="correlationSubcription" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="supports" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="processType" type="tProcessType" default="None"/>
<xsd:attribute name="isExecutable" type="xsd:boolean" use="optional"/>
<xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
<xsd:attribute name="definitionalCollaborationRef" type="xsd:QName" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Таблица 10.137 – XML–схема для элемента Auditing
Таблица 10.138 – XML–схема для элемента GlobalTask
<xsd:element name="globalTask" type="tGlobalTask" substitutionGroup="rootElement"/>
<xsd:complexContent>
<xsd:extension base="tCallableElement">
<xsd:sequence>
<xsd:element ref="resourceRole" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
Таблица 10.139 – XML–схема для элемента Lane
<xsd:element name="lane" type="tLane"/>
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:sequence>
<xsd:element name="partitionElement" type="tBaseElement" minOccurs="0" maxOccurs="1"/>
<xsd:element name="flowNodeRef" type="xsd:IDREF" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element name="childLaneSet" type="tLaneSet" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="partitionElementRef" type="xsd:QName"/>
</xsd:extension>
</xsd:complexContent>
Таблица 10.140 – XML–схема для элемента LaneSet
<xsd:element name="laneSet" type="tLaneSet"/>
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:sequence>
<xsd:element ref="lane" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
Таблица 10.141 – XML–схема для элемента Monitoring
Таблица 10.142 – XML–схема для элемента Performer
<xsd:element name="performer" type="tPerformer" substitutionGroup="resourceRole"/>
<xsd:complexContent>
<xsd:extension base="tResourceRole"/>
</xsd:complexContent>