ФИЗИЧЕСКАЯ Организация управления БД АИС
ФИЗИЧЕСКАЯ Организация управления БД АИС
Все данные в АИС хранятся в СУБД 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, поддерживаются версии АИС и обеспечивается возможность отката версии в случае непреднамеренных ошибок при разработке.
No Comments