Два компонента связывают сценарий с внешним миром: «Запрос в базу данных» работает с СУБД, «Запрос к WEB-сервису» — с HTTP-сервисами. Оба разветвляют сценарий на успех и ошибку и возвращают код ошибки в переменную.
Запрос в базу данных
Выполняет действия в базе и передаёт параметры на вход и на выход — параметрами выступают переменные сценария. Обращение идёт по одной из технологий: ADO, OLE, ODBC. Для внешних баз заполняется строка подключения; есть помощник-построитель.
Как параметры связываются с переменными
Параметры в тексте запроса обозначаются маркером, который зависит от технологии:
| Маркер | Где применяется |
|---|---|
@имя | Обычные SQL-переменные |
:имя | OLE, Oracle |
? | Входные параметры ODBC |
Встроенный парсер разберёт параметры и предложит сопоставить им переменные сценария. Входные параметры получат значения из переменных перед выполнением запроса, выходные — занесут свои значения в переменные после.
Свойства
| Свойство | Описание |
|---|---|
| SQL-запрос | Окно ввода запроса. Здесь же запрос можно проверить и исполнить в базе прямо в момент создания. |
| Таймаут | Ограничение времени выполнения запроса на сервере базы. По умолчанию 30 секунд. См. оговорки ниже. |
| Код ошибки | Переменная, в которую сохранится код возврата. |
| Переход | Куда идти после успешной транзакции. |
| Переход, ошибка | Куда идти при исключительной ситуации; в переменную «Код ошибки» попадёт код исключения из сервера базы. |
Command Time Out.
Значение 0 означает, что таймаут особым образом не устанавливается: применяется значение по умолчанию для созданного подключения — из строки подключения либо из параметров драйвера.
При подключении к Oracle свойство не применяется вовсе.
Вкладка «Подключение»
Здесь выбирается вариант подключения к базе. Вкладка нужна главным образом для нестандартных индивидуальных настроек и для работы с внешними базами. При использовании общего формата ADO, OLE или ODBC, а также при подключении по отдельно выделенным каналам к Oracle, заполняется строка подключения — в ней и задаются индивидуальные настройки: таймаут ожидания ответа, драйвер для конкретной СУБД при работе через ODBC. Все доступные параметры с описаниями показывает помощник формирования строки подключения.
Запрос к WEB-сервису
Выполняет запросы методами GET, POST, PUT, HEAD, DELETE. На вход может передавать заполненную структуру XML-документа; приём и обработку ответа выполняет по прикреплённой к компоненту структуре XML либо сохраняет ответ строкой. Компонент поддерживает работу в сессиях — сохраняет и использует cookie, — а также HTTPS с подтверждением сертификатов.
Адрес, прокси и авторизация
| Свойство | Описание |
|---|---|
| URL | Адрес веб-сервера. |
| Прокси-сервер | Не использовать — прямое подключение. Согласно общим настройкам — режим из общих настроек комплекса. Настроить индивидуально — параметры задаются в самом компоненте. |
| Адрес и Порт прокси-сервера | Только при индивидуальных настройках. |
| Авторизация на прокси | Да / нет. Только при индивидуальных настройках. |
| Логин и Пароль для авторизации на прокси | Только если авторизация включена. |
| Базовая авторизация | Не использовать либо По логину и паролю — авторизация на самом веб-сервере. |
| Логин и Пароль для базовой авторизации | Только если базовая авторизация выбрана. |
| Максимальное число перенаправлений | По умолчанию не задано — это эквивалентно ограничению в 20 перенаправлений, недостижимому в нормальных условиях. Значение 0 полностью игнорирует перенаправления. При каждом перенаправлении cookie накапливаются и передаются дальше. |
Запрос
| Свойство | Описание |
|---|---|
| Метод | POST, GET, PUT, HEAD, DELETE. Для всех, кроме GET, становится доступным формирование и отправка контента. |
| Тип контента | Строка contenttype для отсылаемого запроса: application/x-www-form-urlencoded, text/xml, text/html, text/plain. Допустимы и другие строки. |
| Тип запроса | XML — тело формируется в специальной форме с подстановкой переменных; Аргумент — тело берётся из указанного строкового аргумента. |
| Запрос | Соответственно форма структуры запроса либо форма выбора строкового аргумента. |
| Кодировка запроса | Unicode, UTF-8, UTF-7, текущая кодовая страница Windows, Windows-1251, указанная кодовая страница Windows. |
| Кодовая страница Windows для запроса | Числовой аргумент; доступен при выборе «Указанная кодовая страница Windows». |
| Дополнительные заголовки | Строковый многострочный аргумент вида HeaderName1: Value1 — позволяет переопределить стандартные заголовки и добавить свои. |
| Дополнительные cookie | Строковый аргумент: пары «ключ=значение», разделённые переводом строки, запятой или точкой с запятой. |
Режим работы
Это ключевое свойство компонента: оно определяет, ждёт ли сценарий ответа и что случится с запросом, если сценарий завершится раньше.
| Режим | Поведение | Если сценарий прерван по обрыву связи |
|---|---|---|
| Ожидание результата | Компонент завершается только после ответа сервера, ошибки сокета либо принудительного завершения сценария. Результат анализируется и сохраняется. | Запрос обрывается, результат не сохраняется. |
| Асинхронный запуск | Запускает запрос и мгновенно возвращает управление. Ответ не сохраняется и не анализируется. | Запрос продолжает выполняться. |
| Обрыв по таймауту | Ждёт ответа не дольше заданного времени, затем обрывает запрос и возвращает управление. Ответ, полученный до таймаута, анализируется и сохраняется. | Запрос обрывается. |
| Выход по таймауту | Ждёт заданное время, затем возвращает управление, оставляя запрос работать асинхронно. Ответ до таймаута сохраняется; после — нет, поскольку сценарий может быть уже завершён. | Запрос продолжает выполняться. |
Свойство «Таймаут, секунды» доступно только для режимов обрыва и выхода по таймауту.
Ответ
| Свойство | Описание |
|---|---|
| Тип ответа | XML — разбирать по структуре; TEXT — сохранить строкой для дальнейшего анализа. Недоступно в асинхронном режиме. |
| Ответ (XML) | Форма структуры стандартного ответа и распределения значений по переменным. Поддерживает только строгое соответствие дерева XML. Недоступно в асинхронном режиме. |
| Ответ в переменную | Переменная для текста ответа при типе TEXT. Недоступно в асинхронном режиме. |
| Кодировка ответа | Unicode, UTF-8, UTF-7, текущая кодовая страница Windows, Windows-1251, указанная кодовая страница Windows, «Авто (заголовок)», «Авто (метатэги, заголовок)». |
| Кодовая страница Windows для ответа | Числовой аргумент; доступен при выборе «Указанная кодовая страница Windows». |
| Заголовки ответа в переменную | Переменная, в которую сохранятся заголовки ответа. |
| Код ошибки в переменную | Переменная для кода возврата. См. таблицу ниже. |
| Переход | Куда идти после успешной транзакции. |
| Переход, таймаут | Куда идти при выходе по таймауту. |
| Переход, ошибка | Куда идти, если сервис недоступен или вернул ошибку. |
Коды ошибок
Если ответ от веб-сервиса получен, код ошибки совпадает с кодом состояния HTTP. Если ответа не было — возвращаются внутренние коды компонента:
| Код | Что произошло |
|---|---|
| 661 | Истёк таймаут установления подключения (10 секунд) для отправки данных |
| 662 | Не удалось установить соединение для отправки данных |
| 663 | Истёк таймаут отправки тела запроса |
| 664 | Ошибка при завершении отправки тела запроса |
| 1 | Прочие ошибки; подробности попадают в серверный лог Exception |