Skip to main content

ФИЗИЧЕСКАЯ Организация управления БД АИС

ФИЗИЧЕСКАЯ Организация управления БД АИС

Все данные в АИС хранятся в СУБД ORCLE. Для хранения данных используется кодировка UNICODE (UTF-8), стандарт кодирования символов, позволяющий представить знаки практически всех письменных языков. Целостность данных и обработка статусов реализована на технологии CARABI. В СУБД используются встроенные пакетные функции и триггеры для чтения и обработки данных.

Структура ИО

Физически данные по ИО хранятся в группе таблиц и представляют собой объект БД с возможностями создания, модификации и удаления.

Представление структуры ИО в формате XML

<!—Описание ИО>
<FORMAL DOCKIND_NAME="< Латинское наименование ИО>" DOCKIND_DESCR="<Описание ИО>">
<!—Описание статуса ИО>
<EVENT VALUE="<Наименование статуса>" ACCESS="0" NAME=" <Латинское наименование статуса>">

   <!—Описание атрибута ИО для данного статуса>
      <PROP DOCPROP_DESCR="<Латинское наименование атрибута>" DOCPROP_NOTNULL="<Обязательность заполнения>" DOCPROP_VISIBLE="<Отображение в документах>" DOCPROP_REPEAT="<Множественность атрибута>" DOCPROP_UNIQUE="<Входит в состав ключа>" DOCPROP_RULE="<Правило связи для ссылочного атрибута>">
 <!— Доступ к атрибуту для данного статуса по роли>
        <PROPPERMEVENT PERMISSION="<Код уровня доступа>" ROLEVALUE="<Описание роли пользователя>” ROLEACCESS="0" ROLENAME="<Латинское наименование роль>"/>
…
<!— Возможные переходы из данного статуса в другой статус для конкретной роли>
      <TRACE CANUSER="<Возможен переход вручную>" PERMISSION="<Код доступа к полю для текущего статуса>" ROLEACCESS="<Возможен переход>" ROLENAME="Administrator" EVENTNAME="<Латинское наименование статуса>"/>
     …
</EVENT>
…
   <!—Описание атрибута ИО для данного для всего ИО>

 <PROPERTY SHOW_ORDER="<Порядок в документе>" DOC_FORMAT="<Тип данных>" DOCPROP_NAME="<Отображаемое описание поля>" DOCPROP_DESCR="<Латинское наименование атрибута>" DOCPROP_KIND="<Подтип данных>" DOCPROP_VISIBLE="<Отображать в документах>" DOCPROP_UNIQUE="<Входит в состав ключа>" DOCPROP_NOTNULL="<Обязательное>" DOCPROP_OBJECT="<Наименование ИО для ссылок>" DOCPROP_REPEAT="<Кратность поля>" DOCPROP_MULTI="<Множественность поля>" DOCPROP_FPATH="<Путь для отображаемых полей>" DOCPROP_TREE_KIND="Иерархичность значение в этом поле"/>
    …
      </FORMAL>
    </REFERENCE>
