УНИВЕРСАЛЬНЫЕ ТРАНЗАКЦИИ: ИМПОРТ-ЭКСПОРТ ДАННЫХ
Взаимодействие с внешними системами как правило осуществляется посредством текстовых файлов. Формирование данных файлов при экспорте и чтение данных из файлов при импорте в АБС Бисквит может осуществляться с помощью Универсальных транзакций.
Для организации данного процесса в АБС Бисквит заведены следующие основные классы:
- Seance - Сеансы;
- Exchange - Транспортная форма;
- Packet - Сообщения;
- FileEchg - Наборы данных.
Все эти классы построены на одноименных таблицах базы данных.
СЕАНСЫ (SEANCE)
Сеанс - операция импорта-экспорта данных. За один сеанс может быть обработано несколько файлов.
Реквизиты класса:
- Direct - Направление;
- Filial-ID - Код филиала;
- Number - Номер сеанса;
- op-kind - Код транзакции;
- SeanceDate - Дата;
- SeanceID - Идентификатор сеанса;
- SeanceMode - Режимы создания Сеансов обмена;
- SeanceTime - Время сеанса;
- TripID - Идентификатор рейса;
- user-id - Ответисполнитель;
Каждому сеансу присваивается уникальный SeanceID, а так же определяется направление (реквизит Direct): экспорт, либо импорт.
ТРАНСПОРТНАЯ ФОРМА (EXCHANGE)
Транспортная форма является промежуточным звеном между источником данных и их получателем в процессе импорта-экспорта данных. Импортируемые и экспортируемые данные предварительно заносятся в транспортную форму, где они валидируются и т.д., а после этого переносятся либо в файл (при экспорте), либо в базу данных АБС Бисквит (при импорте).
Сама транспортная форма представляет собой набор отдельных классов метасхемы АБС Бисквит для каждого отдельного случая импорта-экспорта, являющихся подклассами класса Exchange.
Стоит отметить, что Exchange и все его подклассы являются абстрактными классам и следовательно не связаны ни с какой таблицей базы данных. Так куда же тогда заносятся данные? Не смотря на то, что классы являются абстрактными, Instance (динамическая временная таблица) данных классов может быть создан и в него могут быть записаны данные. Создавая шаблон в транзакции с данным классом вы собственно создаете его Instance.
Кроме этого, на данных классах, например, может быть определена процедура метода Initial (Инициализация объекта), в которой возможно объявление временных таблиц и их заполнение.
СООБЩЕНИЯ (PACKET)
Сообщения - определяют содержимое файлов. Для каждого отдельного случая импорта-экспорта данных создаются соответствующие подклассы класса Packet.
Пакеты могут быть объединены в один крупный пакет. Связанным классом является класс Exchange (транспортные формы).
НАБОРЫ ДАННЫХ (FILEECHG)
Набор данных - определяет набор файлов, которые обрабатывались или формировались за сеанс, а так же их основные атрибуты, такие как например кодировка.
Реквизиты класса:
- CodePage - Кодовая страница;
- FCase - Управление регистром вывода букв;
- FileExchID - Идентификатор;
- Name - Имя файла;
- Order - Номер;
- Path - Путь;
- SeanceID - Сеанс обмена;
- State - Статус.
Методы класса:
- browse - file-brw.p
- Export - file-exp.p
- fltstruct - file-flt.p
Есть еще процедура file-imp.p, но ни в одном методе она не фигурирует.
Процедура file-exp.p составляет файл экспорта из соответствующих пакетов.
ОБЩАЯ СТРУКТУРА УНИВЕРСАЛЬНОЙ ТРАНЗАКЦИИ ИМПОРТА-ЭКСПОРТА
- Создание сеанса обмена (создание объекта класса Seance, действие: Создание);
- Определение и заполнение транспортной формы (создание объектов подклассов класса Exchange, действие: инициализация);
- Формирование сообщения (создание объектов классов Packet, действие: Экспорт/Импорт и PacketText, как правило создается процедурно, см. библиотеку pp-pack);
- Создание набора данных при экспорте (создание объекта класса FileEchg, действие: Экспорт);