Параллельное выполнение запросов
Рестарт сессии
Таймаут
Ошибки при работе TCP/IP на стороне Gabriel
Использование UTS WEB 6 на платформе .NET
Использование прямого доступа через TCP/IP сокеты
Программа UTS WEB 6 предназначена для обеспечения разработки и эксплуатации различных WEB-приложений, связанных с системой бронирования авиабилетов Gabriel.
UTS WEB 6 - это HTTP-интерфейс к системе Gabriel. Этот интерфейс может быть использован для разработки различных WEB-проектов: справочных систем, интернет-магазинов по бронированию и продаже авиабилетов и др.
UTS WEB 6 обеспечивает выполнение команд Gabriel, которые указываются в параметрах HTTP-запросов, направляемых от WEB сервера к UTS WEB 6. Далее, в UTS WEB 6 запросы преобразуются в стандартные транзакции Gabriel и через сеть UTS NET передаются на выполнение в Atlanta Data Processing Center (ATLDP) - в систему бронирования Gabriel. Ответы системы бронирования Gabriel возвращаются в UTS WEB 6 и преобразуются в HTTP - ответы для WEB сервера.
Это позволяет разработчикам WEB-приложений использовать стандартный HTTP протокол для доступа к ATLDP - Gabriel.
Пример 1
Пример 2
Выполнение команды Gabriel из HTML-ссылки
Данные примеры работают через UTS WEB 6, установленный исключительно для целей демонстрации. Для реальной работы - программу UTS WEB 6 нужно устанавливать в агентcтве или в авиакомпании.
Внимание ! UTS WEB 6 обеспечивает параллельное выполнение неограниченного количества запросов к данным любых авиакомпаний, хостирующихся в Gabriel. Встроенный диспетчер запросов позволяет выполнять последовательности команд Gabriel с сохранением состояния между запросами.
UTS WEB 6 использует для работы всю инфраструктуру и все возможности сети UTS NET. Доступ к Gabriel выполняется через сеть серверов UTS NET Server. Поэтому, для работы и использования UTS WEB 6 необходимо быть зарегистрированным участником сети UTS NET и иметь Username/Password в сети UTS NET. Процедура подключения к сети UTS NET описана здесь.
Для работы с Gabriel через UTS WEB 6 необходимо иметь SITA USERID/PASSWORD и SI для доступа к системе Gabriel. Эти данные авиакомпании выдают агентствам по продаже авиабилетов.
Внимание ! В UTS WEB 6 могут использоваться СТАТИЧЕСКИЕ и ДИНАМИЧЕСКИЕ PID. Статический PID необходимо получать в авиакомпании. Динамический PID можно назначить самостоятельно из диапазона 70000-99999. Каждый PID в UTS WEB 6 имеет уникальный серийный номер. Регистрация серийных номеров (SN) PID для UTS WEB 6 выполняется так же, как и для UTS Access 6 и описана здесь.
Загрузите с сайта www.uts2000.com программу - инсталлятор UTS WEB 6 и выполните установку. Следуйте подсказкам стандартного инсталлятора.
После установки, все файлы и каталоги UTS WEB будут находиться в каталоге: C:\Program Files\UTS WEB\Bin\
UTS_WEB_6.exe - исполняемый модуль
UTS_WEB_6x.ini - файл с параметрами запуска
test_form.htm - страница с тестовыми запросами
\Log\... - файлы журналов для каждого PID
Все параметры для запуска находятся в файле UTS_WEB_6x.ini в том же каталоге, где размещен исполняемый модуль UTS_WEB_6.exe
Внимание ! Если в UTS WEB 6 используются динамические PID, команда SI должна вводиться в расширенном формате (с паролем): SI:NNNN/PASSWORD. Подробности см. Cессия типа Dynamic. Все используемые PID должны быть зарегистрированы в UTS Register.
UTS WEB 6 обеспечивает HTTP-интерфейс для работы с системой Gabriel. Встроенный в UTS WEB 6 диспетчер обеспечивает параллельное выполнение множества команд Gabriel через множество PID разных авиакомпаний. Все необходимые PID разных авиакомпаний перечисляются в виде секций [NNNNN] в файле UTS_WEB_6x.ini.
Для сайтов с большой посещаемостью необходимо иметь возможность параллельно выполнять запросы через 3-5 и более PID для исключения конфликтов. Для этого нужно будет зарегистрировать в UTS Register 3-5 или более PID. Каждый используемый PID будет иметь уникальный серийный номер (SN), который необходимо зарегистрировать в UTS Register 6.
Внимание ! Серийные номера для каждого PID указаны в закладке PIDs and SN Registration в в программе UTS WEB 6. После настройки файла UTS_WEB_6x.ini запустите UTS WEB 6 и перейдите к закладке PIDs and SN Registration.
Регистрация серийного номера (SN) и PID для UTS WEB 6 выполняется так же, как и для UTS Access 6 и описана здесь. Для регистрации SN-PID необходимо быть участником в сети UTS NET и иметь Username/Password в сети UTS NET. Процедура подключения к сети UTS NET описана здесь.
Запустите исполняемый модуль UTS_WEB_6.exe. Файл с параметрами запуска UTS_WEB_6x.ini должен находиться в том же каталоге, что и исполняемый модуль UTS_WEB_6.exe