FORMAL – описание конкретного документа
PROPERTY – поле документа и его значение
Параметры тега FORMAL
DOCKIND_NAME		Наименование справочника, системное
DOCKIND_DESCR		Наименование справочника на русском языке
Параметры тега PROPERTY (поле документа, реквизит)
SHOW_ORDER			Порядок - порядковый номер в структуре документа
DOC_FORMAT			0 (определяет формат поля и шаблон хранения данных
DOCPROP_NAME		Наименование поля на русском языке
DOCPROP_DESCR		Системное наименование поля
DOCPROP_KIND		Тип поля
DOCPROP_VISIBLE		Видимость, (1 и более - отображается; 0 – нет)
DOCPROP_UNIQUE		Если 1, то является ключевым при идентификации документов
DOCPROP_NOTNULL		Если 1, то заполнение поля обязательно
DOCPROP_OBJECT	Подтип поля (Только если DOCPROP_KIND=1 - Простое поле) - документ Экспорт XML
DOCPROP_REPEAT	0 (фиксированное значение), для диапазонов дат и чисел указывает на номер значения в диапазоне
DOCPROP_MULTI		0 – одиночное поле, более 1 множественное
DOCPROP_SQL			0 (другой шаблон, для ссылочных полей принцип связи, 1)
DOCPROP_TREE_KIND		0, 1 – Признак наличия иерархии
DOCPROP_RULE_CHILD		0 (каскадные операции для ссылочных полей)
DOCPROP_RULE_PARENT	(каскадные операции для ссылочных полей)

Если есть DOCPROP_KIND=9 (ссылка), то может быть задано подчиненно описание документа, с использованием тега FORMAL, вложенного в PROPERTY <FORMAL DOCKIND_NAME=<Связанный объект> DOCKIND_DESCR=<Наименование связанного объекта> XML_ID="0"/>

Представление документа ИО в формате XML

<!—Документ ИО>
<FORMAL DOCKIND_NAME="<Латинское наименование ИО>" DOCEVENTKIND_NAME="<Статус ИО>" >
   <!—Значение простого атрибута ИО>
   <PROPERTY DOCPROP_NAME="<Латинское наименование атрибута>">
   <VALUE DOC_PROP_VALUE="<Значение атрибута>" />
   </PROPERTY>
…
   <!—Значение ссылочного атрибута ИО>
    <REFERENCE DOCPROP_NAME="<Латинское наименование атрибута>">
      <FORMAL DOCKIND_NAME="<Латинское наименование ИО>" DOCEVENTKIND_NAME="<Статус ИО>">
        <PROPERTY DOCPROP_NAME="<Латинское наименование атрибута>">
          <VALUE DOC_PROP_VALUE="<Значение атрибута>" />
        </PROPERTY>
      </FORMAL>
    </REFERENCE>
…
      </FORMAL>
    </REFERENCE>

Изменение атрибутов ИО

Изменение атрибутов ИО производится во время работы АИС после согласования изменения БП. Остановка системы не требуется. Если в этот момент производится модификация документа пользователя, использующего данный ИО, то АИС извещает об этом и просит повторить операцию. Действия по добавлению статусов описаны в руководстве разработчика CARABI SDK.

Добавление новых статусов

Добавление новых статусов производится во время работы АИС после согласования изменения БП. Остановка системы не требуется. Действия по добавлению статусов описаны в руководстве разработчика CARABI SDK.

***Поиск ИО *** Поиск ИО производится 2 способами:

  • При помощи контекстного поиска документа заданного типа по наименованию документа.
  • При помощи формализации запроса к системе в формате XML.

Для всех поисковых полей СУБД построены специальные встроенные ключи. Поиск в формате XML выглядит следующим образом:

<!—Запрос на выборку списка ИО>
<query>
 <formal namevar="APPLY_BTI">
  <operation name="and">
   <operation name="and">
    <reference referencing="Тип поиска связанных элементов " condition="" count="" dockind_id="<Код ссылочного ИО>" leftp="(" rightp=")">
     <operation name="<Тип объединения>">
      <!—-Значение подчиненного уровня>
      <property type="<Тип данных введенного критерия>" condition="<условие>" doc_prop_value="<Критерий>" namevar="<Латинское наименование атрибута>"/>
…   
      <!—Статус подчиненного уровня>
      <status namevar="<Латинское наименование статуса>"/>
…
     </operation>
    </reference>
<!—Значение коревого уровня>
    <property type="<Тип данных введенного критерия>" condition="<условие>" doc_prop_value="<Критерий>" namevar="<Латинское наименование атрибута>"/>
   </operation>
   <operation name = "<Тип объединения>">
    <!—Статус коревого уровня>
    <status doceventkind_id = "3857" namevar="<Латинское наименование статуса>"/>
…
   </operation>
  </operation>
 </formal>
</query>

OPERATION – Правило объединения критериев – может принимать значения

  • И
  • ИЛИ

CONDITION – Условие выборки - может принимать значение – Равно, Содержит, Начинается с, Не содержит, Значение не указано, Значение указано, Номер документа равен, Больше, Больше или равно, Меньше, Меньше или равно, Не равно

Организация запросов по системе

Для формирования запросов и визуализации результатов выборки данных для отчетов и статистик в АИС организован ИО Запрос

Название
Тип данных
Системное наименование
Номер
Счетчик
NUM
Наименование
Текстовый
NAME
Корневой тип
Выборка из таблицы "VOCABS"
ROOT_TYPE
Список типов для доступа
Выборка из таблицы "VOCABS" [множ.]
TYPE_LIST
Вариант запроса
Значение из словаря "QueryType"
QUERY_TYPE
Текст запроса
Текстовый
SQLTEXT
Параметры для отображения
Ссылочный [множ.]
VARVAR
Группа
Значение из словаря "SystemWorks"
GROUP
Доступ пользователей
Выборка из таблицы "CLIENTS_TREE" [множ.]
QUERY-ACCESS
Доступ ролей
Выборка из таблицы "VOCABS" [множ.]
ACCESS_ROLE
Шаблон отчета
Медиа-данные
REPORT_XLS
Сгруппировать множ. значения
Да/нет
ISGROUP
Внешний вызов
Да/нет
EXTERNAL
Использовать JOB для обработки запроса
Да/нет
ISJOB
Програма для внешнего вызова
Текстовый
EXE
Параметр внешнего вызова
Текстовый
EXTERNAL_PARAMS
Выдавать системные поля
Да/нет
IS_SYS_NAME
Режим групповой(нет - одиночный - передача ID документа)
Да/нет
QGROUP
Параметры для запроса
Ссылочный [множ.]
DOCQUERY-REF-REPORTS_PARAMS
Режим отображения
Значение из словаря "QUERY_TYPE"
DISPLAY
Структура параметров
Выборка из таблицы "VOCABS"
STRUC_PARAMS
Настройка отображения
Ссылочный [множ.]
DOCQUERY-REF-DOCQUERY_FIELD

Текст запроса должен выглядеть как комбинация поиска и перечня полей для выдачи с описанием названия выдаваемого поля:

<!—Простые поля
<select docprop_id="<Код атрибута>" display="" as="<Отображение поля в запросе>"/>
…
<!—Вычисляемые поля>
<calc pars_id="<Функция расчетов>" as="<Отображение поля в запросе>"/>

Шаблон запроса служит для вывода данных в другие подсистемы отображения или во встроенную система отчетов FASTREPORT.

Запрос в формате SQL

Возможно прямое обращение к БД при помощи SQL запроса. Правило формирование запроса см. в руководстве разработчика CARABI SDK.

Импорт и экспорт во внешние системы

Взаимодействие с другими информационными системами осуществляется с использованием обмена XML-данными. Для загрузки и выгрузки XML используется набор встроенных средств. Для выгрузки данных необходимо настроить выгрузку через интерфейс «Выгрузка данных». Для загрузки данных необходимо сначала подготовить XML-файл в требуемом формате, а затем запустить процедуру загрузки данных через интерфейс «Загрузка данных». Без использования пользовательского интерфейса, загрузка и выгрузка данных может выполняться посредством встроенных средств, которые позволяют: выполнять чтение данных из внешних источников:

  • с файловой системы сервера;
  • с файловой системы клиента;
  • с FTP-ресурса;
  • с HTTP-сервера;
  • с использованием обращения к веб-сервису.

выполнять выгрузку данных из информационной системы:

  • на файловый сервер, доступный в сети;
  • на FTP-сервер;
  • передавать данные в интерактивном режиме на веб-сервис.

Пример описания структуры передачи данных в формате XML

<?xml version="1.0" encoding="windows-1251"?>
<LOAD>
  <FORMAL DOCKIND_NAME="BANK" DOCKIND_DESCR="Банк" XML_ID="19664">
    <PROPERTY SHOW_ORDER="1" XML_ID="6867" DOC_FORMAT="0" DOCPROP_NAME="БИК" 
     DOCPROP_DESCR="BIK" DOCPROP_KIND="1" DOCPROP_VISIBLE="1" 
     DOCPROP_UNIQUE="1" DOCPROP_NOTNULL="1" DOCPROP_OBJECT="4" 
     DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="0" DOCPROP_TREE_KIND="0">
    </PROPERTY>
    <PROPERTY SHOW_ORDER="2" XML_ID="10289" DOC_FORMAT="0" DOCPROP_NAME="Название филиала(отделения)" DOCPROP_DESCR="NAME" DOCPROP_KIND="1" DOCPROP_VISIBLE="1" DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="1" DOCPROP_OBJECT="4" DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="0" DOCPROP_TREE_KIND="0">
    </PROPERTY>
    <PROPERTY SHOW_ORDER="3" XML_ID="12404" DOC_FORMAT="0" DOCPROP_NAME="Отделение(в ПП)" DOCPROP_DESCR="NAME_PP" DOCPROP_KIND="1" DOCPROP_VISIBLE="1" DOCPROP_UNIQUE="1" DOCPROP_NOTNULL="0" DOCPROP_OBJECT="4" DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="0" DOCPROP_TREE_KIND="0">
    </PROPERTY>
    <PROPERTY SHOW_ORDER="4" XML_ID="12405" DOC_FORMAT="0" DOCPROP_NAME="Город(нас. пункт)" DOCPROP_DESCR="CITY" DOCPROP_KIND="1" DOCPROP_VISIBLE="1" DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="1" DOCPROP_OBJECT="4" DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="0" DOCPROP_TREE_KIND="0">
    </PROPERTY>
    <PROPERTY SHOW_ORDER="5" XML_ID="6866" DOC_FORMAT="0" DOCPROP_NAME="Корр. счет" DOCPROP_DESCR="KOR_SCHET" DOCPROP_KIND="1" DOCPROP_VISIBLE="1" DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="1" DOCPROP_OBJECT="4" DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="0" DOCPROP_TREE_KIND="0"/>
    <PROPERTY SHOW_ORDER="6" XML_ID="10290" DOC_FORMAT="0" DOCPROP_NAME="Адрес" 
       DOCPROP_DESCR="BANK-REF-ADRESS" DOCPROP_KIND="9" DOCPROP_VISIBLE="1" 
      DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="0" DOCPROP_OBJECT="*" 
      DOCPROP_REPEAT="0" DOCPROP_MULTI="0" DOCPROP_SQL="1" 
      DOCPROP_RULE_CHILD="0" DOCPROP_RULE_PARENT="0" DOCPROP_TREE_KIND="0">
      <FORMAL DOCKIND_NAME="ADRESS" DOCKIND_DESCR="Адрес" XML_ID="19946"/>
    </PROPERTY>
    <PROPERTY SHOW_ORDER="8" XML_ID="6870" DOC_FORMAT="0" DOCPROP_NAME="Реквизиты" DOCPROP_DESCR="BANK-BREF-BANK_PROP" DOCPROP_KIND="12" DOCPROP_VISIBLE="1" DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="0" DOCPROP_OBJECT="BANK_PROP" DOCPROP_REPEAT="0" DOCPROP_MULTI="1" DOCPROP_RULE_CHILD="3" DOCPROP_RULE_PARENT="3" DOCPROP_TREE_KIND="0">
      <FORMAL DOCKIND_NAME="BANK_PROP" DOCKIND_DESCR="Банковские реквизиты" XML_ID="20073"/>
    </PROPERTY>
    <PROPERTY SHOW_ORDER="9" XML_ID="10294" DOC_FORMAT="0" DOCPROP_NAME="Банк" DOCPROP_DESCR="BANK-REF-MBANK" DOCPROP_KIND="9" DOCPROP_VISIBLE="0" DOCPROP_UNIQUE="0" DOCPROP_NOTNULL="0" DOCPROP_OBJECT="*" DOCPROP_REPEAT="0" DOCPROP_MULTI="1" DOCPROP_SQL="11" DOCPROP_RULE_CHILD="0" DOCPROP_RULE_PARENT="0" DEFAULT_VALUE="9" DOCPROP_TREE_KIND="0">
      <FORMAL DOCKIND_NAME="MBANK" DOCKIND_DESCR="БанкЮр" XML_ID="24943"/>
    </PROPERTY>
  </FORMAL>
</LOAD>

LOAD – корневой элемент, содержащий перечень документов для обмена данными.

Контроль прав доступа

Настройка прав доступа к ИО осуществляется при помощи редактора реквизитов CARABI. Настройка осуществляется по ролям пользователей.

Ограничение доступа к учетным ИО

Ограничение пользователей к спискам ИО осуществляется в CARABI при помощи специального объекта – ИО Доступ к данным Название

Тип данных
Системное наименование
Подразделение
Выборка из таблицы "CLIENTS_TREE" [множ.]
DEPARTMENTS
Роль
Выборка из таблицы "VOCABS" [множ.]
ROLES
Пользователи
Выборка из таблицы "CLIENTS_TREE" [множ.]
USERS
Информационный объект
Выборка из таблицы "VOCABS"
IOBJECT
Фильтр
Текстовый
XMLFILTER
Комментарий
Текстовый
COMMENT

В фильтре при помощи специального экрана прописывается запрос в формате XML, ограничивающий Подразделение(или роль, или конкретного пользователя).

Поддержка версий хранилища

В специальной таблице СУБД ORACLE C_LICENSE размещается информация о владельце БД, дата формирования, серийном номере и номере версии ПО Управляющим систему. Номер версии кодируется следующим образом

  • MAJOR.MINOR.RELEASE.BUILD
  • MAJOR и MINOR - определяет общий номер версии системы CARABI
  • RELEASE - установленный комплекс ПО для управления БД
  • BUILD – номер версии конкретного приложения АИС.

После тестирования разработчиками и установки нового ПП для управления бизнес - функциями, обеспечивающими работу комплекса, меняется номер BUILD. Таким образом, сохраняя предыдущий BUILD, поддерживаются версии АИС и обеспечивается возможность отката версии в случае непреднамеренных ошибок при разработке.