Действие Вызов определяет отрезок Процесса, где используется глобальный Процесс (Global Process) или глобальная Задача (Global Task). Оно оформляет их вызов в ходе выполнения Процесса. Результатом запуска этого Действия является передача управления глобальным Процессом или глобальной Задачей.
Действие, названное в BPMN 2.0 «Вызов», в BPMN1.2 называется повторно используемым Подпроцессом. Подпроцесс в BPMN 2.0 и Встроенный Подпроцесс в BPMN1.2 являются одним и тем же (см. предыдущий подраздел).
Действие Вызов, как Задачи и Подпроцессы, отображается на диаграмме Процесса в виде прямоугольника с закругленными углами, однако, особенности его отображения зависят от того, что является целью вызова:
Фигура 10.39 – Графический элемент Действие «Вызов», используемый для вызова глобальной Задачи
Фигура 10.40 – Графический элемент Действие «Вызов», используемый для вызова Процесса (свернутый)
Фигура 10.41 – Графический элемент Действие «Вызов», используемый для вызова Процесса (развернутый)
Когда Процесс со Взаимоотношением вызывает другой Процесс со Взаимоотношением, соответствие между Участниками этих Взаимоотношений производится посредством элемента ParticipantAssociations, принадлежащего Взаимоотношению вызывающего Процесса.
Действие Вызов ДОЛЖНО удовлетворять требованиям, предъявляемым к данным, а также возвращать данные, предоставляемые вызванным элементом CallableElement (см. фигуру 10.42). Это означает, что элементы, входящие в состав атрибута InputOutputSpecification для Действия Вызов, ДОЛЖНЫ точно соответствовать элементам, содержащимся в атрибуте CallableElement, на который он ссылается. Сюда входят такие элементы, как DataInputs, DataOutputs, InputSets и OutputSets.
Фигура 10.42 – Диаграмма классов элемента CallActivity
Свойства и атрибуты Действия Вызов могут замещать свойства и атрибуты вызываемого элемента. Таким образом, Вызов потенциально изменяет поведение этого элемента в соответствии с контекстом вызова. К примеру, когда для Действия данного типа определены одно или более значений атрибута ResourceRole, то элементы вызываемого элемента не учитываются, - вместо них используются те, что определены для Действия Вызов. Также и размещенные вдоль иерархии События (ошибки и эскалации) находятся на протяжении отрезка от вызываемого элемента до Действия Вызов (контроль над их выполнением может осуществляться на границе Действия).
Элемент CallActivity наследует атрибуты и ассоциации элемента Activity (см. таблицу 10.3). Таблица 10.23 содержит информацию о дополнительных ассоциациях элемента CallActivity.
Таблица 10.23 – Ассоциации элемента CallActivity
Название атрибута |
Описание/использование |
calledElement: CallableElement [0..1] |
Данный атрибут определяет вызываемый элемент: Процесс или глобальную Задачу. Другие вызываемые элементы (Хореография (Choreography), глобальная Задача Хореографии, Переговоры, глобальная Связь) НЕ ДОЛЖНЫ использоваться Вызовом. |
Элемент CallableElement
Элемент CallableElementявляется абстрактным суперклассом всех Действий. Определяется за рамками Процесса или Хореографии, но Действием Вызов может быть вызван (повторно использован) в данном Процессе или Хореографии. Вызываемый элемент МОЖЕТ ссылаться на элементы Interfaces, определяющий предоставляемые им операции обслуживания. Согласно BPMN, в качестве вызываемых Действиями Вызов элементов могут выступать Процесс и глобальная Задача (см.фигуру 10.43). Элементы CallableElements относятся к элементам RootElements, которые могут быть импортированы и использованы в других элементамх (Definitions). В случае, если элемент CallableElement (например, Процесс) указан, он хранится в этих элементах (Definitions).
Фигура 10.43 – Диаграмма классов вызываемого элемента CallableElement
Элемент CallableElement наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 10.24 содержит информацию о дополнительных атрибутах и ассоциациях элемента CallableElement.
Таблица 10.24 – Атрибуты и ассоциации вызываемого элемента CallableElement.
Название атрибута |
Описание/использование |
name: string [0..1] |
Описательное имя данного атрибута. |
supportedInterfaceRefs: Interface [0..*] |
Значение данного атрибута используется для описания внешнего поведения, демонстрируемого этим элементом. |
ioSpecification: Input OutputSpecification [0..1] |
Данный атрибут определяет входы и выходы, а также набор входных и выходных данных для Действия. |
ioBinding: InputOutput Binding [0..*] |
Данный атрибут определяет комбинацию одного набора входных данных и одного набора выходных данных для связывания их с операцией, указанной в интерфейсе. |
Если элемента CallableElement представлен в виде сервиса, для него необходимо определить значения одного или более элементов InputOutputBinding. Элемент InputOutputBinding связывает один вход и один выход с операцией Service Interface. Таблица 10.25 содержит информацию о дополнительных ассоциациях элемента InputOutputBinding.
Таблица 10.25 – Ассоциации элемента InputOutputBinding
Название атрибута |
Описание/использование |
inputDataRef: DataInput |
Данный атрибут представляет собой ссылку на определенный ввод данных, указанный как часть элемента InputOutputSpecification, относящегося к Действию. |
outputDataRef: DataOutput |
Данный атрибут представляет собой ссылку на определенный вывод данных, указанный как часть элемента InputOutputSpecification, относящегося к Действию. |
operationRef: Operation |
Данный атрибут представляет собой ссылку на определенную операцию, указанную как часть интерфейса, относящегося к Действию. |
Глобальная Задача представляет собой повторно используемую элементарную Задачу, которая может быть вызвана Действием Вызов из любого Процесса.
Фигура 10.44 – Диаграмма классов элемента GlobalTask
Элемент GlobalTask наследует атрибуты и ассоциации элемента CallableElement (см. таблицу 10.24). Таблица 10.26 содержит информацию о дополнительных ассоциациях элемента GlobalTask.
Таблица 10.26 – Ассоциации элемента GlobalTask
Название атрибута |
Описание/использование |
resources: ResourceRole [0..*] |
Посредством данного атрибута указывается исполнитель глобальной Задачи или лицо, ответственное за её выполнение. Если Действие Вызов, относящееся к данной глобальной Задаче, использует свои ресурсы, то ресурсы, указанные в данном атрибуте, игнорируются. |
Типы глобальной Задачи
В BPMN cуществует несколько различных типов Задач, предназначенных для разграничения типов наследуемого ими поведения. Типы глобальных Задач представляют собой лишь подгруппу в рамках классификации типов Задач. Согласно BPMN, глобальными могут быть Пользовательская задача, Ручное выполнение, Сценарий и Бизнес-правило. Для облегчения понимания данной спецификации все типы Задач описаны в одном месте – подразделе 10.2.3.1. Поведение, демонстрируемое разными типами Задач, атрибуты и ассоциации, описанные в вышеуказанном подразделе, - все это также применимо и к соответствующим типам Глобальных Задач.
Действия МОГУТ повторно выполняться в определенной последовательности, т.е. выполняться циклами. Наличие элемента LoopCharacteristics свидетельствует о циклическом поведении Действия. Элемент LoopCharacteristics представляет собой абстрактный класс. Более конкретные подклассы определяют особенности типов циклического поведения.
Элемент LoopCharacteristics наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Однако он не может иметь каких-либо других собственных атрибутов или ассоциаций.
При этом каждый экземпляр циклически выполняемого Действия имеет атрибуты, на значения которых МОГУТ ссылаться выражения. Эти значения доступны только в момент выполнения такого Действия.
Фигура 10.45 отображает диаграмму классов характеристик циклического Действия, включающую описание как стандартного цикла, так и многоэкземплярности.
Фигура 10.45 – Диаграмма классов элемента LoopCharacteristics
Элемент LoopCharacteristics наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5), однако не может иметь каких-либо других атрибутов или ассоциаций. Содержимое таблицы 10.27 показывает, что Действие Цикл не имеет дополнительных атрибутов экземпляров.
Таблица 10.28 – Атрибуты экземпляров цикличного Действия
Название атрибута |
Описание/использование |
loopCounter: integer |
Данный атрибут используется во время выполнения Процесса для подсчета числа циклов. Автоматически обновляется механизмом выполнения Процесса. |
Standard Loop Characteristics Характеристики стандартного цикла
Класс StandardLoopCharacteristics определяет поведение цикла, основанное на проверке истинности условного выражения. Действие будем циклическим до тех пор, пока проверяемое условие вычисляется как «true». Условие вычисляется для каждой из итераций цикла. Оно МОЖЕТ проверяться как в начале, так и в конце итерации. Также, по желанию, может указываться максимальное количество итераций, которое НЕ МОЖЕТ быть превышено.
Фигура 10.46 – Графический элемент Задача с заключенным в нем маркером стандартного цикла
Фигура 10.46 – Графический элемент Подпроцесс с заключенным в нем маркером стандартного цикла
Элемент StandardLoopCharacteristics наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством связи с элементом LoopCharacteristics. Таблица 10.28 содержит информацию о дополнительных атрибутах и ассоциациях элемента StandardLoopCharacteristics.
Таблица 10.28 – Атрибуты и ассоциации элемента StandardLoopCharacteristics
Название атрибута |
Описание/использование |
testBefore: boolean = false |
Данный атрибут используется для осуществления контроля над выполнением условия в начале (testBefore = true) или конце (testBefore = false) итерации цикла. |
loopMaximum: integer [0..1] |
Данный атрибут используется для указания максимального количества итераций цикла. |
loopCondition: Expression [0..1] |
Условное выражение, контролирующее цикл. Действие будет циклическим до тех пор, проверяемое условие вычисляется как «true». Ход выполнения цикла МОЖЕТ БЫТЬ не определен полностью. Это означает, что разработчик модели может просто задокументировать условие, и цикл не сможет быть выполнен соответствующим образом. |
Характеристики многоэкземплярного цикла
Класс MultiInstanceLoopCharacteristics позволяет задавать необходимое количество экземпляров Действия. Экземпляры МОГУТ выполняться как параллельно, так и последовательно. Для указания или вычисления необходимого количества экземпляров используется выражение или выставление значения, основанного не имеющихся данных. В данном случае может быть указан способ ввода данных, посредством которого можно управлять набором данных. Количество элементов набора данных обусловливает количество экземпляров Действия. Такой ввод данных может быть использован благодаря задействованию Ассоциации данных. Разработчик модели может также настраивать цикл для осуществления контроля над полученными токенам.
Фигура 10.48 –Задача и Подпроцесс с Многоэкземплярным маркером для параллельного выполнения
Фигура 10.49 – Задача и Подпроцесс с Многоэкземплярным маркером для последовательного выполнения
Элемент MultiInstanceLoopCharacteristics наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством связи с элементом LoopCharacteristics. Таблица 10.29 содержит информацию о дополнительных атрибутах и ассоциациях элемента MultiInstanceLoopCharacteristics.
Таблица 10.29 – Атрибуты и ассоциации элемента MultiInstanceLoopCharacteristics
Название атрибута |
Описание/использование |
isSequential: boolean = false |
Данный атрибут является переключателем для осуществления контроля над тем, каким образом будут выполняться экземпляры Действия: последовательно или параллельно. |
loopCardinality: Expression [0..1] |
Данный атрибут представляет собой числовое выражение для осуществления контроля над количеством экземпляров Действий, которые будут сформированы. Данное выражение ДОЛЖНО вычислять целое число. Оно также МОЖЕТ БЫТЬ не полностью определенным, т.к. разработчик модели МОЖЕТ просто задокументировать условие, и цикл не сможет быть выполнен соответствующим образом. Для установки корректного значения многоэкземплярности ДОЛЖНО БЫТЬ указано выражение loopCardinality или значение loopDataInput. |
loopDataInputRef: ItemAwareElement [0..1] |
Данный атрибут используется для указания количества экземпляров Действия: один экземпляр приходится на один элемент набора данных, хранимого в элементе ItemAwareElement. Для Задач используется ссылка на ввод данных, являющийся частью атрибутаInputOutputSpecification для Действия. Для Подпроцессов используется ссылка на Объект данных, содержащий информацию о наборе данных, в контексте, прозрачном для Подпроцессов. Для установки корректного значения многоэкземплярности ДОЛЖНО БЫТЬ указано выражение loopCardinality или значение loopDataInput. |
loopDataOutputRef: ItemAwareElement [0..1] |
Данный атрибут определяет набор данных, которые создаются посредством включения многоэкземплярности Действий. Для Задач используется ссылка на ввод данных, являющийся частью атрибутаInputOutputSpecification для Действия. Для Подпроцессов используется ссылка на Объект данных, содержащий информацию о наборе данных, в контексте, прозрачном для Подпроцессов. |
inputDataItem: DataInput [0..1] |
Данный атрибут используется для отображения индивидуального элемента набора данных, хранимого в loopDataInput, для каждого отдельно взятого экземпляра Действия. Данный атрибут может являться источником DataInputAssociation (Ассоциации) для ввода данных InputOutputSpecification Действия. Тип значения данного атрибута МОЖЕТ БЫТЬ скалярной величиной типа, определенного для атрибута loopDataInput. |
outputDataItem: DataOutput [0..1] |
Данный атрибут используется для отображения индивидуального элемента набора данных, хранимого в loopDataOutput, для каждого отдельно взятого экземпляра Действия. Данный атрибут может являться целью DataOutputAssociation (Ассоциации) для вывода данных InputOutputSpecification Действия. Тип данного атрибута МОЖЕТ БЫТЬ скалярной величиной типа, определенного для атрибута loopDataOutput. |
behavior: MultiInstanceBehavior = all { None | One | All | Complex } |
Данный атрибут используется в качестве ярлыка для определения того, когда от практически завершенного экземпляра Действия ДОЛЖНО БЫТЬ запущено Событие. Допускаются значения: «None», «One», «All» и «Complex». Им соответствует следующее поведение:
Значения «None» и «One»указывают, что по умолчанию будет запущено Событие Сигнал (SignalEventDefinition), которое автоматически наделяется текущими атрибутами Действия MI (Multi- Instance). На любые События, выполнение которых было активировано, могут отреагировать События, присоединенные к границам Многоэкземплярного Действия. |
complexBehaviorDefinition: ComplexBehaviorDefinition [0..*] |
Данный атрибут контролирует то, когда и какое Событие будет запущено, если значение behavior равно «complex». |
completionCondition: Expression [0..1] |
Данный атрибут определяет условное выражение. В случае, если значение условного выражение равно «true», происходит отмена повторения экземпляра Действия и создается токен. |
oneBehaviorEventRef: EventDefinition [0..1] |
Если behavior имеет значение «one», а первый экземпляр внутреннего Действия завершается, то запускается EventDefinition. |
noneBehaviorEventRef: EventDefinition [0..1] |
Если behavior имеет значение «none», а первый экземпляр внутреннего Действия завершается, то запускается EventDefinition. |
Таблица 10.30 содержит список атрибутов экземпляра Действия, доступных во время его выполнения. Во время выполнения каждому экземпляру Многоэкземплярного Действия (внешнему) полагается несколько сформированных экземпляров (внутренних) этого Действия.
Таблица 10.30 – Атрибуты экземпляра Многоэкземплярного Действия
Название атрибута |
Описание/использование |
loopCounter: integer |
Данный атрибут используется для каждого сформированного (внутреннего) экземпляра Действия. Содержит данные о порядковых номерах этих экземпляров, т.е. если значение данного атрибута для экземпляра – это некое число (количественное числительное), то данному экземпляру присваивается порядковый номер, образованный от указанного числа. |
numberOfInstances: integer |
Данный атрибут используется только для внешних экземпляров Многоэкземплярного Действия. Содержит данные об общем количестве внутренних экземпляров, сформированных для Многоэкземплярного Действия. |
numberOfActiveInstances: integer |
Данный атрибут используется только для внешних экземпляров Многоэкземплярного Действия. Содержит данные о количестве активных в текущий момент внутренних экземплярах этого Действия. В случае, если экземпляры Действия выполняются последовательно, значение данного атрибута будет превышать «1». Если же экземпляры Действия выполняются параллельно, значение данного атрибута не может превышать значение, хранимое в numberOfInstances. |
numberOfCompletedInstances: integer |
Данный атрибут используется только для внешних экземпляров Многоэкземплярного Действия. Содержит данные о количестве уже выполненных внутренних экземпляров данного Действия. |
numberOfTerminatedInstances: integer |
Данный атрибут используется только для внешних экземпляров Многоэкземплярного Действия. Содержит данные о количестве прерванных внутренних экземпляров данного Действия. numberOfInstances (общее число экземпляров) является результатом сложения значений numberOfTerminatedInstances (число прерванных экземпляров), numberOfCompletedInstances (число выполненных экземпляров) и numberOfActiveInstances (число активных экземпляров). |
Элемент ComplexBehaviorDefinition
Элемент ComplexBehaviorDefinition используется для осуществления контроля над временем запуска Событий и выбором Событий для запуска в случае, если для Многоэкземплярного Действия установленное значение behavior равно complex.
Данный элемент ComplexBehaviorDefinition наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 10.31 содержит информацию о дополнительных атрибутах и ассоциациях элемента ComplexBehaviorDefinition.
Таблица 10.31 – Атрибуты и ассоциации элемента StandardLoopCharacteristics
Название атрибута |
Описание/использование |
condition: Formal Expression |
Данный атрибут представляет собой булевское выражение. Если значение определено как «true», то происходит отмена выполнения оставшихся экземпляров Действия и формируется токен. |
event: ImplicitThrowEvent |
Если условие верно (true), то определяется предназначенное для запуска Событие. На него отреагирует Событие, находящееся на границе Многоэкземплярного Действия. |