5.3.3. Использование формул RPTwin

Рассмотрим построение отчета RPTwin по модели процессов, изображенной на рис. 5.11. Модель описывает процесс изготовления изделия и имеет три уровня декомпозиции. В ней описаны следующие свойства, определяемые пользователем (UDP):

уровень декомпозиции (Integer List, допустимые значения в модели;

потребление электроэнергии, кВт-ч (Real Number);

потребление воды, т (Real Number).

Контекстной работе ("Изготовление изделия") присвоено значение UDP "Уровень декомпозиции", равное 0, работам на диаграмме декомпозиции контекста -1 и работам на диаграммах декомпозиции нижнего уровня -2. Значения свойств "Потребление электроэнергии, кВт-ч" и "Потребление воды, т" присвоены только работам на диаграммах декомпозиции нижнего уровня.

Создание UDP в BPwin и присвоение значений работам подробно описано в 1.4.

BPwin и Erwin. CASE-средства для разработки информационных систем - img_287.jpeg

Рис. 5.11. Дерево узлов модели процессов

Непосредственно в среде BPwin невозможно оценить количество ресурсов (электроэнергия и вода), необходимых для производства изделия, поскольку невозможно производить арифметические операции с UDP. В отчете Diagram Object Report, фрагмент которого приведен на рис. 5.12, можно получить только список работ с указанием их UDP, но невозможно отфильтровать работы и произвести расчеты суммарных значений необходимых для производства изделия ресурсов.

BPwin и Erwin. CASE-средства для разработки информационных систем - img_288.jpeg

Рис. 5.12. Отчет по UDP (Diagram Object Report), полученный средствами BPwin

Создать отчет со сложной обработкой данных возможно только средствами- RPTwin. Для создания такого отчета необходимо в диалоге настройки отчета Diagram Object Report (см. рис. 1.48) в качестве формата отчета указать RPTwin, после чего щелкнуть по кнопке Report. В появившемся диалоге сохранения файла следует указать имя файла данных отчета (.LWD). После этого автоматически запускается RPTwin и появляется диалог New Report. В диалоге New Report в качестве типа создаваемого отчета следует указать Columnar. Создается шаблон отчета, включающий в себя все колонки файла набора данных отчета (рис. 5.13).

BPwin и Erwin. CASE-средства для разработки информационных систем - img_289.jpeg

Рис. 5.13. Шаблон отчета "Ресурсы, необходимые для изготовления изделия "

Фрагмент отчета (режим предварительного просмотра) представлен на рис. 5.14.

Ресурсы, необходимые для изготовления изделия

BPwin и Erwin. CASE-средства для разработки информационных систем - img_290.jpeg

Рис. 5.14. Отчет "Ресурсы, необходимые для изготовления изделия"

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

Поскольку UDP, определяющие потребление ресурсов, заданы только для работ нижнего уровня декомпозиции, можно оставить в отчете только эти работы. Для установки фильтра в среде RPTwin нужно выбрать пункт меню Options/Filter. В диалоге Filter (рис. 5.15) следует выбрать опцию Include и щелкнуть по кнопке Formula Editor.

BPwin и Erwin. CASE-средства для разработки информационных систем - img_291.jpeg

Рис. 5.15. Диалог Filter

В диалоге Formula Editor нужно создать формулу

{Уровень декомпозиции}=2

В результате в отчет войдут только работы с уровнем декомпозиции 2, т.е. только те работы, для которых заданы значения UDP "Потребление электроэнергии, кВт-ч" и "Потребление воды, т".

Теперь можно удалить из отчета поле и заголовок "Уровень декомпозиции".

Сгруппируем работы по уровню энергопотребления. Для этого следует выбрать пункт меню Layout/Sorting and Grouping. Будем считать, что работы, имеющие значение UDP "Потребление электроэнергии, кВт-ч" больше 10, относятся к высокому уровню энергопотребления, от 5 до 10 - к среднему и менее 5 - к низкому. В файле данных отчета нет колонки, непосредственно указывающей на уровень энергопотребления, поэтому следует провести группировку по вычисляемому значению. Для создания вычисляемого значения в диалоге Sorting/Grouping следует щелкнуть по кнопке Sort/Group on Calculated Value и в появившемся диалоге Formula Editor набрать текст формулы:

If {Потребление электроэнергии, кВт-ч} >10 Then "Высокие энергозатраты" Else If {Потребление электроэнергии, кВт-ч}< 5

Then "Низкие энергозатраты" Else "Средние энергозатраты"

В шаблоне отчета создаются две новые секции - Group Header и Group Footer.

В секцию Group Header поместим формулу

If {Потребление электроэнергии, квт-ч.) >10 Then "Высокие энергозатраты" Else If {Потребление электроэнергии, квт-ч.} <5 Then "Низкие энергозатраты" Else "Средние энергозатраты"

В секцию Group Footer поместим формулы с агрегативными функциями:

"Итоговое потребление воды работ с " & (If (Потребление электроэнергии, квт-ч.1 >10 Then "высоким" Else If {Потребление электроэнергии, квт-ч.) <5 Then "низким" Else "средним") &" энергопотреблением - " &GroupSum ({Потребление воды, т.})&", т."

и

"Итоговое потребление электроэнергии работе " & (If (Потребление электроэнергии, квт-ч.1 >10 Then "высоким" Else If (Потребление электроэнергии, квт-ч.) <5 Then "низким" Else "средним") & энергопотреблением - " &GroupSum ({Потребление электроэнергии, квт-ч.})&", квт-ч."

В секции Report Footer расположим формулы

"Итоговое потребление электроэнергии " SReportSum ((Потребление электроэнергии, квт-ч.})&", квт-ч."

и

"Итоговое потребление воды " &ReportSum ({Потребление воды, т.})&", т."

На рис. 5.16 представлен результат - итоговый отчет по потреблению ресурсов, который содержит суммирующую информацию по UDP и сложную группировку по вычисляемому полю. Суммирующие показатели потребления ресурсов вычисляются как по всему отчету, так и по категориям работ.

BPwin и Erwin. CASE-средства для разработки информационных систем - img_292.jpeg

Рис. 5.16. Итоговый отчет по потреблению ресурсов

Приложение Список макрокоманд ERwin

Макропеременные, используемые в таблице:

<defaul value>, <value>, <initial value> - определяемый пользователем текст или числовое значение, применяемое при генерации;

<action> - SQL-команда, например INSERT, UPDATE или DELETE;

<macro code> - фрагмент макрокода;

<predicate> - булево выражение, которое может возвращать значение FALSE или TRUE;

<prefix>, <old prefix>, <new prefix> - фрагмент текста или числовое выражение, которое добавляется перед именем таблицы или колонки при генерации;

<separator> - разделитель, который вставляется в текст триггера или процедуры при генерации (заключается в двойные кавычки);

<table name>, <default name>, <domain name>, <validation> - имя таблицы, значения по умолчанию, домена и правила валидации;

<variable> - переменная, использующаяся в триггере.