Меню с обратной стороны. Часть 1.

 Содержание данной статьи ни имеет ничего общего с руководством оператора по работе с меню C-DOP. Оно так же не претендует на роль полноценного описания. Я хочу, по мере своих скромных возможностей и познаний, рассказать о том как устроено меню, как оно работает, что происходит когда оператор работает с меню. По началу, я надеялся, что смогу уложиться в одну часть, но по мере углубления в материал, я понял что ошибался, поэтому в этой части будут приведены общие сведения информация об используемых отношениях БД.

Общие положения

 Меню операторской подсистемы является “деревянным”, т.е. имеет древовидную структуру, где корнем является пункт 0 “Первичное меню”. Проектировщиками был применен довольно любопытный ход: внешний вид, структура и поведение пунктов меню не закодировано в коде FMM 12SO MENU HANDLER (BLDS) далее MENHD, а строится ею динамически на основе данных, хранимых в отношениях. Структура меню задается на этапе САЕ и не может быть изменена в дальнейшем (хотя, отсутствие стандартных средств для этой цели в распоряжении оператора, еще ни о чем ни говорит).

Отступление

 О некоторых терминах:
ORJ Operator Requested Job - задание запрошенное оператором. Под этим понимают, в основном, само задание (последовательность сообщений), но иногда, так же и конечного обработчика.
IOJ Interactive Operator Requested Job, т.е. задание запрошенное на выполнение оператором (иногда уточняют: через DOP) в интерактивном режиме работы в меню. Существует FMM 12SO IOJ Adaptor (BLFB), которая служит посредником между MENHD и обработчиками ORJ, в ее функции входит не допущение одновременного доступа к одному ресурсу. Так же есть соответствующие FMM для работы с отдельными ветвями меню (например, для меню "УПРАВЛЕНИЕ ЗВУКОВЫМИ СИГНАЛАМИ" существует FMM-IOJ ANN&TONE (AXKY)).
Стоит отметить, что под оператором имеется ввиду любой человек, работающий за терминалом, а не именно телефонистка.

На рисунке 1 приведены основные отношения ответственные за работу меню.


Рис.1 Отношения, используемые при работе с меню.

Рассмотрим эти отношения более подробно.

Rid : 1927 - R_SEL_CN (MENU SELECTION CONTROL)

 Обращение к этому отношению происходит когда оператор выбирает один из пунктов меню. Для каждого пункта меню здесь зарезервирована одна строка, которая содержит общую информацию. Отношение отсортировано по одному из ключевых доменов - D_S_MEN_NR. Если выбранный пункт раскрывается в подпункты (пример: “Первичное меню”), то перед их отображением происходит сравнение возможностей текущего оператора для доступа к конкретным пунктам (пример: опять же, “Первичное меню”, если оператор имеет уровень телефонистки, то он увидит меньше пунктов, чем оператор с уровнем менеджера).

Уровень возможностей DecHex
TRAINER (Тренер)3129
INEXPTRF (Не опытный оператор)4129
EXPTRF (Опытный оператор)5133
SUPER (Бригадир)613D
CHFSUPER (Начальник смены)7147
MANAGER (Начальник цеха)915B
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_MSHD_S_MNEMD_MNR_1D_MNR_2D_S_NODED_S_LAY_IDD_S_CAP_LV
000000ПЕРВМПЕРВИЧНОЕ МЕНЮFFFFFFFFFFFF0000 0000010029
111000&&УСЛОБЗОР РАСПРЕДЕЛЕНИЯ ВЫЗОВОВFFFFFFFFFFFF0100 010003003D
124100ГЛКФГОСНОВНАЯ КОНФИГУРАЦИЯFFFFFFFFFFFF0D00 09000C0047
140000ЗАДРВПОКАЗ ЗАДЕРЖАННЫХ ВЫЗОВОВFFFFFFFFFFFF0000 0700010029
141000СОКРСОКРАЩЕНИЯ ОЧЕРЕДИ МАРШРУТОВ1420001430000B00 0100100029
222000СОЗДОСОЗДАТЬ ДАННЫЕ ОПЕРАТОРАFFFFFFFFFFFF0800 0100170047
400000УПИРЛУПРАВЛЕНИЕ РУЧНЫМИ ЛИНИЯМИFFFFFFFFFFFF0000 2000010033
500000УПИСКУПРАВЛЕНИЕ ОГРАНИЧЕНИЕМ АБОНЕНТАFFFFFFFFFFFF0000 0F0001005B
632200ПОКДКПОКАЗ ИНТЕРВАЛОВ ДИНАМИЧ. ОБНОВЛЕНИЯ631100FFFFFF1300 02003E0047
700000ККРККОНТРОЛЬ КРЕДИТНЫХ КАРТFFFFFFFFFFFF0000 19000100FF

Rid: 1928 R_REP_CODE (ORJ REPORT CODE)

 Обращение к этому отношению происходит тогда, когда в ответ на запрос оператора был получен ММС рапорт без точного указания пункта меню. Отношение содержит одну строку на каждый рапорт. С помощью полученного RRN происходит поиск по домену D_REP_NR, в случае нахождения требуемой строки, получаем указатель на строку в отношении R_SEL_CN.

