Содержание данной статьи ни имеет ничего общего с руководством оператора по работе с меню C-DOP. Оно так же не претендует на роль полноценного описания. Я хочу, по мере своих скромных возможностей и познаний, рассказать о том как устроено меню, как оно работает, что происходит когда оператор работает с меню. По началу, я надеялся, что смогу уложиться в одну часть, но по мере углубления в материал, я понял что ошибался, поэтому в этой части будут приведены общие сведения информация об используемых отношениях БД.
Меню операторской подсистемы является “деревянным”, т.е. имеет древовидную структуру, где корнем является пункт 0 “Первичное меню”. Проектировщиками был применен довольно любопытный ход: внешний вид, структура и поведение пунктов меню не закодировано в коде FMM 12SO MENU HANDLER (BLDS) далее MENHD, а строится ею динамически на основе данных, хранимых в отношениях. Структура меню задается на этапе САЕ и не может быть изменена в дальнейшем (хотя, отсутствие стандартных средств для этой цели в распоряжении оператора, еще ни о чем ни говорит).
О некоторых терминах: |
На рисунке 1 приведены основные отношения ответственные за работу меню.
Рис.1 Отношения, используемые при работе с меню.
Рассмотрим эти отношения более подробно.
Обращение к этому отношению происходит когда оператор выбирает один из пунктов меню. Для каждого пункта меню здесь зарезервирована одна строка, которая содержит общую информацию. Отношение отсортировано по одному из ключевых доменов - D_S_MEN_NR. Если выбранный пункт раскрывается в подпункты (пример: “Первичное меню”), то перед их отображением происходит сравнение возможностей текущего оператора для доступа к конкретным пунктам (пример: опять же, “Первичное меню”, если оператор имеет уровень телефонистки, то он увидит меньше пунктов, чем оператор с уровнем менеджера).
Уровень возможностей | Dec | Hex |
TRAINER (Тренер) | 31 | 29 |
INEXPTRF (Не опытный оператор) | 41 | 29 |
EXPTRF (Опытный оператор) | 51 | 33 |
SUPER (Бригадир) | 61 | 3D |
CHFSUPER (Начальник смены) | 71 | 47 |
MANAGER (Начальник цеха) | 91 | 5B |
MAINT (Техобслуживание) | 101 |
Как видно из таблицы (выдержка из реального содержимого R_SEL_CN на нашей станции, правда, исключена часть столбцов, значение которых одинаково по всем строкам), стоит поставить максимальный уровень возможностей (в данном случае FFH) и к данному пункту доступ будет закрыт. Как и было сделано в случае с теми пунктами меню, которые используются при работе с кредитными картами (пункт 7).
Пробежимся бегло по основным доменам:
D_S_MEN_NR | Номер меню, т.е. те цифры, которые вы набираете для доступа к нужному пункту |
D_S_MSH | Мнемоника, которую тоже можно использовать для доступа к конкретному пункту |
D_S_MNEM | Это заголовок меню, который отображается на экране |
D_S_SSFK_1, 2, 3 | Кто работал с меню, тот помнит, что в “ПОКАЗ И МОДИФИКАЦИЯ ПРЕФИКСА” есть две клавиши, для быстрого перехода на пункты создания и удаления префикса. Так вот, в этих доменах содержаться названия этих клавиш, т.е. то, что вы видите на экране. |
D_S_MNR_1, 2, 3 | А в этих доменах, содержаться номера меню для перехода, т.е. тот же самый номер, что и в D_S_MEN_NR. |
D_S_NODE | Это идентификатор пункта (узла) меню. Он состоит из двух частей – идентификаторов ветви и узла. Идентификатор ветви уникален для всего дерева меню, а идентификатор пункта уникален для своей ветви. |
D_S_LAY_ID | Служит для доступа к R_LOUT_CN. |
D_S_CAP_LV | Служит для ограничения доступа и содержит максимально-возможный уровень. |
D_S_MEN_NR | В_S_MSH | D_S_MNEM | D_MNR_1 | D_MNR_2 | D_S_NODE | D_S_LAY_ID | D_S_CAP_LV |
000000 | ПЕРВМ | ПЕРВИЧНОЕ МЕНЮ | FFFFFF | FFFFFF | 0000 0000 | 0100 | 29 |
111000 | &&УСЛ | ОБЗОР РАСПРЕДЕЛЕНИЯ ВЫЗОВОВ | FFFFFF | FFFFFF | 0100 0100 | 0300 | 3D |
124100 | ГЛКФГ | ОСНОВНАЯ КОНФИГУРАЦИЯ | FFFFFF | FFFFFF | 0D00 0900 | 0C00 | 47 |
140000 | ЗАДРВ | ПОКАЗ ЗАДЕРЖАННЫХ ВЫЗОВОВ | FFFFFF | FFFFFF | 0000 0700 | 0100 | 29 |
141000 | СОКР | СОКРАЩЕНИЯ ОЧЕРЕДИ МАРШРУТОВ | 142000 | 143000 | 0B00 0100 | 1000 | 29 |
222000 | СОЗДО | СОЗДАТЬ ДАННЫЕ ОПЕРАТОРА | FFFFFF | FFFFFF | 0800 0100 | 1700 | 47 |
400000 | УПИРЛ | УПРАВЛЕНИЕ РУЧНЫМИ ЛИНИЯМИ | FFFFFF | FFFFFF | 0000 2000 | 0100 | 33 |
500000 | УПИСК | УПРАВЛЕНИЕ ОГРАНИЧЕНИЕМ АБОНЕНТА | FFFFFF | FFFFFF | 0000 0F00 | 0100 | 5B |
632200 | ПОКДК | ПОКАЗ ИНТЕРВАЛОВ ДИНАМИЧ. ОБНОВЛЕНИЯ | 631100 | FFFFFF | 1300 0200 | 3E00 | 47 |
700000 | ККРК | КОНТРОЛЬ КРЕДИТНЫХ КАРТ | FFFFFF | FFFFFF | 0000 1900 | 0100 | FF |
Обращение к этому отношению происходит тогда, когда в ответ на запрос оператора был получен ММС рапорт без точного указания пункта меню. Отношение содержит одну строку на каждый рапорт. С помощью полученного RRN происходит поиск по домену D_REP_NR, в случае нахождения требуемой строки, получаем указатель на строку в отношении R_SEL_CN.
С помощью этого отношения описывается внешний вид конкретного пункта меню, задаются такие параметры как: кол-во столбцов в заголовке и окончании пункта, все параметры полей для ввода данных (общее кол-во, допустимые значения для каждого и т.п.), полей вывода и полей статического текста. Отношение имеет домены, которые служат индексами при поиске детальной информации в других отношениях. После того как оператор заполнил соответствующие поля меню и нажал Enter, MENHD делает обращение к этому отношению с той целью, что бы правильно сформировать запрос к исполнителю задания.
Отношение содержит постоянные строки, которые выводятся в меню. Вот часть строк (всего 1300 строк).
ТЕКСТ | ИНДЕКСА С | ПЕЦ СБОРОВ | ДАТА АКТИВ | АЦИИ НОВОЙ |
КОНФИГУРА | ЦИИ : | ГОД: | МЕСЯЦ: | ДЕНЬ: |
ЧАС: | МИНУТА: | ---------- | ---------- | ---------- |
ДЕАКТИВАЦИ | Я ПРЕДЫДУЩ | ЕЙ КОНФИГУ | РАЦИИ : | ОТМЕНА ЖДУ |
ЩЕГО ЗАПРО | СА АКТИВАЦ | ИИ : | ВВЕСТИ ОТО | БРАЖАЕМЫЕ |
ТАЙМ-АУТЫ | : | ИНДИКАЦИЯ | ТАЙМ-АУТА: | ИЗМЕНЕНИЕ |
РАЗРЕШЕНО | ИЗМЕН | ИНДЕКС | В Ы Д Е Р | Ж К И |
ТИП РАЗ | РЕШЕНО ТЕ | КУЩИЕ ВЕЛ | ИЧИНЫ | ОТОБРАЖЕНИ |
Е ИНТЕРВАЛ | ОВ ДИНАМИЧ | .ОБНАВЛЕН. | ДЛЯ МЕНЮ : | МЕНЮ |
ИНТЕРВ | АЛ ДИН. КО | РРЕКЦИИ. | СТЕНОГРАМ | (В С |
ЕКУНД. НА | ЭКРАН) | СТРАНА(Ы) | : | СТАРЫЙ ПЕР |
ИОД | НОВЫЙ | ПЕРИОД | СТРАНА ИМ | Я СТРАНЫ |
ЧЕРНЫЙ# К | ОНЕЦ ИНИЦИ | АЛ ПРОВ.БУ | КВЫ ГОДА | КОНЕЦ ПРОВ |
.БУКВЫ ГОД | СТРАНА : | ИМЯ СТРАНЫ | : | СТАРАЯ БУК |
ВА ГОДА: | ИНИЦИАЛИЗА | ЦИЯ | ОКОНЧА | НИЕ |
Думаю комментарии излишни.
Содержит все мнемоники и названия клавиш. Используется для перевода численных значений в ASCII, перевода функциональных клавиш (softkey) в их текстовое представление. Поиск производится по домену D_T_REL_IX.
Опять же для примера часть строк из 1400 (приведена только текстовая часть).
А | Н | ЯНВ | ФЕВ | МАР |
АПР | МАЙ | ИЮН | ИЮЛ | АВГ |
СЕН | ОКТ | НОЯ | ДЕК | ОЧКОРЗАД |
ТИП ВЫЗо | ОТМЗАКАЗ | ФЛ КВТ3Б | ФЛ КВТ4Б | ПРИНЯТ |
ОШИБКАБД | АКТИВИР | МНКРЗАПР | ТАРИФ1 | ТАРИФ2 |
ТАРИФ3 | ТАРИФ4 | ТАРИФ5 | ТАРИФ6 | ТАРИФ7 |
ТАРИФ8 | АКТ | НОВ | СТА | АКТ |
НОВ | ПРЕ | ИСХ | РАБОДЕНЬ | ВЫХОДНОЙ |
КАНИКУЛЫ | СПЕЦИАЛД | ОДНА ЛИН | НАПРАВН. | ВСЕ ЛИН. |
НЕ НАЙД. | ВХОДЯЩАЮ | ИСХДЯЩАЯ | ДВУНАПР. | ДВ-ВХОД. |
Ничего знакомого не увидели, а?
MENHD обращается к этому отношению для получения описания (позиция, тип данных, правила представления, атрибуты и проч.) полей вывода. Отношение проиндексировано по домену D_R_REL_IX.
Аналогично R_OUT_FLD, только для постоянных полей. Отношение проиндексировано по домену D_С_REL_IX.
Аналогично двум предыдущим, только для … правильно!!!… полей ввода/вывода, в силу чего отношение является более сложным и подробно рассматривать мы его, тем более, не будем!
Содержит описание стандартных запрограммированных клавиш, которые есть в каждом меню. Ну, отношение совсем мелочевое, поэтому приведем его полностью!
D_SOFT_NR | D_SOFT_LAB |
02 | СЛЕД.СТР |
03 | ПР.СТР |
07 | ПОЯСНИТЬ |
01 | ПР.МЕНЮ |
08 | ПЕЧАТЬ |
Это отношение используется для преобразования кодов ошибок MENHD в текстовые сообщения на экране, оно содержит соответствия между кодом ошибки и ссылкой на отношения R_LNG_TXT или R_SHT_TXT, в которых содержится требуемая строка текста. Полученная строка будет отображена с помощью SYSTEM ORDERS HANDLER FMM.
До встречи в следующей части, в ближайшие годы!
Максим Осташов
Размещено на www.s12most.mailru.com 13 апреля 2001
Есть вопросы или дополнения, конструктивная критика? Пишите!