Автоматизированная библиотечно-информационная система "Руслан-Нео"


Сервер


Описание применения

ООО "Открытые библиотечные системы"

Рустам Усманов

Версия 1.14.1


Аннотация

В данном документе приведены общие сведения о компонентах серверной части AБИС "Руслан-Нео" . Описаны назначение, условия применения, решаемые задачи, входные и выходные данные.

Глава 1. Назначение программы

Серверная часть "Руслан-Нео" предназначена для обеспечения доступа удалённых пользователей к ресурсам АБИС "Руслан-Нео". Удалёнными пользователями могут являться любые пользователи сервера приложений WildFly , на базе которого функционирует АБИС. Ресурсами АБИС "Руслан-Нео" являются коллекции записей (БД) и собственно записи, поддерживаемые сервером "Руслан-Нео". Доступ к ресурсам заключается в выполнении над ними следующих операций:

  • Поиск и извлечение (по протоколам SRU 2.0 и Z39.50)

  • Извлечение, модификация, создание, удаление, блокировка, разблокировка (по протоколу WebDAV)

  • Операции, связанные с процессами книговыдачи, в т.ч. заказ услуги (бронирование, копия) по найденному библиографическому описанию (по протоколам NCIP v. 2.0.2 и 3M™ SIP v. 2.00)

Глава 2. Условия применения

Программы серверной части могут функционировать на любых технических средствах под управлением сервера приложений WildFly версии 10.*.

Обязательными требованиями для выполнения программ серверной части являются:

Глава 3. Описание задач

3.1. Работа с пакетными заданиями

Подсистема пакетных заданий АБИС "Руслан-Нео" реализуется на базе подсистемы пакетных заданий сервера приложений WildFly и соотетствует требованиям спецификации JSR-352: Batch Applications for the Java Platform.

Запуск пакетных заданий осуществляется следующими способами:

  • Вручную при помощи Автоматизированного рабочего места администратора

  • Автоматически, в рамках процесса обработки событий об изменениях в записях (задания MoveRecords, UpdateLinkedRecords).

  • Автоматически по расписанию, заданному при настройке сервера АБИС "Руслан-Нео".

Контроль выполнения пакетных заданий может быть осуществлён при помощи Автоматизированного рабочего места администратора и журналов сервера приложений WildFly.

В таблице 3-1 представлены пакетные задания, их назначение, параметры (символом * отмечены обязательные параметры) и примеры их значений.

Таблица 3-1. Пакетные задания АБИС "Руслан-Нео"

CopyRecords
НазначениеКопирование записей из одной БД в другую
Параметры

database* - исходная БД

dst* - целевая БД

query - CQL-запрос для отбора копируемых записей из исходной БД

Пример параметров
database=BOOKS
dst=TEMP
query=dc.title any "физика"
                                            
DeleteAllRecordsFromDatabase
НазначениеУдаление всех записей из БД
Параметры

database* - БД, из которой следует удалить записи

Пример параметров
database=BOOKS
                                                    
DeleteDatabase
НазначениеУдаление БД
Параметры

database* - БД, которую следует удалить

Пример параметров
database=BOOKS
                                                    
DeleteRecords
НазначениеУдаление записей из БД
Параметры

database - БД, из которой следует удалить записи

query - CQL-запрос для отбора удаляемых записей

Пример параметров
database=BOOKS
query=dc.title any "физика"
                                                    
ExportRecordsISO2709
НазначениеЭкспорт записей из БД в формате ISO 2709
Параметры

database - БД, из которой следует экспортировать записи

query - CQL-запрос для отбора экспортируемых записей

url* - URL ресурса, в который будут помещены экспортируемые записи

Примечание

Java не поддерживает запись в URL со схемой file. Это означает невозможность экспорта записей при помощи этого задания непосредственно на файловую систему сервера АБИС "Руслан-Нео".

Пример параметров
database=BOOKS
query=dc.title any "физика"
url=ftp://user:password@host/path/to/file.iso
                                                    
