Технология Веб-ИРБИС
В основе технологии Веб-ИРБИС лежит Веб-шлюз ИРБИС, работающий по протоколу CGI.
Содержание
Взаимодействие клиента с Веб-шлюзом ИРБИС
Запрос к Веб-шлюзу ИРБИС и ответ клиенту
Веб-шлюз ИРБИС принимает запросы в соответствии с протоколом CGI.
В зависимости от полученных параметров шлюз формирует ответ, который может быть как страницей HTML, так и файлом.
Параметры Веб-шлюза ИРБИС
Параметры поступают к веб-шлюзу ИРБИС 64 в форме параметров HTTP-запроса. Поступившие параметры определяют действия, которые должен выполнить шлюз.
Параметры могут приходить в шлюз по методу POST или GET.
Параметры делятся на предустановленные и пользовательские.
Предустановленные параметры шлюза
Предустановленные параметры могут использоваться для взаимодействия с шлюзом только по оговоренной методике. Набор предустановленных параметров, а также методика их использования предопределяются в процессе разработки системы ИРБИС. Параметры перечислены в таблице, там же описана методика их использования.
Основные параметры шлюза
- C21COM – команда, которую должен выполнить веб-шлюз.
- I21DBN – имя профиля. Веб-шлюз ИРБИС в соответствии с именем профиля определяет набор фреймов, из которых составит ответ клиенту. Веб-шлюз ИРБИС ищет названия фреймов в файле irbis_server.ini в секции, название которой соответствует значению параметра I21DBN (подробнее в разделе Роль фреймов в работе веб-шлюза ИРБИС).
- P21DBN – имя базы данных.
- Z21ID – значение параметра авторизации.
Система команд Веб-шлюза ИРБИС
Система команд Веб-шлюза ИРБИС позволяет задать собственный набор фреймов и порядок их объединения для каждой задачи. Для разных задач предусмотрены разные команды, например: для страницы приглашения к поиску, результата поиска, отбора записей в корзину заказов и т.д.
Набор команд задаётся в файле irbis_server.ini в контексте базы данных.
То есть, для разных баз данных могут быть настроены разные наборы команд и фреймы.
Имена фреймов веб-шлюз ИРБИС считывает из файла irbis_server.ini. Каждой команде веб-шлюза ИРБИС соответствует имя параметра в файле irbis_server.ini (см. таблицу Команды веб-шлюза ИРБИС).
Таблица. Команды веб-шлюза ИРБИС.
|
При составлении ответа на команды E, 2, 4 шлюз не использует фреймы. Поэтому в таблице Команды веб-шлюза ИРБИС отсутствует соответствующий параметр в irbis_server.ini. В случае этих команд ответ шлюза клиенту не является HTML-страницей.
Пример команды показа терминов словаря
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?Z21ID=1500323880383212&SEARCH_IN_FULL_TEXT=1&T21CNR=10&C21COM=T&T21PRF=KT=&I21DBN=IBIS&T21TRM=a&
где при помощи параметра T21TRM=a указывается требование терминов словаря, начинающихся на a.
Пример возврата:
A20040830ARUSY|1 A20041017ABELY|1 A20041118ARUSY|1 A2H|2 A540|9 A54001|7 A550UTILIZATION|1 AACDEMY|1 AASL|2 AASLPUBSANDJOURNALS|2
Пользовательские параметры
Пользовательские параметры отличаются тем, что веб-шлюз ИРБИС может выполнять с ними следующие действия:
- при получении HTTP-запроса шлюз принимает данные, переданные ему с помощью пользовательских параметров;
- в свой ответ на HTTP-запрос клиента (обычно – в генерируемую html-страницу, передаваемую клиенту) может включить набор пользовательских параметров вместе с их значениями, полученными в запросе.
Количество пользовательских параметров и их назначение может определяться в процессе внедрения и конфигурирования ИРБИС 64.
Применение пользовательских параметров для передачи данных между веб-страницами
Пользовательские параметры позволяют передавать данные при переходе между веб-страницами, сгенерированными Веб-шлюзом ИРБИС 64. Процесс передачи данных происходит в два этапа: 1) данные передаются на веб-шлюз в виде параметров запроса; 2) веб-шлюз передаёт данные вместе со сформированной страницей в скрытых полях форм HTML.
Добавление пользовательского параметра
Добавление пользовательского параметра осуществляется в несколько шагов:
- добавление пользовательского параметра в файл инициализации шлюза irbis_server.ini
- Необходимо добавить описание нового пользовательского параметра в настроечный файл irbis_server.ini, задав имя и метку параметра. Для этого в секции [PARAMETRS] используются параметры ini файла PARNAME_ и PARTAG_ (не стоит путать термины пользовательские параметры веб-шлюза и параметры ini файла), где вместо знака подчёркивания ставится номер пользовательского параметра по порядку, например:
PARNAME2=C21COM PARTAG2=2222
- В этом примере мы видим описание второго по порядку из определённых в секции [PARAMETRS] параметров: имя параметра C21COM, метка параметра 2222. Имя и метка параметров должны быть уникальными. После того как описание пользовательского параметра добавлено необходимо изменить значение параметра PARCOUNT в секции [PARAMETRS], его значение должно быть равно порядковому номеру последнего описания пользовательского параметра.
- Примечание: обратите внимание, что в файле irbis_server.ini хранятся описания не только пользовательских параметров, а присутствует также описания предустановленных параметров.
- использование в файлах .frm команд <!FORMAT=INSERT_ALL_PARAMETERS> и <!FORMAT=INSERT_ALL_PARAMETERS_IN_QUERY>
- Команда <!FORMAT=INSERT_ALL_PARAMETERS> обеспечивает вставку в код HTML-страницы всех непустых переданных веб-шлюзу параметров в виде скрытых элементов формы, например:
<input type="hidden" name="PARAM_NAME" value="PARAM_VALUE">
- Команда <!FORMAT=INSERT_ALL_PARAMETERS_IN_QUERY> вставляет в код HTML-страницы гиперссылку, содержащую все переданные веб-шлюзу параметры.
Формирование веб-страницы
Фреймы
В общем случае, веб-страница формируется путём объединения (склеивания) следующих частей:
- заголовочной и подвальной частей, формируемых при помощи фреймов и
- тела страницы, формируемого при помощи формата, который отрабатывает на наборе записей базы данных (соответствующих запросу пользователя).
Фрейм как язык разметки
Фрейм представляет собой текстовый файл, содержимое которого передаётся клиенту (в веб браузер), который также может содержать вставки, которые будут обработаны определённым образом перед передачей клиенту.
Предусмотрены вставки следующих видов:
- вставка на языке форматирования ИРБИС,
- вложенный фрейм.
Вставка на языке форматирования обозначается следующим образом
<!FORMAT
Пример:
<!FORMAT=if v3409='' then 'value=""' else 'value=','"',v3409,'"',fi>
Если вставка на языке форматирования содержит символы, кодирующиеся в UTF-8 более чем одним байтом (например, кириллицу), то формат обязательно должен начинаться с восклицательного знака. Это связано с тем, что формат в кодировке UTF-8 должен предваряться восклицательным знаком, а все фреймы храняться именно в кодировке UTF-8.
Пример:
<!FORMAT=!if (v3400='') then if (val(v1001) > 1) then '<tr><td></td><td><input name="SEARCHIN" type="checkbox"><span style="padding-left : 10px;padding-right : 10px;vertical-align : 15%;font-size:13px;font-family:sans-serif;">в найденном</span></td></tr>' else '<input type="hidden" name="SEARCHIN" value="">' fi else '<input type="hidden" name="SEARCHIN" value="">' fi>
Пример вложенного фрейма:
<!FORMAT=if &uf('IMAIN,SHOW_DUBLIN_CORE,0') <> '0' then /'<!FILE=Dublin_Core.frm>' fi>
Пример последовательности действий Веб-шлюза ИРБИС при формировании веб-страницы в ответ на запрос
Веб-шлюз ИРБИС при получении команд F, S, T, Z, R выполняет следующую последовательность действий:
- Веб-шлюз получил запрос. Запрос содержит параметры C21COM, I21DBN и другие.
- В файле irbis_server.ini веб-шлюз находит секцию, имя которой соответствует значению параметра I21DBN. Иными словами: с одной стороны, в качестве значения параметра I21DBN указывается имя профиля, с другой стороны, для каждого профиля в файле irbis_server.ini должна содержаться секция, имя которой совпадает с именем профиля.
- В указанной секции файла irbis_server.ini веб-шлюз находит значение параметра, соответствующего указанной в параметре C21COM команде (см. таблицу Команды веб-шлюза ИРБИС). Полученное значение должно представлять собой список фреймов.
- Фреймы обрабатываются, и результат, представляющий собой HTML-страницу, отправляется клиенту в качестве ответа.
Примеры перехода пользователя по страницам Веб-ИРБИС
Пример запроса начальной страницы:
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?C21COM=F&I21DBN=IBIS_FULLTEXT&P21DBN=IBIS&Z21ID=&S21CNR=5
где указаны:
- команда шлюза F (показ страницы)
- имя профиля IBIS_FULLTEXT
- база данных IBIS
- авторизация не осуществлялась
Параметр S21CNR не обязателен.
При авторизации запрос приобретает следующий вид
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?I21DBN=AUTHOR&C21COM=F&P21DBN=IBIS&Z21FLAGID=1&Z21FAMILY=%D0%B1%D1%80%D0%BE%D0%B4%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9&Z21ID=111
где указаны:
- команда шлюза F (показ страницы)
- имя профиля AUTHOR
- база данных IBIS
- параметры авторизации: Z21FLAGID, фамилия читателя Z21FAMILY и идентификатор читателя Z21ID
При поиске по слову "библиотека" запрос приобретает следующий вид
http://localhost:8080/cgi-bin/irbis64r_15_plus/cgiirbis_64_ft.exe?Z21ID=1704320195313012&I21DBN=IBIS_fulltext&SEARCH_STRING=%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0&FT_REQUEST=&FT_S21STR=%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0&SEARCHIN=&USES21ALL=1&FT_PARAMS=&FT_DISTANCE=&S21CNR=5&C21COM1=%D0%98%D1%81%D0%BA%D0%B0%D1%82%D1%8C&FT_RESTRICT=&AVT_S21STR=&AVT_S21P03=A%3D&AVT_S21P02=1&AVT_S21LOG=1&NAME_S21STR=&NAME_S21P03=T%3D&NAME_S21P02=1&NAME_S21LOG=1&UDC_S21STR=&UDC_S21P03=U%3D&UDC_S21P02=0&UDC_S21LOG=1&IZD_S21STR=&IZD_S21P03=M%3D&IZD_S21P02=1&IZD_S21LOG=1&DAT_S21P06=&DAT_S21P07=&DAT_S21P03=G%3D&DAT_S21P02=1&DAT_S21LOG=5&P21DBN=IBIS&FT_S21LOG=4&FT_S21P03=K%3D&FT_S21P01=3&S21STN=1&S21REF=10&S21FMT=briefHTML_ft&C21COM=S&S21COLORTERMS=1&FT_PREFIX=KT%3D
где указаны:
- команда шлюза S (поиск)
- имя профиля IBIS_FULLTEXT
- база данных IBIS
- параметры авторизации: Z21ID
- текущий запрос SEARCH_STRING и предыдущий запрос FT_S21STR (одинаковые)
- USES21ALL=1 (использовать параметр S21ALL, применяется в поиске связных)
- S21CNR=5 (порция при показе найденных)
- S21REF=10 (для правильного формирования ссылок на страницы с результатами поиска)
- C21COM1
- FT_PREFIX
- S21FMT=briefHTML_ft
- AVT_S21P03=A%3D
- AVT_S21P02=1
- AVT_S21LOG=1
- NAME_S21P03=T%3D
- NAME_S21P02=1
- NAME_S21LOG=1
- UDC_S21P03=U%3D
- UDC_S21P02=0
- UDC_S21LOG=1
- IZD_S21P03=M%3D
- IZD_S21P02=1
- IZD_S21LOG=1
- DAT_S21P03=G%3D
- DAT_S21P02=1
- DAT_S21LOG=5
- P21DBN=IBIS
- FT_S21LOG=4
- FT_S21P03=K%3D
- FT_S21P01=3
- S21STN=1
- S21COLORTERMS=1