|
<< Click to Display Table of Contents >> Приложение III. Использование OCL-выражений |
OCL-выражения представляют собой строки определённого формата и применяются для вывода данных в прямоугольники, ячейки таблиц и ячейки секций моделей вывода по определенным правилам.
Правила вывода данных и общие свойства OCL-выражений:
•через OCL-выражения могут вызываться глобальные функции — имена таких функций начинаются с символов ocl_;
•результат вычисления OCL-выражения — строка;
•OCL-выражения могут быть как с параметрами, так и без них.
В качестве одного из параметров OCL-выражений в функцию вычисления передается объект ProcessableObject. Этот объект служит источником данных для вычисления выражения. Например:
•для прямоугольника и ячейки таблицы передаваемым объектом может быть ДСЕ, если шаблон простой, или операция, если шаблон операционный;
•если выражение задано для ячейки секции модели вывода, то имя передаваемого объекта соответствует имени секции.
OCL-выражения без параметров |
Формат записи:
#{имя выражения} |
OCL-выражения без параметров:
•#doc_caption
•#doc_type
•#enterprise
•#enterprise_code
•#object_name
•#changing_index
•#changing_page_status
•#changing_designation
Описание глобальных функций, вызываемых в OCL-выражениях без параметров, приведено в Приложение II. Перечень глобальных функций.
OCL-выражения c параметрами |
Общий формат записи для всех OCL-выражений с параметрами:
#{имя выражения}<param1,param2,paramN> |
Пример: #concat<"_",obozndse,dse.namedse>
В качестве параметров выражения могут быть указаны другие OCL-выражения. Таким образом, выражения могут быть вложенными.
Если выражение содержит вложенные выражения, то сначала вычисляются вложенные выражения самого нижнего уровня.
Пример: #concat<"_",#parent<dse.namedse>,#parent<dse.obozndse>>
|
OCL-выражение должно быть оформлено согласно формату записи, пробелы не допускаются. В противном случае выражение не будет вычислено. |
Перечень OCL-выражений c параметрами
|
Формат записи |
Описание |
|
|---|---|---|---|
#concat<"separator", |
Позволяет объединить несколько параметров, отделенных указанным разделителем. |
||
|
|
||
#measure_name<attribute> |
Позволяет вывести обозначение единицы измерения для текущего объекта. |
||
#child<class.attribute, |
Позволяет вывести значение атрибута дочернего объекта для текущего объекта. |
||
|
|
||
#parent<class.attribute> |
Позволяет вывести значение атрибута родительского объекта для текущего объекта. |
||
|
|
||
#gather<"separator", |
Позволяет вывести в одну строку значения атрибутов дочерних объектов не ниже уровня вложенности и отделенных указанным разделителем. |
||
#if<condition,value> |
Позволяет вывести значение атрибута при выполнении условия. |
||
#ifnot<condition,value> |
Позволяет вывести значение атрибута, если условие не выполнено. |
Описание параметров OCL-выражений
|
Обозначение |
Описание |
|---|---|---|
separator |
Параметр служит для вставки разделителя. Обозначение параметра заключается в кавычки. Если в качестве разделителя используется символ переноса строки, то необходимо задать значение #13#10. |
|
param1,param2,paramN |
Параметр служит для получения: •текстовых данных, •значения атрибута класса или фильтра модели ТП, •других OCL-выражений. Для получения текстовых данных обозначение параметра следует заключить в кавычки. |
|
attribute |
Параметр служит для получения значения атрибута класса или фильтра: •головного объекта (простой шаблон — ДСЕ, операционный — операция), если выражение используется для прямоугольника или ячейки таблицы; •секции модели вывода, если выражение используется для ячейки секции модели вывода. |
|
class.attribute |
Параметр служит для получения значения атрибута объекта заданного класса или фильтра. |
|
markAsProcessed |
Параметр позволяет промаркировать дочерние объекты как обработанные. Значения параметра относятся к логическому типу. Если значение параметра равно true, а также у дочернего объекта имеется атрибут с указанным именем и заданным значением, то объекту присваивается статус «Обработан». Такой объект больше не участвует в формировании отчета. Обработанный объект может повторно использоваться при формировании отчета в следующих случаях: •Если объект выводится с помощью функции или OCL-выражения, которые не учитывают статус «Обработан», например, выражение #parent. •Если объект был помечен обработанным в прямоугольнике или ячейке таблицы, а выводится с помощью OCL-выражения #child в модели вывода. Допускается не указывать параметр. В этом случае считается, что он принимает значение false. |
|
skipProcessed |
Параметр позволяет пропустить обработанные объекты при подборе дочерних объектов. Значения параметра относятся к логическому типу. Если значение параметра равно true, то при подборе объектов будет взят первый подходящий объект со статусом «Не обработан». Остальные объекты будут пропущены. Допускается не указывать параметр. В этом случае считается, что он принимает значение false. |
|
level |
Параметр позволяет указать уровень вложенности дочерних объектов по отношению к текущему объекту: •-1 — все уровни вложенности; •0 — уровень иерархии совпадает с уровнем текущего объекта; •1, 2, 3 и т.д. — 1-й, 2-й, 3-й уровень вложенности и т.д. |
|
condition |
Параметр служит для записи условия. |
|
value |
Параметр позволяет получить значение для вывода, если результат вычисления условия — непустая (для #if) или пустая (для #ifnot) строка. |