ExportRecordsNative
НазначениеЭкспорт записей из БД в формате хранения (XML)
Параметры

database - БД, из которой следует экспортировать записи

query - CQL-запрос для отбора экспортируемых записей

url* - URL ресурса, в который будут помещены экспортируемые записи

rootElement - идентификатор корневого элемента

Примечание

Java не поддерживает запись в URL со схемой file. Это означает невозможность экспорта записей при помощи этого задания непосредственно на файловую систему сервера АБИС "Руслан-Нео".

Пример параметров
database=BOOKS
query=dc.title any "физика"
url=http://user:password@host/path/to/file.xml
                                                    
GenerateVisitRecords
НазначениеСоздание записей на интервалы посещения отделов библиотеки
Параметры

database* - БД, в которую следует поместить созданные записи

url* - URL ресурса, содержащего суточный набор записей на интервалы посещения

depth - разница в днях (по умолчанию 7) между датой потенциального посещения, запись на которое создаётся, и текущей датой

Пример параметров
database=VISITS
url=file:///usr/share/rneo/visits.xml
depth=7
                                                    
ImportRecordsISO2709
НазначениеИмпорт записей в БД в формате ISO 2709
Параметры

database* - БД, в которую следует импортировать записи

url* - URL ресурса, из которого будут импортированы записи

syntax - идентификатор формата записи. См. реестр.

index - логическое значение (true по умолчанию или false), указывающее на необходимость или отсутствие необходимости индексировать импортируемые записи.

Пример параметров
database=BOOKS
syntax=1.2.840.10003.5.28.1
url=file:///path/to/file.iso
                                                    
ImportRecordsNative
НазначениеИмпорт записей в БД в формате хранения (XML)
Параметры

database* - БД, в которую следует импортировать записи

url* - URL ресурса, из которого будут импортированы записи

recordTag - идентификатор элемента записи.

index - логическое значение (true по умолчанию или false), указывающее на необходимость или отсутствие необходимости индексировать импортируемые записи.

Пример параметров
database=BOOKS
url=file:///path/to/file.xml
                                                    
ImportRecordsSystemView
НазначениеИмпорт записей в БД в формате системного представления JCR
Параметры

database* - БД, в которую следует импортировать записи

url* - URL ресурса, из которого будут импортированы записи

Пример параметров
database=CIRC
url=file:///path/to/file.xml
                                                    
IndexDatabase
НазначениеИндексирование записей БД
Параметры

database - БД, которую следует индексировать

delay - задержка в миллисекундах между смежными запросами на индексирование записей

reindex - логическое значение (true по умолчанию или false), указывающее на необходимость или отсутствие необходимости переиндексировать уже проиндексированные записи.

Пример параметров
database=BOOKS
delay=1000
reindex=false
                                                    
JCRReindex
НазначениеПереиндексирование записей на уровне JCR
Параметры

database - БД, которую следует переиндексировать

Пример параметров
database=BOOKS
                                                    
MapACLPrincipal
НазначениеЗамена идентификаторов субъектов в списках управления доступом (ACL) к БД в соответствии с таблицей отображения
Параметры

database - БД, для которой следует изменить ACL

map - URL ресурса, в котором задано отображение идентификаторов субъектов в формате было=стало

Пример параметров
database=BOOKS
map=file:///path/to/principalMap.properties
                                                    
Migrate
НазначениеМиграция и индексирование данных из АБИС "Руслан"
Параметры

source* - JNDI-имя источника библиотечных данных "Руслан"

Пример параметров
source=java:jboss/datasources/19013582/lib
                                                    
MigrateACLs
НазначениеМиграция списков управления доступом БД АБИС "Руслан"
Параметры

source* - JNDI-имя служебного источника данных "Руслан"

Пример параметров
source=java:jboss/datasources/19013582/mgr
                                                    
MigrateBibRecords
НазначениеМиграция данных из библиографических БД АБИС "Руслан"
Параметры

source* - JNDI-имя источника библиотечных данных "Руслан"

database - БД, данные из которой подлежат миграции

