Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Опыт и разработки пользователей ИРБИС :  ИРБИС Irbis
 
Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 27, October, 2006 17:44

Здравствуйте!

Автоматизируем подключение студентов к WiFi в читальных залах.

Технология преполагается следующая.

1. В каталоге читалей добавляется новое поле MAC адрес WiFi устройства, принадлежащего читателю.

2. Если студенту необходим WiFi в читальном зале, он подходит к дежурному библиографу и простит включить ему WiFi

3. Библиограф просто делает выдачу "без заказа" экземпляра под названием "WiFi" из специализированного каталога "Услуги библиотеки"

4.
а)Теперь на сервере мы должны перехватить выдачу, узнать что это за выдача (WiFi или другое издание) и какому читателю была сделана выдача (а точнее нужен просто MAC адрес)
б)и через SSH-тунель отправляем MAC адрес на роутер WiFi.

5. После этого у читателя сразу появляется доступ по WiFi к интернет и т.д.

Проблема:

Проблема возникла с пунктом 4.а. - как нам перехватить на сервере выдачу?

Думали/Пробывали:

1. autoin.gbl в базе ЧИТАТЕЛЕЙ. Но он, через &unifor(0) возвращает не запись читателя, а запись о выданном издании (т.е. из каталога "Услуги библиотеке") и таким образом мы знаем что произошла нужная нам выдача, но не знаем кому (т.е. какой MAC адрес регить на роутере)...

2. Слежение за базой RQST.
- Дело в том, что выдача будет проходить без заказа, а следовательно такие выдачи RQST не понимает. По этому этот путь не желаетелен...
- Непосредственно в каталоге базы нет autoin.gbl - интересно, эта база будет отрабатывать этот файл и как надежно? И сможем ли мы там получить информацию о заказавшем читателе или там тоже $uf(0) будет выдавать другую информацию, а не иформацию об отредактированной записи?

Заранее благодарю за ответ!
С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 27, October, 2006 18:02

В записи RQST присутствует ссылка на читателя. Напишите формат (либо используя &uf('D...'), либо &uf('+1...')) который будет получать данные из нужной вам записи читателя.

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 27, October, 2006 20:17

Александр Иосифович!

Родилось две идеи для unifor:

1. Функция записи некоей формируемой строки в файл отчета.
2. Функция записи данных (строки) в буфер обмена Windows.


Владимир!

При Вашей идее мне кажется поменялись местами задачи и цели, т.е. если выдача идет WiFi, то запись WIFI должна существовать в каталоге (отдельном) и ее нужно выдавать. Т.е. WiFi - это книга (а у каждой книги WiFi свой адрес, т.е. метка).
В этом каталоге можно сложить и другие услуги (ксерокопирование, ламинирование, доступ VPN и пр.) с дополнительными параметрами каждой услуги.
А там уже можно поставить выборку из записи читателя нужной строки, т.к. ИРБИС запускает формат rqstrdr.pft и поставить свою dll.

При работе по предложенной выше вашей модели я согласен с Максимом. Более, увы, ничего придумать не удалось.

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 27, October, 2006 20:54

Посидел еще немного!

Понял, что предложенный мной вариант - это именно то, что у вас есть уже. Читатель, действительно, не "ловится". Ловится только факт наличия услуги и ее характеристики.
Прошу прощения. Недопонял. Пятница. Вечер.

Александр Иосифович!
Расскажите, что делает файл ind.pft в каталоге RDR?
Может через него передавать данные читателя?
И еще про файл !F8RET.pft из каталога RDR?

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Карауш (IP-адрес скрыт)
Дата: 28, October, 2006 16:23

Продолжу спаршивать разработчиков в этой ветке.

Вот смотрю я на формат файла regi.lst и сдается мне, что есть такая функция в format32.dll, которая пишет в файл regi.lst и "следит" за таким файлом.

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 31, October, 2006 21:07

Добрый день! Благодарю за ответы!

>>В записи RQST присутствует ссылка на читателя. Напишите формат (либо используя &uf('D...'), либо &uf('+1...')) который будет получать данные из нужной вам записи читателя.

К сожалению тут проблема в том, что в RQST фиксируются выдачи, сделаныне по предварительному заказу... А те выдачи, что без предварительного заказа в RQST не заносятся... :(

А как по идее должно быть - читатель подошел к стойке библиографа, говорит мол дайте мне WiFi, библиограф жмет кнопку выдача без заказа и все ок. С RQST библиографу придется самой сначала сделать заказ от читателя, а потом выдать. В общем реализовать так можно, но все же хочется облегчить работу библиографа и не издвеаться над ним...

>>При Вашей идее мне кажется поменялись местами задачи и цели, т.е. если выдача идет WiFi, то запись WIFI должна существовать в каталоге (отдельном) и ее нужно выдавать. Т.е. WiFi - это книга (а у каждой книги WiFi свой адрес, т.е. метка).
Да так и есть... :) Проблема как поймать что и кому было выдано без предварительного заказа.

