image
Продукт

10.3.2 Семантика исполнения для данных

Когда элемент, определяющий значение InputOutputSpecification, готов к запуску выполнения посредством элементов Потока операций или События, на которое должна последовать реакция, входы заполняются данными, поступающими от соответствующих элементов, например, Объектов данных или свойств. Для отображения таких назначений служит Ассоциация данных.

Значение каждого их указанных элементов InputSet вычисляется согласно порядку, в котором эти элементы расположены в InputOutputSpecification.

Входные данные, на которые ссылается элемент InputSet, будут вычислены в случае, если они верны.

Все ассоциации данных будут вычислены в том случае, если они указывают вход данных в качестве цели. Если один из источников какой-либо ассоциации данных является недоступным, то значение InputSet также становится недоступным; при этом вычисляется значение следующего элемента InputSet.

Первый элемент InputSet, в котором все входные данные доступны для ассоциаций данных, используется для запуска выполнения Действия. Если же значения всех этих элементов недоступны, выполнение Действия не начнется до тех пор, пока не будет выполнено данное условие.

Данная спецификация не содержит информацию о том, когда и как часто должно проверяться это условие. Выполнение не будет осуществляться до тех пор, пока источники ассоциаций данных не станут доступны, после чего произойдет повторное вычисление значений элементов InputSets.

Если в состав Потока операций включено Событие, реагирующее на триггер или определяющее результат, семантика исполнения для данных будет отличаться.

Если запущено определяющее результат Событие, то будут задействованы все элементы DataInputAssociation данного События; при этом произойдет наполнение входов данного События данными. Затем элементы DataInput копируются в объекты, запущенные вышеуказанным Событием (Сообщением, Сигналом и т.д.). Поскольку для События не определены элемены InputSets, то и выполнение никогда не будет ждать удовлетворения каких-либо условий.

Если запущено реагирующее на триггер Событие, то выходы данного События заполняются объектом, запустившим данное Событие; при этом задействованы все элементы DataOutputAssociations События. Элементы OutputSets для этого События не определяются.

Для того, чтобы сделать возможным запуск Процесса посредством Действия Вызов и Потока сообщений, Стартовое и Конечное события используются одинаково.

При использовании Стартового события входные данные содержащего его Процесса доступны элементам DataOutputAssociations События как цели. Таким образом, входы Процесса могут быть заполнены элементами, запустившими Стартовое событие.

При использовании Конечного события выходные данные содержащего его Процесса доступны элементам DataInputAssociations События как источники. Таким образом, результирующие элементы Конечного события в качестве источников могут использовать входные данные Процесса.

Если хотя бы один раз элемент InputSet стал доступным, то происходит выполнение всех Ассоциаций данных, целью которых является любые входные данные элемента InputSet. Благодаря этому, заполняются входы для данных Действия, при этом само Действие начинает выполняться. Когда выполнение Действия завершается, то происходит выполнение всех Ассоциаций данных, источниками которых являются любые выходные данные элемента OutputSet. Благодаря этому, значения выходных данных копируются обратно в элемент, содержащий данные (Объект данных, свойства и т.д.)

Семантика исполнения для DataAssociation

Выполнение любого объекта Ассоциации данных ДОЛЖНО БЫТЬ произведено в соответствии со следующей семантикой исполнения:

  • Если Ассоциация данных определяет выражение трансформации, то данное выражение вычисляется, а результат копируется в элемент targetRef. Благодаря этим действия, предыдущее значение этого элемента полностью заменяется.
  • Для каждого элемента назначения необходимо выполнять следующие действия:
    • Вычислить выражение «from» и получать *source value*.
    • Вычислить выражение «to» и получать * target element *. В качестве элемента * target element * может использоваться любой соответствующий элемент или подчиненный ему элемент (например, Объект данных или подчиненный ему элемент).
    • Скопировать *source value* в *target element*.
  • Если в Ассоциации данных отсутствуют выражение трансформации либо элементы назначения, то:
    • Скопировать значение элемента «sourceRef» Ассоциации данных в элемент «targetRef». В данном случае доступен лишь элемент sourceRef.

10.3.3 Использование данных в выражениях XPath

Механизм расширения BPMN позволяет использовать различные языки выражений и запросов. Данный раздел посвящен описанию использования XPath в BPMN: в нем представлен механизм доступа к Объектам данных, свойствам и другим атрибутам экземпляров через использование выражений XPath.

В языке выражений доступность подразумевает основанную на информации возможность доступа Действий, содержащих выражение. Все элементы, доступные из содержащего их элемента выражения XPath, ДОЛЖНЫ БЫТЬ доступны для XPath-процессора.

В BPMN Объекты данных и Свойства указываются посредством элемента ItemDefinition. Связь с XPath предполагает, что элемент ItemDefinition является либо сложным XSD типом, либо XSD элементом. Если используется XSD элемент, то он ДОЛЖЕН БЫТЬ заявлен как одноблочная (with a single member node) узловая переменная (node-set XPath variable). Если используется сложный XSD тип, то он ДОЛЖЕН БЫТЬ заявлен как одноблочная переменная node-set, содержащая безымянный элемент документа, в котором хранится текущее значение Объекта данных или Свойства BPMN.

Доступ к Объектам данных BPMN

Таблица 10.65 содержит информацию о функциях XPath, используемых для получения доступа к Объектам данных BPMN. Параметр processName указывает Процесс и имеет тип string (ОБЯЗАТЕЛЬНО literal string).