maxVersions - предельное количество версий записи, которые будут мигрировать

Пример параметров
source=java:jboss/datasources/19013582/lib
database=BOOKS
maxVersions=2
                                                    
MigrateDatabases
НазначениеМиграция структуры БД АБИС "Руслан"
Параметры

source* - JNDI-имя источника библиотечных данных "Руслан"

Пример параметров
source=java:jboss/datasources/19013582/lib
                                                    
MigrateServiceRecords
НазначениеМиграция данных из служебных БД АБИС "Руслан"
Параметры

source* - JNDI-имя источника библиотечных данных "Руслан"

database - БД, данные из которой подлежат миграции

Пример параметров
source=java:jboss/datasources/19013582/lib
database=BILLS
                                                    
MigrateUsers
НазначениеМиграция пользователей и групп прав доступа АБИС "Руслан". Группы прав доступа АБИС "Руслан" отображаются в роли АБИС "Руслан-Нео".
Параметры

source* - JNDI-имя служебного источника данных "Руслан"

addRoles - список дополнительных ролей (через запятую), которые должны быть назначены мигрирующим пользователям.

Пример параметров
source=java:jboss/datasources/19013582/mgr
addRoles=foo,bar,baz
                                            
MoveRecords
НазначениеПеремещение записей из одной БД в другую
Параметры

database - исходная БД

dst* - целевая БД

query - CQL-запрос для отбора перемещаемых из исходной БД записей

Пример параметров
database=BOOKS
dst=TEMP
query=dc.title any "физика"
                                                    
ReindexDatabase
НазначениеПереиндексирование записей в БД
Параметры

database - БД, записи которой следует переиндексировать

query - CQL-запрос для отбора переиндексируемых записей

removedRecordsOnly - логическое значение (false по умолчанию или true), указывающее на отсутствие необходимости или необходимость удаления из индексов сведений об удалённых записях. Применяется при рассинхронизации состояний хранилища и индексов.

nonReferencingRecordsOnly - логическое значение (false по умолчанию или true), указывающее на отсутствие необходимости или необходимость переиндексирования записей, ссылающихся на другие записи.

Пример параметров
database=BOOKS
query=dc.title any "физика"
                                                    
ReindexReferencedRecords
НазначениеПереиндексирование записей, на которые ссылаются другие записи
Параметры

database - БД, содержащая ссылающиеся записи

dst - БД, содержащая записи, на которые ссылаются другие записи

query - CQL-запрос для отбора ссылающихся записей

Пример параметров
database=CIRC
dst=BOOKS.HOLDINGS
query=rec.id>abcd
                                                    
ReindexReferencingRecords
НазначениеПереиндексирование записей, ссылающихся на другие записи
Параметры

database - БД, содержащая записи, на которые ссылаются индексируемые записи

delay - задержка в миллисекундах между смежными запросами на индексирование записей

query - CQL-запрос для отбора записей, на которые ссылаются индексируемые записи

Пример параметров
database=BOOKS.HOLDINGS
delay=2000
query=ruslan.circulationStatus=lost
                                                    
RemoveACEForPrincipal
НазначениеУдаление субъекта из списка управления доступом
Параметры

database - БД, из списка управления доступом которой следует удалить субъекта

principal* - идентификатор субъекта

Пример параметров
database=BOOKS
principal=ruslan-user
                                            
RemoveJCRProperty
НазначениеУдаление JCR-свойства из записи
Параметры

database - БД, содержащая записи, в которых следует удалить JCR-свойство

property - идентификатор JCR-свойства

query - CQL-запрос для отбора записей, в которых следует удалить JCR-свойство

Пример параметров
database=EBOOKS
property=jcr:uuid
query=rec.id=RU\\SPSTU\\edoc\\53043
                                                    
RemoveVersions
НазначениеУдаление версий записей в соответствии с политикой хранения, определяемой бизнес-правилами модуля ruslan-retention-versions.drl
Параметры

database - БД, содержащая записи, подлежащие модификации

query - CQL-запрос для отбора записей, подлежащих модификации