Rid: 1931 R_LOUT_CN (MENU LAYOUT CONTROL)

 С помощью этого отношения описывается внешний вид конкретного пункта меню, задаются такие параметры как: кол-во столбцов в заголовке и окончании пункта, все параметры полей для ввода данных (общее кол-во, допустимые значения для каждого и т.п.), полей вывода и полей статического текста. Отношение имеет домены, которые служат индексами при поиске детальной информации в других отношениях. После того как оператор заполнил соответствующие поля меню и нажал Enter, MENHD делает обращение к этому отношению с той целью, что бы правильно сформировать запрос к исполнителю задания.

Rid: 1934 R_CONS_DAT (MENU CONSTANT DATA)

 Отношение содержит постоянные строки, которые выводятся в меню. Вот часть строк (всего 1300 строк).

ТЕКСТИНДЕКСА СПЕЦ СБОРОВДАТА АКТИВАЦИИ НОВОЙ
КОНФИГУРАЦИИ :ГОД:МЕСЯЦ:ДЕНЬ:
ЧАС:МИНУТА:------------------------------
ДЕАКТИВАЦИЯ ПРЕДЫДУЩЕЙ КОНФИГУРАЦИИ :ОТМЕНА ЖДУ
ЩЕГО ЗАПРОСА АКТИВАЦИИ :ВВЕСТИ ОТОБРАЖАЕМЫЕ
ТАЙМ-АУТЫ:ИНДИКАЦИЯТАЙМ-АУТА:ИЗМЕНЕНИЕ
РАЗРЕШЕНОИЗМЕНИНДЕКСВ Ы Д Е РЖ К И
ТИП РАЗРЕШЕНО ТЕКУЩИЕ ВЕЛИЧИНЫОТОБРАЖЕНИ
Е ИНТЕРВАЛОВ ДИНАМИЧ.ОБНАВЛЕН.ДЛЯ МЕНЮ :МЕНЮ
ИНТЕРВАЛ ДИН. КОРРЕКЦИИ.СТЕНОГРАМ(В С
ЕКУНД. НАЭКРАН)СТРАНА(Ы):СТАРЫЙ ПЕР
ИОДНОВЫЙПЕРИОДСТРАНА ИМЯ СТРАНЫ
ЧЕРНЫЙ# КОНЕЦ ИНИЦИАЛ ПРОВ.БУКВЫ ГОДА КОНЕЦ ПРОВ
.БУКВЫ ГОДСТРАНА :ИМЯ СТРАНЫ:СТАРАЯ БУК
ВА ГОДА:ИНИЦИАЛИЗАЦИЯОКОНЧАНИЕ

Думаю комментарии излишни.

Rid: 1925 R_TRNL_COD (MENU DATA TRANSLATION TABLES)

 Содержит все мнемоники и названия клавиш. Используется для перевода численных значений в ASCII, перевода функциональных клавиш (softkey) в их текстовое представление. Поиск производится по домену D_T_REL_IX.

 Опять же для примера часть строк из 1400 (приведена только текстовая часть).

АНЯНВФЕВМАР
АПРМАЙИЮНИЮЛАВГ
СЕНОКТНОЯДЕКОЧКОРЗАД
ТИП ВЫЗоОТМЗАКАЗФЛ КВТ3БФЛ КВТ4БПРИНЯТ
ОШИБКАБДАКТИВИРМНКРЗАПРТАРИФ1ТАРИФ2
ТАРИФ3ТАРИФ4ТАРИФ5ТАРИФ6ТАРИФ7
ТАРИФ8АКТНОВСТААКТ
НОВПРЕИСХРАБОДЕНЬВЫХОДНОЙ
КАНИКУЛЫСПЕЦИАЛДОДНА ЛИННАПРАВН.ВСЕ ЛИН.
НЕ НАЙД.ВХОДЯЩАЮИСХДЯЩАЯДВУНАПР.ДВ-ВХОД.

Ничего знакомого не увидели, а?

Rid: 1929 R_OUT_FLD (OUTPUT FIELD)

 MENHD обращается к этому отношению для получения описания (позиция, тип данных, правила представления, атрибуты и проч.) полей вывода. Отношение проиндексировано по домену D_R_REL_IX.

Rid: 1935 R_CON_FLD (CONSTANT FIELD)

 Аналогично R_OUT_FLD, только для постоянных полей. Отношение проиндексировано по домену D_С_REL_IX.

Rid: 1932 R_I_O_FLD (INPUT-OUTPUT FIELD)

 Аналогично двум предыдущим, только для … правильно!!!… полей ввода/вывода, в силу чего отношение является более сложным и подробно рассматривать мы его, тем более, не будем!

Rid: 1926 R_SEL_SOFT (SELECT SOFTKEY)

 Содержит описание стандартных запрограммированных клавиш, которые есть в каждом меню. Ну, отношение совсем мелочевое, поэтому приведем его полностью!

D_SOFT_NRD_SOFT_LAB
02СЛЕД.СТР
03ПР.СТР
07ПОЯСНИТЬ
01ПР.МЕНЮ
08ПЕЧАТЬ

Rid: 1930 R_MHD_ERR (MENHD ERROR)

 Это отношение используется для преобразования кодов ошибок MENHD в текстовые сообщения на экране, оно содержит соответствия между кодом ошибки и ссылкой на отношения R_LNG_TXT или R_SHT_TXT, в которых содержится требуемая строка текста. Полученная строка будет отображена с помощью SYSTEM ORDERS HANDLER FMM.

До встречи в следующей части, в ближайшие годы!

 

 

Максим Осташов
Размещено на www.s12most.mailru.com 13 апреля 2001

Есть вопросы или дополнения, конструктивная критика? Пишите!

Hosted by uCoz