После запуска автоматически стартуют все перечисленные в файле UTS_WEB_6x.ini сессии (PID) для работы с Gabriel. При каждом запуске или рестарте сессии, автоматически выполняются команды вписывания SI... (SIGN IN).
Для каждого PID UTS WEB 6 обеспечивает режим постоянно открытой активной сессии Gabriel (постоянно запущенный PID). UTS WEB автоматически отслеживает различные ситуации, связанные с отключением или восстановлением каналов связи и другие проблемы, которые могут возникать при работе сессии в Gabriel. При необходимости будет выполнен автоматический рестарт сессии.
UTS WEB 6 будет обрабатывать HTTP-запросы, поступающие на порт, указанный в параметрах запуска в переменной UTS_WEB_PORT=...., выполнять команду Gabriel из запроса и отправлять HTTP-ответы в виде текста ответа Gabriel. Трасса выполняемых команд и ответов Gabriel ведется в закладке Trace в UTS WEB 6.

Программа UTS_ WEB_6.exe может быть запущен как сервис с использованием программы SrvAny.
В закладке PIDs and SN Registration перечислены PID и назначенные каждому PID уникальные серийные номера. Каждый PID и каждый серийный номер должен быть зарегистрирован в UTS Register 6.

Регистрация серийного номера (SN) и PID для UTS WEB 6 выполняется так же, как и для UTS Access 6 и описана здесь. Для регистрации SN-PID необходимо быть участником в сети UTS NET и иметь Username/Password в сети UTS NET. Процедура подключения к сети UTS NET описана здесь.
В UTS WEB 6 реализованы 2 механизма выполнения команд GABRIEL:
выполнение одиночных команд без сохранения состояния PID
выполнение последовательности команд с сохранением состояния PID после выполнения запроса
Если состояние PID после выполнения запроса не будет далее использоваться как стартовая точка для следующих команд, тогда можно выполнить команду GABRIEL с использованием любого свободного PID конкретной авиакомпании.
Одиночную команду Gabriel можно выполнить, отправив следующий HTTP запрос к UTS WEB 6:
212.30.150.66 - IP-адрес UTS WEB 6. В настоящее время UTS WEB 6 запущен для демонстрации на адресе 212.30.150.66
28000 - порт, по которому отвечает UTS WEB 6 Задается при запуске параметром
UTS_WEB_PORT=28000. Можно назначить любой свободный порт
gabriel_cmd - зарезервированное имя для параметра с текстом команды
AV:MOWLON - текст исполняемой команды Gabriel
ALC=UN - код авиакомпании (UN)
PID=ANY - выполнить команду Gabriel AV:MOWLON под любым свободным PID авиакомпании UN. Выполнение команд под любым свободным PID допустимо и имеет смысл только в том случае, если нужно выполнить только одну команду и не сохранять состояние (контекст) PID.
Внимание ! Для выполнения цепочки связанных команд под одним PID, в параметре PID= нужно указывать конкретный номер PID, который сначала должен быть получен для монопольного использования текущей WEB-сессией запросом GET_PID. см. Выполнение последовательности команд
После выполнения одиночной команды (запрос из WEB-сессии с параметром PID=ANY) PID будет автоматически освобожден для использования другими WEB-сессиями. Поэтому, состояние PID после выполнения запроса с параметром PID=ANY в общем случае - неизвестно, поскольку следующий запрос от другой WEB-сессии уже может изменить состояние PID.
Для ввода многострочных команд используйте символ %13 в тексте HTTP-запроса для разделения отдельных строк.
В некоторых случаях необходимо выполнить несколько логически связанных команд Gabriel под одним PID. При этом может быть важно, чтобы PID сохранял свое состояние (контекст).
Например, при создании PNR нужно последовательно выполнить несколько команд (IG, SD, SD, NM, CT, *). Для этих целей в UTS WEB 6 реализован механизм получения и монопольного использования номера свободного PID для выполнения цепочки команд (запросы GET_PID и FREE_PID).
Запрос GET_PID позволяет найти (получить) PID указанной в запросе авиакомпании, который не используется в данный момент в других WEB-сессиях (для которого еще не была выдана команда GET_PID или который уже был освобожден командой FREE_PID). Если PID был получен запросом GET_PID и используется в одной WEB-сессии, то другие WEB сессии не могут использовать этот же PID, пока используемый PID не будет освобожден явно запросом FREE_PID.
В общем случае, для выполнения цепочки команд нужно выполнить следующие запросы:
Этот запрос GET_PID позволяет получить номер
любого свободного PID авиакомпании UN
и пометить PID как используемый монопольно. Монопольно
используемый PID не может быть получен другой WEB-сессией
для одновременного использования. Номер PID, выделенный
для использования в сессии будет возвращен в ответе
- в строке USED PID:
Номер используемого PID должен быть указан во всех последующих запросах - в параметре PID=. При этом, параметр ALC= (код авиакомпании) становится необязательным.
Выполнить команду Gabriel (например DA) с использованием PID 70000
Выполнить следующую команду из цепочки команд, с использованием того же самого PID 70000
По окончании использования PID=70000, необходимо освободить его для использования в других сессиях запросом FREE_PID
Если PID 70000 был успешно освобожден, тогда в строке RELEASED PID: будет указан номер освобожденного PID
Внимание ! Если PID, полученный запросом GET_PID не был явно освобожден запросом FREE_PID, тогда данный PID не может быть повторно получен запросом GET_PID, то есть не может использоваться другими WEB-сессиями. Поэтому, разработчикам WEB-систем следует предусмотреть средства гарантированного освобождения PID сразу же после выполнения необходимой последовательности команд.
Результат выполнения запроса будет направлен по протоколу HTTP в текстовом виде. Строки разделяются символом $D (#13). Cимвол SOE (>) заменяется на <SOE_SYM>
VERSION=UTS WEB 6.1.0.105 - текущая версия
PID=70000 - номер PID, под которым была выполнена команда
AIRLINE=UN - код авиакомпании
ERRORS=NO - наличие ошибок при выполнении запроса (NO/YES)
ANSWER - строка, после которой следует ответ Gabriel или сообщение от UTS WEB 6
UTS WEB 6 не выполняет парсинг ответов Gabriel или преобразование их в другие форматы. Эта задача лежит полностью на разработчиках WEB-приложений.
Если 2 или более WEB-сессий отправляют запросы к UTS WEB 6, тогда для каждой WEB сессии будет выделен отдельный PID из списка свободных PID. Если количество PID недостаточно, будет получен ответ:
и соединение с WEB-клиентом будет закрыто.
Для сайтов с большой проходимостью в UTS WEB 6 должно быть запущено необходимо количество PID (3-5 и более), которые будут обслуживать WEB-сессии.
При возникновении нештатных ситуаций (потеря связи, закрытие сессии и др.) UTS WEB 6 выполняет автоматический рестарт сессии (перезапуск PID). В процессе рестарта сессии выполнение команд Gabriel невозможно. Если сессия (PID) находится в состоянии рестарта и в этот промежуток времени направить запрос на выполнение команды через UTS WEB 6 с использованием данного PID, будет получен ответ:
и соединение с WEB-клиентом будет закрыто.
Кроме того, можно отправить запрос для принудительного рестарта PID
Если рестарт PID выполнен успешно, будет получено сообщение:
Если сессия в UTS NET 6 активна, но ответ на запрос не поступает от Gabriel в течение 60 секунд - будет получен ответ:
и соединение с WEB-клиентом будет закрыто. После этого будет выполнен автоматический рестарт PID.
Если при выполнении запроса произошла ошибка TCP/IP на стороне Gabriel, будет получен ответ:
Соединение с WEB-клиентом будет закрыто. После этого будет выполнен автоматический рестарт сессии (PID).
Для обращения к UTS WEB 6 в приложениях ASP.NET могут быть использованы классы: WebClient или HTTPWebRequest.
Пример обращения к UTS WEB из приложения ASP.NET (VB) приведен ниже:
Разработчик может использовать TCP/IP сокеты для работы с UTS WEB.
Запрос к UTS WEB 6 можно отправлять как текстовую строку в формате:
Здесь DA - исполняемая команда Gabriel.
PID=74321 - номер PID, через который нужно выполнить команду. Конкретный номер PID нужно указывать для выполнения цепочки команд. Этот номер PID необходимо предварительно получить от UTS WEB выполнив запрос GET_PID.
После выполнения команды GET_PID, UTS WEB 6 вернет номер PID, который можно использовать для выполнения последовательности (цепочки) команд.
VERSION=UTS WEB 6.1.0.114 PID=70000 AIRLINE=UN ERRORS=NO
ANSWER USED PID: 74321
Если в запросе в качестве номера PID указать ANY, запрос будет выполнен под любым свободным PID авиакомпании, указанной в параметре ALC=. Параметр ALC= в этом случае - обязательный.
По окончании использования PID=74321 необходимо освободить его для использования в других сессиях командой FREE_PID
После текста запроса и перед "HTTP/1.1" ПРОБЕЛ НУЖЕН ОБЯЗАТЕЛЬНО !!!
HTTP-ответ будет включать стандартный HTTP-заголовок, за которым следует текст ответа Gabriel (GABRIEL_RESPONSE) или текст сообщения UTS WEB 6 (TIME OUT и др.).
Элементы заголовка HTTP-ответа разделяются символами CRLF ( $D$A)
RESPONSE - это текст ответа от UTS WEB 6. Строки в ответе RESPONSE разделены символом $D.
NNNNN - длина текста ответа.
UTS WEB 6 работает с использованием всей инфраструктуры сети UTS NET 6 (через любой сервер UTS NET Server 6). Поэтому, использовать UTS WEB 6 могут только зарегистрированные пользователи UTS NET.
см. Порядок регистрации в сети UTS NET
Оплата за техническую поддержку при использовании UTS WEB 6 выполняется по тем же счетам и тарифам, что и за UTS Access. Каждый используемый PID в UTS WEB 6 имеет уникальный серийный номер (SN).
Внимание ! При выписке счета к оплате - количество используемых серийных номеров (SN) UTS WEB 6 (количество PID) должно быть ДОБАВЛЕНО к количеству используемых серийных номеров программы UTS Access. Оплату необходимо делать по одному счету - за UTS Access и за UTS WEB 6 - за общее количество серийных номеров.
Для использования UTS WEB 6 необходима такая же регистрация серийных номеров ( SN), PID и SITA USERID/Password, как и для работы UTS Access 6. В UTS WEB 6 каждый используемый PID имеет уникальный серийный номер (SN). Регистрация серийного номера (SN) и PID для UTS WEB 6 выполняется так же, как и для UTS Access 6 и описана здесь.
Внимание ! Серийные номера для каждого PID указаны в закладке PIDs and SN Registration в в программе UTS WEB 6. После настройки файла UTS_WEB_6x.ini запустите UTS WEB 6 и перейдите к закладке PIDs and SN Registration.