Файловый обмен: различия между версиями

Материал из Wiki ГКБ
Перейти к навигации Перейти к поиску
(finish2)
 
(не показано 9 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
===Описание структуры и команд входящего файла===
 
===Описание структуры и команд входящего файла===
 +
 
#Все входящие файлы архивируется в формате ZIP;
 
#Все входящие файлы архивируется в формате ZIP;
 
#Файлы должны иметь расширение ZIP;
 
#Файлы должны иметь расширение ZIP;
Строка 24: Строка 25:
 
|Аналогична команде :CHILDTABLE, только связь с :TABLE – динамическая
 
|Аналогична команде :CHILDTABLE, только связь с :TABLE – динамическая
 
|}
 
|}
 +
  
 
===Описание структуры и команд файла-ответа===
 
===Описание структуры и команд файла-ответа===
 +
 
#На каждый непустой входящий файл, система формирует файл ответа, причем:<br>Имя файла – имеет формат <Имя_входящего_файла>.ANS.ZIP;<br>Файл заархивирован в формате ZIP;<br>Внутри архивного файла-ответа содержатся файлы ответов на командные файлы содержавшиеся во входящем файле;<br>Имена файлов ответов имеют формат <Имя_командного_файла>.ANS  
 
#На каждый непустой входящий файл, система формирует файл ответа, причем:<br>Имя файла – имеет формат <Имя_входящего_файла>.ANS.ZIP;<br>Файл заархивирован в формате ZIP;<br>Внутри архивного файла-ответа содержатся файлы ответов на командные файлы содержавшиеся во входящем файле;<br>Имена файлов ответов имеют формат <Имя_командного_файла>.ANS  
 
#Команды файлов ответов:
 
#Команды файлов ответов:
Строка 53: Строка 56:
 
* В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду.  
 
* В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду.  
 
* Пример:
 
* Пример:
{| border="1"
+
<pre>
|:<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3
+
:<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>
|}
+
ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3
 +
</pre>
 +
 
  
 
===Описание команд===
 
===Описание команд===
 +
  
 
Команда :'''GETTABLEDATA'''
 
Команда :'''GETTABLEDATA'''
Строка 64: Строка 70:
  
 
Синтаксис:
 
Синтаксис:
 +
:GETTABLEDATA=<Имя_Таблицы>;CONDITION=<Условия>;COLUMNS=<Колонки>;
 
   
 
   
 
Команда пишется в одной строке. Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.  
 
Команда пишется в одной строке. Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.  
 +
 