RestoreVersions
НазначениеВосстановление содержимого записи до версии, созданной до определённого момента времени. Другими словами - откат изменений (удаление всех версий), сделанных после опредёлённого момента времени
Параметры

database - БД, содержащая записи, подлежащие модификации

afterDate - момент времени в формате yyyy-MM-dd'T'HH:mm:ssXXX (по умолчанию - момент запуска задания)

query - CQL-запрос для отбора записей, подлежащих модификации

Пример параметров
database=EBOOKS
afterDate=2019-09-08T12:05:03Z
query=rec.id=RU\\SPSTU\\edoc\\53043
                                                    
UpdateLinkedRecords
НазначениеОбновление связанных библиографических и авторитетных записей
Параметры

xslt - URL спецификации трансформации связанных записей на языке XSLT

origin* - URL записи, с которой связаны обновляемые записи

query - CQL-запрос для отбора обновляемых записей

Пример параметров
origin=jcr:SUBSCR/ru\spstu\subscr4957
xslt=vfs:/content/rneo.ear/lib/rneo-util.jar/
  UpdateLinkedRecords.xsl
query=dc.relation="ru\\spstu\\subscr4957"
                                                    
UpdateOverdues
НазначениеОбновление сведений о количестве документов, срок возврата которых истёк, в записях на читателей
Параметры

database - БД читателей

Пример параметров
database=LUSR
                                                    
XSLTransformRecords
НазначениеТрансформация записей
Параметры

database - БД, содержащая записи, подлежащие трансформации

xslt* - URL спецификации трансформации записей на языке XSLT

query - CQL-запрос для отбора записей, подлежащих трансформации

Пример параметров
database=SERIAL.HOLDINGS
query=ruslan.relatedBibliographic=
  "SERIAL/RU\\SPSTU\\books\\20083133"
xslt=file:///usr/share/rneo/RelinkHoldings.xsl
                                                    

3.2. Миграция данных из АБИС "Руслан"

Миграция данных из АБИС "Руслан" осуществляется посредством выполнения следующих пакетных заданий:

  • Migrate - миграция всех данных, за исключеним пользователей, групп прав доступа и списков управления доступом.

  • MigrateDatabases - миграция структуры БД.

  • MigrateBibRecords - миграция записей из библиографических БД.

  • MigrateServiceRecords - миграция записей из служебных БД.

  • MigrateACLs - миграция списков управления доступом БД.

  • MigrateUsers - миграция пользователей и групп прав доступа.

Соответственно миграция может осуществляться по двум сценариям:

  1. Миграция всех данных, за исключеним пользователей, групп прав доступа и списков управления доступом, при помощи задания Migrate.
  2. Миграция списка БД при помощи задания MigrateDatabases и последующая миграция записей из БД при помощи заданий MigrateBibrecords и MigrateServiceRecords. При необходимости можно также осуществить миграцию списков управления доступом БД при помощи задания MigrateACLs и миграцию пользователей и групп прав доступа при помощи задания MigrateUsers.

При объёме БД более 100000 записей рекомендуется осуществлять миграцию по второму сценарию, обеспечивающему большую управляемость процесса миграции. Кроме того, второй сценарий позволяет осуществлять одновременную миграцию библиографических и служебных БД (при одновременном выполнении заданий MigrateBibrecords и MigrateServiceRecords). Также следует заранее позаботиться о выделении серверу приложений WildFly достаточного количества оперативной памяти (не менее 8 ГБ при объёме БД более 400000 записей).

Ход процесса миграции можно контролировать при помощи Автоматизированного рабочего места администратора и журнала сервера приложений WildFly. По окончании процесса миграции данных следует проиндексировать БД. При аварийном завершении или ручной остановке задания его можно перезапустить и оно возобновится с того места, на котором было остановлено.

Миграцию нескольких БД одного типа (при указании параметра database) можно осуществлять только последовательно. Это означает, что одновременно можно запускать не более одного задания MigrateBibrecords и не более одного задания MigrateServiceRecords.

