Когда элемент, определяющий значение InputOutputSpecification, готов к запуску выполнения посредством элементов Потока операций или События, на которое должна последовать реакция, входы заполняются данными, поступающими от соответствующих элементов, например, Объектов данных или свойств. Для отображения таких назначений служит Ассоциация данных.
Значение каждого их указанных элементов InputSet вычисляется согласно порядку, в котором эти элементы расположены в InputOutputSpecification.
Входные данные, на которые ссылается элемент InputSet, будут вычислены в случае, если они верны.
Все ассоциации данных будут вычислены в том случае, если они указывают вход данных в качестве цели. Если один из источников какой-либо ассоциации данных является недоступным, то значение InputSet также становится недоступным; при этом вычисляется значение следующего элемента InputSet.
Первый элемент InputSet, в котором все входные данные доступны для ассоциаций данных, используется для запуска выполнения Действия. Если же значения всех этих элементов недоступны, выполнение Действия не начнется до тех пор, пока не будет выполнено данное условие.
Данная спецификация не содержит информацию о том, когда и как часто должно проверяться это условие. Выполнение не будет осуществляться до тех пор, пока источники ассоциаций данных не станут доступны, после чего произойдет повторное вычисление значений элементов InputSets.
Если в состав Потока операций включено Событие, реагирующее на триггер или определяющее результат, семантика исполнения для данных будет отличаться.
Если запущено определяющее результат Событие, то будут задействованы все элементы DataInputAssociation данного События; при этом произойдет наполнение входов данного События данными. Затем элементы DataInput копируются в объекты, запущенные вышеуказанным Событием (Сообщением, Сигналом и т.д.). Поскольку для События не определены элемены InputSets, то и выполнение никогда не будет ждать удовлетворения каких-либо условий.
Если запущено реагирующее на триггер Событие, то выходы данного События заполняются объектом, запустившим данное Событие; при этом задействованы все элементы DataOutputAssociations События. Элементы OutputSets для этого События не определяются.
Для того, чтобы сделать возможным запуск Процесса посредством Действия Вызов и Потока сообщений, Стартовое и Конечное события используются одинаково.
При использовании Стартового события входные данные содержащего его Процесса доступны элементам DataOutputAssociations События как цели. Таким образом, входы Процесса могут быть заполнены элементами, запустившими Стартовое событие.
При использовании Конечного события выходные данные содержащего его Процесса доступны элементам DataInputAssociations События как источники. Таким образом, результирующие элементы Конечного события в качестве источников могут использовать входные данные Процесса.
Если хотя бы один раз элемент InputSet стал доступным, то происходит выполнение всех Ассоциаций данных, целью которых является любые входные данные элемента InputSet. Благодаря этому, заполняются входы для данных Действия, при этом само Действие начинает выполняться. Когда выполнение Действия завершается, то происходит выполнение всех Ассоциаций данных, источниками которых являются любые выходные данные элемента OutputSet. Благодаря этому, значения выходных данных копируются обратно в элемент, содержащий данные (Объект данных, свойства и т.д.)
Семантика исполнения для DataAssociation
Выполнение любого объекта Ассоциации данных ДОЛЖНО БЫТЬ произведено в соответствии со следующей семантикой исполнения:
Механизм расширения 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.69 – XML–схема для элемента Assignment
<xsd:extension base="tBaseElement">
Таблица 10.70 – XML–схема для элемента DataAssociation
Таблица 10.71 – XML–схема для элемента DataInput
Таблица 10.72 – XML–схема для элемента DataInputAssociation
Таблица 10.73 – XML–схема для элемента DataObject
Таблица 10.74 – XML–схема для элемента DataState
Таблица 10.75 – XML–схема для элемента DataOutput
Таблица 10.76 – XML–схема для элемента DataOutputAssociation
Таблица 10.77 – XML–схема для элемента InputOutputSpecification
Таблица 10.78 – XML–схема для элемента InputSet
Таблица 10.79 – XML–схема для элемента OutputSet
Таблица 10.80 – XML–схема для элемента Property