{| border="1"
 
{| border="1"
 
!Имя таблицы
 
!Имя таблицы
Строка 74: Строка 82:
 
|-
 
|-
 
|Колонки
 
|Колонки
|-колонки из таблицы, так же могут использоваться функции (алиас колонки при этом - обязателен)<br>
+
|колонки из таблицы, так же могут использоваться функции (алиас колонки при этом - обязателен)<br>
 
 
 
Доступные функции:
 
Доступные функции:
 
<br>GetDriverClass(aClientID NUMBER, aOnDate DATE) RETURN NUMBER – возвращает идентификатор класса «бонус-малус», где:
 
<br>GetDriverClass(aClientID NUMBER, aOnDate DATE) RETURN NUMBER – возвращает идентификатор класса «бонус-малус», где:
 
<br>aClientID – идентификатор клиента ЕСБД;
 
<br>aClientID – идентификатор клиента ЕСБД;
 
<br>aOnDate - дата на которую необходимо получить класс;
 
<br>aOnDate - дата на которую необходимо получить класс;
 
 
<br>GetDriverClassText( aClientID NUMBER, aOnDate DATE) RETURN VARCHAR2 – возвращает название класса «бонус-малус», где:
 
<br>GetDriverClassText( aClientID NUMBER, aOnDate DATE) RETURN VARCHAR2 – возвращает название класса «бонус-малус», где:
 
<br>aClientID – идентификатор клиента ЕСБД;
 
<br>aClientID – идентификатор клиента ЕСБД;
 
<br>aOnDate - дата на которую необходимо получить класс;
 
<br>aOnDate - дата на которую необходимо получить класс;
 
+
|}
  
 
Пример:
 
Пример:
  
:GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5;COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS
+
<pre>
 +
:GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5;
 +
COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS
 +
</pre>
  
  
Строка 97: Строка 106:
 
Синтаксис:
 
Синтаксис:
  
:TABLE = <Имя_таблицы><br>
+
<pre>
<br>
+
:TABLE = <Имя_таблицы>
 
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
 
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
<br>
 
 
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
 
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
<br>
 
 
 
<br>
 
 
:CHILDTABLE=<Имя_дочерней_таблицы>
 
:CHILDTABLE=<Имя_дочерней_таблицы>
<br>
 
 
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
 
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
<br>
 
 
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
 
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
 +
</pre>
 +
 +
Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.
 +
{| border="1"
 +
!Имя таблицы
 +
!Имя таблицы, в которую производится вставка/редактирование/удаление
 +
|-
 +
|Поле1, Поле2, Поле3
 +
|Имена полей, разделенные символом табуляции.<br>
 +
Существует так же служебное поле Sys_Is_Deleted_Row – типа логическое –
 +
При значении True – данная запись будет удалена из таблицы.
 +
|-
 +
|Значение1, Значение2, Значение3
 +
|Перечень значений строки. При  удалении записи необходимо указать только значение поля ключа таблицы и заполнить значение поля Sys_Is_Deleted_Row в True
 +
|-
 +
|:CHILDTABLE=
 +
|Необязательный блок CHILDTABLE, по структуре совпадает с блоком :TABLE и обеспечивает сохранение дочерней таблицы в одной транзакции с родительской, например:<br>:TABLE=POLICIES<br>…<br>:CHILDTABLE=POLICIES_TF<br>
 +
…<br>:CHILDTABLE=DRIVERS
 +
|}
 +
 +
'''''(!)Все изменения проводимые командой :TABLE проводятся одной транзакцией, включая блок :CHILDTABLE. Для разделения транзакций, разбивайте блок :TABLE на несколько частей. Для вставки используйте отрицательные значения ключей.'''''
 +
 +
 +
Команда: '''CHANGEID'''
 +
 +
Назначение: Команда используется в ответе сервера приложений ЕСБД и предназначена для возврата идентификаторов записей ЕСБД на команду вставки.
 +
 +
Синтаксис:
 +
<pre>
 +
: CHANGEID
 +
TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID
 +
Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа
 +
 +
</pre>
 +
{| border="1"
 +
|TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID
 +
|Заголовок структуры таблицы смены ключей
 +
|-
 +
|Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа
 +
|Имя таблицы, старое значение ключа, новое значение ключа
 +
|}
 +
 +
 +
Команда: '''ERROR'''
 +
 +
Назначение: Используется в файлах-ответах для указания имеющейся ошибки при обработки принимаемых файлов
 +
 +
Синтаксис:
 +
:ERROR=ROW=<Номер строки>;ERRORTEXT=<Тект ошибки>
 +
 +
{| border="1"
 +
|Номер строки
 +
|Номер строки, в которой произошла ошибка. Для табличного блока :TABLE означает номер строки, в которой непосредственно находилась команда :TABLE.<br>Нумерация строк начинается с нуля 0
 +
|-
 +
|Текст ошибки
 +
|Текст ошибки.
 +
|}

Текущая версия от 10:50, 31 июля 2008

Описание структуры и команд входящего файла

  1. Все входящие файлы архивируется в формате ZIP;
  2. Файлы должны иметь расширение ZIP;
  3. Имена файлов могут быть любыми на усмотрение страховой компании, но они не должны повторяться;
  4. Внутри входящего архивного файла могут быть несколько входящих командных файлов;
  5. Все даты передаются в ЕСБД в формате ДД.ММ.ГГГГ, разделитель целой и дробной части – «.»(точка), разделитель разрядов – отсутствует. Логические поля имеют варианты значения True, False
  6. Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД.
  7. Команды входящих командных файлов
Имя команды Назначение
:GETTABLEDATA= запрос данных
:TABLE= передача данных для вставки/изменения/удаления записи из таблицы
:CHILDTABLE= обеспечивает единую транзакцию. Записи будут сохранены, только в случае если была сохранена запись из команды :TABLE
:DYNAMICCHILDTABLE= Аналогична команде :CHILDTABLE, только связь с :TABLE – динамическая


Описание структуры и команд файла-ответа

  1. На каждый непустой входящий файл, система формирует файл ответа, причем:
    Имя файла – имеет формат <Имя_входящего_файла>.ANS.ZIP;
    Файл заархивирован в формате ZIP;
    Внутри архивного файла-ответа содержатся файлы ответов на командные файлы содержавшиеся во входящем файле;
    Имена файлов ответов имеют формат <Имя_командного_файла>.ANS
  2. Команды файлов ответов:
Имя команды Назначение
:CRCERROR Ошибка контрольной суммы
:ERROR= Ошибка с описанием и указанием номера строки
:TABLE= Записи таблицы, сформированные по запросу :GETTABLEDATA
:CHANGEID Список выданных ключей

Принцип формирования файла

  1. Каждая команда начинается с новой строки без пробелов;
  2. Все команды, кроме табличных команд, пишутся в одну строку;
  3. Все ключевые поля (идентификаторы) имеют тип «число» размером 11 байт. Для обозначения вставки используется ключ меньше нуля. В ответе будет возвращено, какой отрицательный ключ был заменен реальным ключом ЕСБД.
  4. Табличные данные передаются в виде:
  • В строках, следующих за командой, перечисляется список имен полей, разделенных символом табуляции. После строки с именами полей указываются строки с данными, поля которых также разделяются символом табуляции. Конец блока определяется концом файла, либо строкой, содержащей следующую команду.
  • Пример:
:<ИМЯ_КОМАНДЫ><br>ПОЛЕ1<символ_табуляции>ПОЛЕ2<символ_табуляции>ПОЛЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>
ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3<br>ЗНАЧЕНИЕ1<символ_табуляции>ЗНАЧЕНИЕ2<символ_табуляции>ЗНАЧЕНИЕ3


Описание команд

Команда :GETTABLEDATA

Назначение: Запрос данных из ЕСБД

Синтаксис:

:GETTABLEDATA=<Имя_Таблицы>;CONDITION=<Условия>;COLUMNS=<Колонки>;

Команда пишется в одной строке. Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.

Имя таблицы Имя таблицы, из которой осуществляется выборка
Условия SQL условия, ограничивающие записи (алиас таблицы выборки, для подзапросов - tab99).
При работе с полями типа «Дата» используется преобразование TO_DATE(’01.01.2007’,’dd.mm.yyyy’)
Колонки колонки из таблицы, так же могут использоваться функции (алиас колонки при этом - обязателен)

Доступные функции:
GetDriverClass(aClientID NUMBER, aOnDate DATE) RETURN NUMBER – возвращает идентификатор класса «бонус-малус», где:
aClientID – идентификатор клиента ЕСБД;
aOnDate - дата на которую необходимо получить класс;
GetDriverClassText( aClientID NUMBER, aOnDate DATE) RETURN VARCHAR2 – возвращает название класса «бонус-малус», где:
aClientID – идентификатор клиента ЕСБД;
aOnDate - дата на которую необходимо получить класс;

Пример:

:GETTABLEDATA=CLIENTS;CONDITION=GetDriverClass(tab99.Client_ID,SYSDATE)<>5;
COLUMNS=CLIENT_ID,GetDriverClass(tab99.Client_ID,SYSDATE) AS CLASS


Команда: TABLE

Назначение: Вставка/редактирование/удаление данных. Данная команда используется во входящем файле – в качестве команды вставки/изменения данных таблицы, либо в файле ответа – в качестве результата команды.

Синтаксис:

:TABLE = <Имя_таблицы>
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3
…
:CHILDTABLE=<Имя_дочерней_таблицы>
Поле1<символ_табуляции>Поле2<символ_табуляции>Поле3
Значение1<символ_табуляции>Значение2<символ_табуляции>Значение3

Конец командного блока определяется концом файла, либо строкой, содержащей следующую команду.

Имя таблицы Имя таблицы, в которую производится вставка/редактирование/удаление
Поле1, Поле2, Поле3 Имена полей, разделенные символом табуляции.

Существует так же служебное поле Sys_Is_Deleted_Row – типа логическое – При значении True – данная запись будет удалена из таблицы.

Значение1, Значение2, Значение3 Перечень значений строки. При удалении записи необходимо указать только значение поля ключа таблицы и заполнить значение поля Sys_Is_Deleted_Row в True
:CHILDTABLE= Необязательный блок CHILDTABLE, по структуре совпадает с блоком :TABLE и обеспечивает сохранение дочерней таблицы в одной транзакции с родительской, например:
:TABLE=POLICIES

:CHILDTABLE=POLICIES_TF


:CHILDTABLE=DRIVERS

(!)Все изменения проводимые командой :TABLE проводятся одной транзакцией, включая блок :CHILDTABLE. Для разделения транзакций, разбивайте блок :TABLE на несколько частей. Для вставки используйте отрицательные значения ключей.


Команда: CHANGEID

Назначение: Команда используется в ответе сервера приложений ЕСБД и предназначена для возврата идентификаторов записей ЕСБД на команду вставки.

Синтаксис:

: CHANGEID
TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID
Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа
…
TABLE_NAME<символ_табуляции>OLD_ID<символ_табуляции>NEW_ID Заголовок структуры таблицы смены ключей
Имя_таблицы1><символ_табуляции>Старое_значение_ключа<символ_табуляции>Новое_значение_ключа Имя таблицы, старое значение ключа, новое значение ключа


Команда: ERROR

Назначение: Используется в файлах-ответах для указания имеющейся ошибки при обработки принимаемых файлов

Синтаксис:

:ERROR=ROW=<Номер строки>;ERRORTEXT=<Тект ошибки>
Номер строки Номер строки, в которой произошла ошибка. Для табличного блока :TABLE означает номер строки, в которой непосредственно находилась команда :TABLE.
Нумерация строк начинается с нуля 0
Текст ошибки Текст ошибки.