Глава 4. Входные и выходные данные

Форматом хранения записей в АБИС "Руслан-Нео" является XML. Ниже приведёно DTD соответствующих документов XML.

<!ELEMENT record        ((leader, field+) |
                        (bibliographicRecord?, holdingsData?) |
                        (tag+))>
<!ATTLIST record
        syntax  CDATA   #REQUIRED>
<!ELEMENT leader        (length, status, type,
                        leader07, leader08, leader09,
                        indicatorCount, identifierLength,
                        dataBaseAddress, leader17,
                        leader18, leader19, entryMap)>
<!ELEMENT length        (#PCDATA)>
<!ELEMENT status        (#PCDATA)>
<!ELEMENT type          (#PCDATA)>
<!ELEMENT leader07      (#PCDATA)>
<!ELEMENT leader08      (#PCDATA)>
<!ELEMENT leader09      (#PCDATA)>
<!ELEMENT indicatorCount        (#PCDATA)>
<!ELEMENT identifierLength      (#PCDATA)>
<!ELEMENT dataBaseAddress       (#PCDATA)>
<!ELEMENT leader17      (#PCDATA)>
<!ELEMENT leader18      (#PCDATA)>
<!ELEMENT entryMap      (#PCDATA)>
 
<!ELEMENT field         (#PCDATA | indicator | subfield)*>
 
<!ATTLIST field
        id      CDATA   #REQUIRED>
 
<!ELEMENT indicator     (#PCDATA)>
<!ATTLIST indicator
        id      CDATA   #REQUIRED>
 
<!ELEMENT subfield      (#PCDATA | field)*>
<!ATTLIST subfield
        id      CDATA   #REQUIRED>
 
 
<!ELEMENT tag           (#PCDATA | tag)*>
<!ATTLIST tag
        tagType    CDATA   #IMPLIED
        tagOccurrence   CDATA   #IMPLIED
        tagValue   CDATA   #REQUIRED>
      

Используются следующие идентификаторы форматов (атрибут syntax):

  • 1.2.840.10003.5.28.1 - RUSMARC библиографический;

  • 1.2.840.10003.5.28.2 - RUSMARC авторитетный;

  • 1.2.840.10003.5.105 - служебный.

Используются следующие идентификаторы схем служебных записей (элемент tag c атрибутами tagType="1" и tagValue="1"):

  • 1.2.840.10003.13.1000.148.1 - генератор;

  • 1.2.840.10003.13.1000.148.2 - справочник;

  • 1.2.840.10003.13.1000.148.3 - экземпляр документа;

  • 1.2.840.10003.13.1000.148.4 - событие книговыдачи;

  • 1.2.840.10003.13.1000.148.5 - акт списания;

  • 1.2.840.10003.13.1000.148.6 - счёт поступлления;

  • 1.2.840.10003.13.1000.148.7 - читатель;

  • 1.2.840.10003.13.1000.148.8 - подписка;

  • 1.2.840.10003.13.1000.148.9 - заказ на комплектование;

  • 1.2.840.10003.13.1000.148.10 - список экземпляров;

  • 1.2.840.10003.13.1000.148.11 - время и место посещения.

Перечень терминов и их определений

Модуль WildFly

Логический набор классов, предназначенный для загрузки классов и управления зависимостями в сервере приложений WildFly .

См. также Module .

Статический модуль WildFly

Модуль WildFly , установленный в каталоге modules сервера приложений WildFly .

Перечень сокращений

ACL

Access Control List

CQL

Contextual Query Language

DTD

Document Type Definition

JCR

Java Content Repository

JSON

JavaScript Object Notation

NCIP

NISO Circulation Interchange Protocol

NISO

National Information Standards Organization

SRU

Search/Retrieve via URL

URL

Uniform Resource Locator

WebDAV

Web Distributed Authoring and Versioning

XML

The Extensible Markup Language

XSLT

Extensible Stylesheet Language Transformations

АБИС

Автоматизированная библиотечно-информационная система

БД

База данных

СУБД

Система управления базами данных