Соответствие Требованиям моделирования Процесса (Process Modeling Conformance) включает элементы, входящие в состав диаграмм Взаимодействия и Процесса, а именно: Задачи всех типов, встроенные Подпроцессы, Действия типа Вызов, Шлюзы всех типов, События всех типов (Стартовые, Промежуточные, Конечные), Дорожки, Участников, Объекты данных (также Входные и Выходные данные), Сообщения, Группы, Текстовые аннотации, Потоки операций (также условные Потоки операций и Потоки операций по умолчанию), Потоки сообщений, Обмен сообщениями (ограниченный до группировки Потоков сообщений, ассоциативных корреляций), Корреляцию, Ассоциацию (также Ассоциацию компенсации). В этот набор также входят маркеры (маркеры Цикла, Многоэкземплярные, Транзакции, Компенсации), используемые для дифферинцировки Задач и встроенных Подпроцессов.
Примечание: Такие элементы моделирования Хореографии, как Задача Хореографии и Подхореография, в этот перечень не входят.
Для того, чтобы инструмент моделирования мог декларировать поддержку подкласса, он ДОЛЖЕН подходить под следующие критерии:
- В нем ДОЛЖНЫ поддерживаться все элементы подкласса.
- В нем ДОЛЖНЫ поддерживаться все перечисленные атрибуты каждого из элементов подкласса.
- В целом, если атрибут не упоминается в подклассе и НЕ является ОБЯЗАТЕЛЬНЫМ для отображения в схеме, то он не входит в данный подкласс. Исключения для этого правила описаны в примечании.
Подкласс соответствия для Описания
Таблица 2.1 содержит информацию о Подклассе соответствия для Описания.
Таблица 2.1 – Элементы и Атрибуты Подкласса Соответствия для Описания
| Элемент |
Атрибуты |
| participant (pool) |
id, name, processRef |
| laneSet |
id, lane with name, childLaneSet, flowElementRef |
| sequenceFlow (unconditional) |
id, name, sourceRef, targetRef |
| messageFlow |
id, name, sourceRef, targetRef |
| exclusiveGateway |
id, name |
| parallelGateway |
id, name |
| task (None) |
id, name |
| userTask |
id, name |
| serviceTask |
id, name |
| subProcess (expanded) |
id, name, flowElement |
| subProcess (collapsed) |
id, name, flowElement |
| CallActivity |
id, name, calledElement |
| DataObject |
id, name |
| TextAnnotation |
id, text |
| association/dataAssociationa |
id, name, sourceRef, targetRef, associationDirectionb |
| dataStoreReference |
id, name, dataStoreRef |
| startEvent (None) |
id, name |
| endEvent (None) |
id, name |
| messageStartEvent |
id, name, messageEventDefinition |
| messageEndEvent |
id, name, messageEventDefinition |
| timerStartEvent |
id, name, timerEventDefinition |
| terminateEndEvent |
id, name, terminateEventDefinition |
| documentationc |
text |
| Group |
id, categoryRef |
- Ассоциация данных является АБСТРАКТНОЙ, т.е. Ассоциация с Входными и Выходными данными появляется в сериализации XML. У этих типов Ассоциаций есть ОБЯЗАТЕЛЬНЫЕ атрибуты [sourceRef и targetRef], относящиеся к элементам itemAwareElements. Для согласования с метамоделью возникает необходимость в дополнительных элементах: ioSpecification, inputSet, outputSet, Data Input, Data Output. Когда в редакторе BPMN отображается Ассоциация данных, относящаяся к Действию или Событию, должна сформироваться невидимая подконструкция. Другими словами, было бы необходимо изменять метамодель для того, чтобы сделать атрибуты sourceRef и targetRef опциональными или допустить использование ссылки на элемент, не относящийся к itemAwareElements (например, Действие или Событие).
- Атрибут associationDirection, не указанный для Ассоциации данных.
- Documentation не отображается. Он является атрибутом практически всех элементов.
Аналитический подкласс соответствия
Аналитический подкласс соответствия включает в себя все элементы Подкласса соответствия для Описания, а также элементы, приведенные в таблице 2.2.
Таблица 2.2 – Элементы и Атрибуты Аналитического Подкласса Соответствия
| Элемент |
Атрибуты |
| sequenceFlow (conditional) |
id, name, sourceRef, targetRef, conditionExpressiona |
| sequenceFlow (default) |
id, name, sourceRef, targetRef, defaultb |
| sendTask |
id, name |
| receiveTask |
id, name |
| Looping Activity |
standardLoopCharacteristics |
| MultiInstance Activity |
multiInstanceLoopCharacteristics |
| exclusiveGateway |
Add default attribute |
| inclusiveGateway |
id, name, eventGatewayType |
| eventBasedGateway |
id, name, eventGatewayType |
| Link catch/throw Intermediate Event |
Id, name, linkEventDefinition |
| signalStartEvent |
id, name, signalEventDefinition |
| signalEndEvent |
id, name, signalEventDefinition |
| Catching message Intermediate Event |
id, name, messageEventDefinition |
| Throwing message Intermediate Event |
id, name, messageEventDefinition |
| Boundary message Intermediate Event |
id, name, attachedToRef, messageEventDefinition |
| Non-interrupting Boundary message Intermediate Event |
id, name, attachedToRef, cancelActivity=false, messageEventDefinition |
| Catching timer Intermediate Event |
id, name, timerEventDefinition |
| Boundary timer Intermediate Event |
id, name, attachedToRef, timerEventDefinition |
| Non-interrupting Boundary timer Intermediate Event |
id, name, attachedToRef, cancelActivity=false, timerEventDefinition |
| Boundary error Intermediate Event |
id, name, attachedToRef, errorEventDefinition |
| errorEndEvent |
id, name, errorEventDefinition |
| Non-interrupting Boundary escalation Intermediate Event |
id, name, attachedToRef, cancelActivity=false, escalationEventDefinition |
| Throwing escalation Intermediate Event |
id, name, escalationEventDefinition |
| escalationEndEvent |
id, name, escalationEventDefinition |
| Catching signal Intermediate Event |
id, name, signalEventDefinition |
| Throwing signal Intermediate Event |
id, name, signalEventDefinition |
| Boundary signal Intermediate Event |
id, name, attachedToRef, signalEventDefinition |
| Non-interrupting Boundary signal Intermediate Event |
id, name, attachedToRef, cancelActivity=false, signalEventDefinition |
| conditionalStartEvent |
id, name, conditionalEventDefinition |
| Catching conditional Intermediate Event |
id, name, conditionalEventDefinition |
| Boundary conditional Intermediate Event |
id, name, conditionalEventDefinition |
| Non-interrupting Boundary conditional Intermediate Event |
id, name, cancelActivity=false, conditionalEventDefinition |
| messagec |
id, name, add messageRef attribute to messageFlow |
- Значение ConditionExpression, используемого только для Потока операций, исходящего из Шлюза, МОЖЕТ БЫТЬ равно нулю.
- Атрибут Default является атрибутом sourceRef Шлюза (эксклюзивного или неэксклюзивного).
- Обратите внимание, что атрибут messageRef, являющийся атрибутом различных Событий типа Сообщение, является опциональным и не входит в данный подкласс.
Подкласс Соответствия Общему выполнению
Данный подкласс соответствия предназначен для инструментов моделирования, выпускающих выполняемые модели.
- Языком определения типа данных ДОЛЖЕН БЫТЬ XML Schema.
- Языком определения интерфейсов Web-сервисов ДОЛЖЕН БЫТЬ WSDL.
- Языком доступа к данным ДОЛЖЕН БЫТЬ XPath.
Элементы подкласса соответствия Общему выполнения приведены в таблице 2.3, а сопутствующие классы отображены в таблице 2.4.
Таблица 2.3 – Элементы и Атрибуты Подкласса Соответствия Общему Выполнению
| Элемент |
Атрибуты |
| sequenceFlow (unconditional) |
id, (name), sourceRefa, targetRefb |
| sequenceFlow (conditional) |
id, name, sourceRef, targetRef, conditionExpressionc |
| sequenceFlow (default) |
id, name, sourceRef, targetRef, defaultd |
| subProcess (expanded) |
id, name, flowElement, loopCharacteristics, boundaryEventRefs |
| exclusiveGateway |
id, name, gatewayDirection (только сходящийся и расходящийся), default |
| parallelGateway |
id, name, gatewayDirection (только сходящийся и расходящийся) |
| startEvent (None) |
id, name |
| endEvent (None) |
id, name |
| eventBasedGateway |
id, name, gatewayDirection, eventGatewayType |
| userTask |
id, name, renderings, implementation, resources, ioSpecification, dataInputAssociations, dataOutputAssociations, loopCharacteristics, boundaryEventRefs |
| sig serviceTask |
id, name, implementation, operationRef, ioSpecification, dataInputAssociations, dataOutputAssociations, loopCharacteristics, boundaryEventRefs |
| callActivity |
id, name, calledElement, ioSpecification, dataInputAssociations, dataOutputAssociations, loopCharacteristics, boundaryEventRefs |
| dataObject |
id, name, isCollection, itemSubjectRef |
| textAnnotation |
id, text |
| dataAssociation |
id, name, sourceRef, targetRef, assignment |
| messageStartEvent |
id, name, messageEventDefinition (either ref or contained), dataOutput, dataOutputAssociations |
| messageEndEvent |
id, name, messageEventDefinition, (либо ссылка, либо наличие), dataInput, dataInputAssociations |
| terminateEndEvent |
(Триггер завершения в комбинации с одним из конечных событий) |
| Catching message Intermediate Event |
id, name, messageEventDefinition (либо ссылка, либо наличие), dataOutput, dataOutputAssociations |
| Throwing message Intermediate Event |
id, name, messageEventDefinition (либо ссылка, либо наличие), dataInput, dataInputAssociations |
| Catching timer Intermediate Event |
id, name, timerEventDefinition (наличие) |
| dary error Intermediate Event |
id, name, attachedToRef, errorEventDefinition, (ссылка или наличие), dataOutput, dataOutputAssociations |
- Множественные исходящие соединения допускаются только для Шлюзов, в которых маршруты сходятся.
- Множественные исходящие соединения допускаются только для Шлюзов, в которых маршруты расходятся.
- Значение ConditionExpression, используемого только в направленных от Шлюзов Потоках операций, МОЖЕТ БЫТЬ равно нулю.
- Атрибут Default является атрибутом sourceRef Шлюза (эксклюзивного или неэксклюзивного).
Таблица 2.4 – Сопутствующие Классы Подкласса Соответствия Общему Выполнению
| Элемент |
Атрибуты |
| StandardLoopCharacteristics |
id, loopCondition |
| MultiInstanceLoopCharacteristics |
id, isSequential, loopDataInput, inputDataItem |
| Rendering |
|
| Resource |
id, name |
| ResourceRole |
id, resourceRef, resourceAssignmentExpression |
| InputOutputSpecification |
id, dataInputs, dataOutputs |
| DataInput |
id, name, isCollection, itemSubjectRef |
| DataOutput |
id, name, isCollection, itemSubjectRef |
| ItemDefinition |
id, structure or importa |
| Operation |
id, name, inMessageRef, outMessageRef, errorRefs |
| Message |
id, name, structureRef |
| Error |
id, structureRef |
| Assignment |
id, from, tob |
| MessageEventDefinition |
id, messageRef, operationRef |
| TerminateEventDefinition |
id |
| TimerEventDefinition |
id, timeDate |
- Структуру ДОЛЖЕН определять составной тип XSD (XSD Complex Type).
- Структуру ДОЛЖЕН определять составной тип XSD (XSD Complex Type).