BPwin и Erwin. CASE-средства для разработки информационных систем
Шрифт:
Таблица 5.3. Функции RPTwin
Функция | Возвращаемое значение |
Abs(number) | Абсолютное значение аргумента |
Age(date) | Полное число лет от даты аргумента до сегодняшнего числа |
Avg(numbcr) | Среднее значение аргумента по строкам (контекстно) |
Cos(number) | Косинус аргумента |
Count | Количество строк (контекстно) |
DateQ | Дата выполнения отчета |
DateTime | Дата и время выполнения отчета |
DayName(date) | Наименование дня даты недели аргумента (по-английски), например "Saturday" |
DayNameAbr(date) | Сокращенное наименование дня недели даты аргумента (по-английски), например "Sat" |
DayOfMonth(date) | Число - день месяца даты
|
DayOfWeek(date) | Число - день недели даты аргумента, например воскресенье - 1, суббота - 7 |
DayOfYear(date) | Число - день года |
DayBetween(datel, date2) | Число - количество дней между двумя датами аргументов |
GroupAvg(number) | Среднее значение аргумента по группе |
GroupCount(number) | Количество строк в группе |
GroupMax(number) | Максимальное значение аргумента по группе |
GroupMin(number) | Минимальное значение аргумента по группе |
GroupSum(number) | Сумма аргумента по группе |
Hour(time) | Часы (0-23) даты аргумента |
If test Then value 1 [Else value2\ | Условный оператор. Test - логический предикат, принимающий значение "Истина" или "Ложь". Если Test = "Истина", выполняется выражение value 1, если "Ложь" - value2 |
InitCap(text) | Текст аргумента, все символы которого в нижнем регистре, за исключением первых символов слов, например InitCap("aRRoW naMe") возвращает "Arrow Name" |
Lcase(text) | Текст аргумента, все символы которого в нижнем регистре |
Leftftext, number) | Первые символы слева текста первого аргумента. Количество символов указывается во втором аргументе |
LTrim(text) | Текст аргумента без символов пробела слева (если таковые имелись) |
MakeDate(MM,DD,YY) | Дата, сгенерированная по трем числам, например MakeDate(l,2,1999) возвращает 2 января 1999 года |
MakeMoney(number) | Тип money, конвертированный из аргумента number |
MakeTime(HH,MI,SS) | Время, сгенерированное по трем числам - часы, минуты, секунды |
Max(number) | Максимальное значение аргумента по строкам (контекстно) |
Mid(text, number 1, number2) | Подстрока первого аргумента, начиная с позиции numberi и включая number2 символов |
Min(number) | Минимальное значение аргумента по строкам (контекстно) |
Minite(time) | Количество минут времени аргумента (0-59) |
Mod(numberl,number2) | Остаток от деления первого аргумента на второй, например Mod(7,3) возвращает 1 |
Month(date) | Порядковый номер месяца даты аргумента (1-12) |
MonthName(date) | Наименование месяца даты аргумента (по-английски), например "April" |
MonthNameAbr(date) | Сокращенное наименование месяца даты аргумента (по-английски), например "Арг" |
PageNum | Номер страницы |
Quarter(date) | Квартал даты аргумента (1 -4) |
RecNum | Номер строки отчета |
Replace(mainText, oldText, newText) | Замена символов в строке mainText - старого фрагмента oldText на новый newText |
ReportAvg(number) | Среднее значение аргумента по отчету |
ReportCount(number) | Количество строк в отчете |
ReportCumAvg(number) | Среднее значение аргумента, вычисляемое контекстно. Если ReportCumAvg расположена в секции Detail, функция будет возвращать среднее значение аргумента всех вышестоящих строк отчета |
ReportCumMax(number) | Максимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg |
ReportCumMin(number) | Минимальное значение аргумента, вычисляемое контекстно. Вычисляется аналогично ReportCumAvg |
ReportCumSum(number) | Сумма аргумента, вычисляемая контекстно. Вычисляется аналогично ReportCumAvg |
ReportMax(number) | Максимальное значение аргумента по отчету |
ReportMin(number) | Минимальное значение аргумента по отчету |
ReportSum(number) | Сумма аргумента по отчету |
Right(mainText, number) | Первые символы справа текста первого аргумента. Количество символов указывается во втором аргументе |
Round(numberTo Round, precisionNumber) | Округленное значение первого аргумента. Во втором аргументе указывается точность округления, например Round(12345,500) возвращает 12500 |
RTrim(text) | Текст аргумента без символов пробела справа (если таковые имелись) |
Second(time) | Количество секунд времени аргумента (0-59) |
Sign(number) | 1, если аргумент положительный, 0, если равен нулю и -1, если аргумент отрицательный |
Sin(number) | Синус аргумента |
Sum(number) | Сумма значений аргумента по строкам (контекстно) |
Tan(number) | Тангенс аргумента |
Time | Текущее время |
ToDate(text, fonnat) | Дата,
|
ToNumber(text) | Число, конвертированное из текстовой строки |
ToText(date, foirnat) | Текст, конвертированный из даты. Второй аргумент указывает формат даты |
Trim(text) | Текст аргумента без "лишних" символов пробела. Удаляются пробелы перед строкой и после строки аргумента; если пробелов подряд более двух, оставляется только один |
Trunc(number, precision) | Округленный первый аргумент с отбрасыванием остатка. Во втором аргументе указывается точность округления |
Ucase(text) | Текст аргумента, все символы которого в верхнем регистре |
Week(date) | Порядковый номер недели (в году) даты аргумента (1-54) |
Year(date) | Год даты аргумента |
YearsBetween(datel, date2) | Количество лет между датами первого и второго аргумента |
5.3.3. Использование формул RPTwin
Рассмотрим построение отчета RPTwin по модели процессов, изображенной на рис. 5.11. Модель описывает процесс изготовления изделия и имеет три уровня декомпозиции. В ней описаны следующие свойства, определяемые пользователем (UDP):
уровень декомпозиции (Integer List, допустимые значения в модели;
потребление электроэнергии, кВт-ч (Real Number);
потребление воды, т (Real Number).
Контекстной работе ("Изготовление изделия") присвоено значение UDP "Уровень декомпозиции", равное 0, работам на диаграмме декомпозиции контекста -1 и работам на диаграммах декомпозиции нижнего уровня -2. Значения свойств "Потребление электроэнергии, кВт-ч" и "Потребление воды, т" присвоены только работам на диаграммах декомпозиции нижнего уровня.
Создание UDP в BPwin и присвоение значений работам подробно описано в 1.4.
Рис. 5.11. Дерево узлов модели процессов
Непосредственно в среде BPwin невозможно оценить количество ресурсов (электроэнергия и вода), необходимых для производства изделия, поскольку невозможно производить арифметические операции с UDP. В отчете Diagram Object Report, фрагмент которого приведен на рис. 5.12, можно получить только список работ с указанием их UDP, но невозможно отфильтровать работы и произвести расчеты суммарных значений необходимых для производства изделия ресурсов.
Рис. 5.12. Отчет по UDP (Diagram Object Report), полученный средствами BPwin
Создать отчет со сложной обработкой данных возможно только средствами- RPTwin. Для создания такого отчета необходимо в диалоге настройки отчета Diagram Object Report (см. рис. 1.48) в качестве формата отчета указать RPTwin, после чего щелкнуть по кнопке Report. В появившемся диалоге сохранения файла следует указать имя файла данных отчета (.LWD). После этого автоматически запускается RPTwin и появляется диалог New Report. В диалоге New Report в качестве типа создаваемого отчета следует указать Columnar. Создается шаблон отчета, включающий в себя все колонки файла набора данных отчета (рис. 5.13).
Рис. 5.13. Шаблон отчета "Ресурсы, необходимые для изготовления изделия "
Фрагмент отчета (режим предварительного просмотра) представлен на рис. 5.14.
Ресурсы, необходимые для изготовления изделия
Рис. 5.14. Отчет "Ресурсы, необходимые для изготовления изделия"
Этот отчет не включает суммирующие данные и несет ту же информацию, что и отчет на рис. 5.12. Для того, чтобы он действительно помог анализировать необходимые ресурсы, его следует модифицировать.
Поскольку UDP, определяющие потребление ресурсов, заданы только для работ нижнего уровня декомпозиции, можно оставить в отчете только эти работы. Для установки фильтра в среде RPTwin нужно выбрать пункт меню Options/Filter. В диалоге Filter (рис. 5.15) следует выбрать опцию Include и щелкнуть по кнопке Formula Editor.
Рис. 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 ({Потребление электроэнергии, квт-ч.})&", квт-ч."