Таблица 10.65 – Функция расширения XPath для Объектов данных

Функция расширения XPath

Описание/использование

Element getDataObject (‘processName’, ‘dataObject- Name’)

Данная функция возвращает значение представленного Объекта данных. Параметр processName является опциональным. В случае, если он опущен, то Процесс, содержащий Действие с выражением, допускается. Для получения доступа к Объектам данных, указанным в родительском процессе, ДОЛЖЕН БЫТЬ использован параметр processName. В других ситуациях он ДОЛЖЕН БЫТЬ опущен.

Поскольку возврат отказа функциями XPath 1.0 не поддерживается, в случае ошибки возвращается пустой набор узлов.

Доступ к входам и выходам данных BPMN

Таблица 10.66 содержит информацию о функциях XPath, используемых для получения доступа к входам и выходам данных BPMN. Параметр dataInputName указывает вход данных и имеет тип string.

Таблица 10.66 – Функция расширения XPath для входа и выхода данных

Функция расширения XPath

Описание/использование

Element getDataInput (‘dataInputName’)

Данная функция возвращает значение представленного входа для данных.

Element getDataOutput ('dataOutput- Name')

Данная функция возвращает значение выхода для данных.

Доступ к Свойствам BPMN

Таблица 10.67 содержит информацию о функциях XPath, используемых для получения доступа к свойствам BPMN.

Параметр processName указывает Процесс и имеет тип string. Параметр propertyName указывает свойство и имеет тип string. Параметр activityName указывает Действие и имеет тип string. Параметр eventName указывает Событие и имеет тип string (ОБЯЗАТЕЛЬНО literal string). Функция расширения XPath возвращает значение представленного свойства.

Поскольку возврат отказа функциями XPath 1.0 не поддерживается, в случае ошибки возвращается пустой набор узлов.

Таблица 10.67 – Функция расширения XPath для входа и выхода данных

Функция расширения XPath

Описание/использование

Element getProcessProperty (‘processName’, ‘propertyName’)

Данная функция возвращает значение представленного свойства Процесса. Параметр processName является опциональным. В случае, если он опущен, то Процесс, содержащий Действие с выражением, допускается. Для получения доступа к свойствам, указанным в родительском процессе, ДОЛЖЕН БЫТЬ использован параметр processName. В других ситуациях он ДОЛЖЕН БЫТЬ опущен.

Element getActivityProperty (‘activityName’, ‘propertyName’)

Данная функция возвращает значение представленное свойство Действия.

Element getEventProperty ‘eventName’, ‘propertyName’)

Данная функция возвращает значение представленное свойство События.

Доступ к атрибутам экземпляров BPMN

Таблица 10.68 содержит информацию о функциях XPath, используемых для получения доступа к атрибутам экземпляров BPMN.

Параметр processName указывает Процесс и имеет тип тип string. Параметр attributeName указывает атрибут экземпляра и имеет тип string. Параметр activityName указывает Действие и имеет тип string (ОБЯЗАТЕЛЬНО literal string).

Эти функции возвращают значение представленного экземпляра Действия. Поскольку возврат отказа функциями XPath 1.0 не поддерживается, в случае ошибки возвращается пустой набор узлов.

Таблица 10.68 – Функции расширения XPath для атрибутов экземпляров

Функция расширения XPath

Описание/использование

Element getProcessInstanceAttribute (‘processName’,‘attributeName’)

Данная функция возвращает значение представленного атрибута экземпляра Процесса. Параметр processName является опциональным. В случае, если он опущен, то Процесс, содержащий Действие с выражением, допускается. Для получения доступа к атрибутам родительского процесса, указанным в родительском процессе, ДОЛЖЕН БЫТЬ использован параметр processName. В других ситуациях он ДОЛЖЕН БЫТЬ опущен.

Element getChoreographyInstance- Attribute (‘attributeName’)

Данная функция возвращает значение представленного атрибута экземпляра Хореографии.

Element getActivityInstanceAttribute (‘activityName’, ‘attributeName’)

Данная функция возвращает значение атрибута экземпляра Действия. Примерами такого Действия могут служить Пользовательская задача и цикл.

10.3.4 Представление XML-схемы для Данных

Таблица 10.69 – XML–схема для элемента Assignment

name="assignment" type="tAssignment" />
name="tAssignment">

<xsd:extension base="tBaseElement">

name="from" type="tExpression" minOccurs="1" maxOccurs="1"/>
name="to" type="tExpression" minOccurs="1" maxOccurs="1"/>



Таблица 10.70 – XML–схема для элемента DataAssociation













Таблица 10.71 – XML–схема для элемента DataInput











Таблица 10.72 – XML–схема для элемента DataInputAssociation






Таблица 10.73 – XML–схема для элемента DataObject

name="dataObject" type="tDataObject" />
name="tDataObject">

base="tFlowElement">

ref="dataState" minOccurs="0" maxOccurs="1"/>

name="itemSubjectRef" type="xsd:QName"/>
name="isCollection" type="xsd:boolean"/>


Таблица 10.74 – XML–схема для элемента DataState








Таблица 10.75 – XML–схема для элемента DataOutput











Таблица 10.76 – XML–схема для элемента DataOutputAssociation






Таблица 10.77 – XML–схема для элемента InputOutputSpecification













Таблица 10.78 – XML–схема для элемента InputSet






minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>




Таблица 10.79 – XML–схема для элемента OutputSet






minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>
minOccurs="0" maxOccurs="unbounded"/>




Таблица 10.80 – XML–схема для элемента Property