>>А там уже можно поставить выборку из записи читателя нужной строки, т.к. ИРБИС запускает формат rqstrdr.pft и поставить свою dll.
Эта dll будет отрабатываться на клиенте. А нужно на сервере (он роутером управляет).

Вопрос к разработчикам ИРБИС: Скажите, есть какая либо возможность отловить выдачу без предварительного заказа и при этом узнать какая услуга и кому выдана?

Заранее благодарю за ответ!
С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 02, November, 2006 12:21

Ну есть один способ извратиться, но очень не надежный. Выдача без заказа делается ведь через какой-то там рабочий лист. Сделайте в обязательном поле ФЛК :) и пропишите в нем свою ДЛЛ. Проблема тут в том, что при отмене выдачи нужно как-то это отловить, т.е. придется в ДЛЛ периодически опрашивать RDR пока запись не найдется и если в течение какого-то времени записи нет, то задачу считать отмененной. Сами понимаете, это не по человечески. Но как вариант рассмотреть можно.

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Alio (IP-адрес скрыт)
Дата: 02, November, 2006 12:46

Vladimir Kim написал(а):
-------------------------------------------------------
> Вопрос к разработчикам ИРБИС: Скажите, есть какая
> либо возможность отловить выдачу без
> предварительного заказа и при этом узнать какая
> услуга и кому выдана?
В autoin.gbl БД RDR можно "отлавливать" повторения поля 40 (сведения о выдачах/возвратах) без даты возврата и с СЕГОДНЯШНЕЙ датой выдачи - соответственно по содержанию ВЫДАННОГО издания предпринимать определенные действия...


>
> Заранее благодарю за ответ!
> С уважением, Владимир Ким
> ---------------------------
> Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 02, November, 2006 15:34

Добрый день!

> > Вопрос к разработчикам ИРБИС: Скажите, есть
> какая
> > либо возможность отловить выдачу без
> > предварительного заказа и при этом узнать какая
> > услуга и кому выдана?
> В autoin.gbl БД RDR можно "отлавливать" повторения
> поля 40 (сведения о выдачах/возвратах) без даты
> возврата и с СЕГОДНЯШНЕЙ датой выдачи -
> соответственно по содержанию ВЫДАННОГО издания
> предпринимать определенные действия...

Все дело в том, что в autoin.gbl для каталога RDR, я почему то получаю по &uf(0) не запись читателя, которому выдается, а запись выданного издания из совершенно другого каталога (из которого выдавалась). А инофрмацию кому было выдано нигде нет, только библиографическое описание самого издания:(

Может быть я что-то делаю не так?

Заранее благодарю за ответ!

С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Alio (IP-адрес скрыт)
Дата: 03, November, 2006 10:04

Пришлите Ваши конструкции из autoin.gbl для RDR

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 03, November, 2006 18:32

Добрый день!

> Пришлите Ваши конструкции из autoin.gbl для RDR

К сожалению сейчас болею не на работе. Но все очень просто - открыл файл и в первое попавшееся место (где идут конструкции обработки и до каких либо ветвлений) вставил вставил вызов своей длл и передал ей в качестве аргумента &uf(0). Синтаксис точно сейчас не помню, что то типа &unifor(+8Test,Test, '&uf(0)') или как-то так...

В результате в длл приходит не запись читателя (на что я собственно расчитывал), а запись издания из каталога из которого произошла выдача (т.е. биб описание, количество экземпляров, места хранения и др.), а о читателе, которому была сделана выдача ни слова...

Пытался менять место вызова длл и перемещал в другие места autoin.gbl - ситуация та же... :(

С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, November, 2006 10:22

Еще раз проверьте в какой autoin.gbl и в КАКОЕ место вы вставили свои конструкции.
Если сделать все правильно, то &uf('0') даст именно запись текущего читателя...

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 07, November, 2006 13:45

Здравствуйте!

Благодарю Вас за рекомендацию!

Скажите, а в какое место autoin.gbl нужно вставить вызов длл, что бы получить запись читателя?

Если Вас не затруднит, не могли бы Вы написать как должен выглядеть правильный блок заданий в autoin.gbl, что бы все работало правильно и предавалась запись читателя?

Заранее благодарю за ответ!

С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Alio (IP-адрес скрыт)
Дата: 07, November, 2006 15:21

Встаьте в самый конец AUTOIN.GBL (RDR) новые строки, что-нибудь вроде

ADD
1000
XXXXXXXXXXXXXXXXXXX
&uf('+8test_dll,test_function,',&unifor('+0'))
XXXXXXXXXXXXXXXXXXX


при этом &uf('+8... не должен ничего возвращать.

Re: Как отловить выдачу издания на сервере (для &unifor(+8)
Пользователь: Vladimir Kim (IP-адрес скрыт)
Дата: 15, November, 2006 12:46

Спасибо большое все работает! :)

WiFi у нас уже заработал в тестовом режиме. Выдача выполняется прямо как книжка.

С уважением, Владимир Ким
---------------------------
Инженер-программист НБ МИФИ



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.