Тема 3. Интеграционные возможности ПП «Парус-Предприятие 8»

advertisement
Тема 3.
Интеграционные возможности
ПП «Парус-Предприятие 8»
Кошкин Алексей Антонович, Руководитель проектов
«Центра Информационных Технологий и Консалтинга
Парус»
koshkin@parus.ru
Тема 3. Интеграционные возможности
Типовые задачи интеграции
• Переход с другого приложения на Парус –
полный перенос данных
• Выгрузка данных для различных систем из
Паруса
• Разработка конвертера для периодического
переноса данных в Парус
• Организация связи с другой системой для работы
с ее данными из Паруса по запросу
Тема 3. Интеграционные возможности
Общие проблемы интеграции
• Выбор метода реализации (быстрый в разработке,
гибкий, производительный, легкий в поддержке)
• Формат передачи данных
• Сопоставление данных с уже имеющимися
• Удаление дублей и очистка данных
• Преобразование данных (кодировка, формат файлов,
размерность, тип данных, логические преобразования)
Тема 3. Интеграционные возможности
Средства интеграции двух уровней
Средства Oracle
Средства Клиента
позволяют
взаимодействовать c:
позволяют
взаимодействовать с:
Парус 8
WEB
http/smtp
Другие БД
(ADO, COM)
Клиент
Win-приложения
(COM, ActiveX)
Другие БД
Сервер
Файлы
Файлы
Тема 3. Интеграционные возможности
Средства интеграции Oracle
web-сервисы
почтовые сервера
xml-файлы
xsl - трансформация
валидация по схеме
xml  таблицы
другие БД Oracle
другие “не-oracle” СУБД
ODBC-источники
.txt с разделителем
.txt произв. структуры
utl_http
utl_smtp
Парус 8
dbms_xmldom
dbms_xmlstore
xmlType
Парус-Клиент
Destributed
Database
( DBLink, HS )
СУБД Oracle
utl_file
• возможна авто-инициация (job)
• файл обмена на сервере
Тема 3. Интеграционные возможности
Средства интеграции на клиенте
Репликация
Синхронизация БД Парус
Экспорт/импорт разделов
Парус 8
Парус-Клиент
«Стандартный»
Экспорт/иморт
DBF
Экспорт/импорт
в файл
СУБД Oracle
• инициация с клиента
• файл обмена на клиенте
п.процедуры с
blob/clob
Пользовательские
приложения
+ ActiveX
dbf-файлы в формате Парус
8.5.4.0
03/2010
8.5.4.0
02/2008
- любые текстовые файлы
- xml
(для стандартных
разделов)
Широкие возможности !
Тема 4. Интеграция с помощью DBLink
Особенности Репликации Парус
•
•
•
•
•
•
•
Отдельный сервис в лицензии
Время на первоначальную настройку
Перенастройка в случае обновления Парус
Поддерживает XML и PRF
Проверка и трансформация XML на клиенте
Сложный контроль ошибок
Ряд ограничений
• СИС_Репликация.pdf
Далее…
Типовые задачи обмена данными:
• связь с другими БД с помощью Database link
• обмен в формате DBF
• обмен в формате XML/TXT
Тема 4.
Интеграция с системами
на основе СУБД Oracle
Тема 4. Интеграция с помощью DBLink
Для интеграции систем на Oracle часто
используется Database link (DBLink)
•
•
•
Понятие DBLink и распределенных БД
Для чего использовать DBLink
Пример создания и использования DBLink
Тема 4. Интеграция с помощью DBLink
Распределенная БД
DBLink
к
yyy
Heterogenous services)
DBLink
к
ххх
Данные о
новом
сотруднике
DBLink
к
Парусу
Тема 4. Интеграция с помощью DBLink
Для чего нужен DBLink?
•
•
•
Доступ к данным в режиме реального
времени
Пользователям не нужно регистрироваться
и выдавать права во всех системах
Одна технология для любых источников
(Heterogonous services)
Database link (связь базы данных) –
односторонний указатель от сервера БД Oracle к другому
серверу БД (не обязательно Oracle).
Тема 4. Интеграция с помощью DBLink
Создание DBLink
1.
2.
3.
4.
Конфигурация Oracle Net Services на сервере БД
Создание DBLink
create [public] database link TESTLINK connect to
<…> identified by <…> using <…>;
Работа
select * from employees@TESTLINK
Создание синонимов
Тема 4. Интеграция с помощью DBLink
Ограничения DBlink
•
•
Не все типы данных подлежат передаче
Не все операции SQL поддерживаются (grant,
analyze, describe, constraints)
Для гетерогенных: DDL, связывание таблиц в запросе,
специфические Oracle SQL конструкции
•
Производительность зависит от канала и
сторонней системы
Database link (связь базы данных) –
односторонний указатель от сервера БД Oracle к другому
серверу БД (не обязательно Oracle).
Тема 5.
Интеграция с системами,
поддерживающими обмен в
формате DBF
Тема 5. Обмен данными в формате DBF
Средства обмена данными в формате DBF:
•
•
•
•
Экспорт/Импорт Парус
Пользовательские приложения
Разбор DBF на стороне сервера
DBLink в связке с Heterogonous services (HS)
Тема 5. Обмен данными в формате DBF
DBF 1/9
«Стандартный» экспорт/импорт Парус в DBF
+/- Для каждого раздела Парус своя структура
файла
+/- Импорт построчно с помощью стандартных
серверных процедур
+ Ведется журнал ошибок
+ Подключение Парус-Конвертера для
предварительной обработки данных
- Не для всех разделов
Тема 5. Обмен данными в формате DBF
DBF 2/9
Пользовательские приложения и DBF
•
•
•
Любая структура DBF-файла
Работа с DBF происходит на клиенте
Использование ADO или COM-серверов
Типовой алгоритм загрузки:
Типовой алгоритм выгрузки:
1. Выдать диалог для выбора
каталога
2. Загрузить файл во временную
таблицу
3. Импортировать данные с
помощью
пользовательских процедур
1. Создать view для подготовки
данных
2. Выдать диалог для выбора
каталога
3. Выгрузить файл
Тема 5. Обмен данными в формате DBF
DBF 3/9
Загрузка из DBF с помощью MS Access
var oApp = new ActiveXObject("Access.Application");
oApp.NewCurrentDatabase(sPath+sMdbFileName);
var oDB = oApp.CurrentDb();
// подключение внешней таблицы к Access базе
var tLinked = oDB.CreateTableDef("DBFHOUR");
tLinked.Connect = "dBase IV;DATABASE="+sPath; // sPath = c:\temp
oDB.TableDefs.Append(tLinked);
// … то же самое повторяем для таблицы DBFDAY
var qdfNew = oDB.CreateQueryDef("qHOURDAY",
"select DBFHOUR.RN, RN_DAY, WORKEDHOUR, HOURSTYPE, FLAG,
WORKDATE, RN_CLN, DAYSTYPE from DBFHOUR, DBFDAY where
DBFHOUR.RN_DAY=DBFDAY.RN");
var oRs = qdfNew.OpenRecordset();
oRs.MoveFirst();
StoredProc.StoredProcName="UDO_P_DBF_IMPORT";
while (!oRs.EOF) { …
Тема 5. Обмен данными в формате DBF
DBF 4/9
Выгрузка в DBF с помощью ADO
var conn=new ActiveXObject("ADODB.Connection");
connStr="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source='"+dbFolder+"';Extended Properties=dBASE III;User
ID=Admin;Password=";
conn.Open(connStr);
var sqlOra="select numb, str, dat from udo_t_dbfdata";
Query.SQL.Text=sqlOra;
Query.Open();
while(!Query.EOF) {
sqlDBF="insert into "+tblFile+" (numb, str, dat) values
("+Query.FieldByName("numb").AsString()+",
'"+Query.FieldByName("str").Value+"', "+strDate+")";
conn.Execute(sqlDBF);
Query.Next();
}
conn.Close();
Тема 5. Обмен данными в формате DBF
DBF 5/9
DBLink + Heterogonous services (HS)
•
•
•
•
Работа с DBF происходит на сервере
Создается постоянная связь DBLink
Необходима настройка серверной части
Возможен конфликт если не-Oracle система
использует монопольный доступ к файлам
•
Для не-windows платформ могут быть проблемы с
наличием драйверов
Тема 5. Обмен данными в формате DBF
DBF 6/9
1.
DBLink + Heterogonous services (HS)
Проверка установлен ли HS в БД
select view_name from dba_views
where owner='SYS' and view_name='HS_FDS_CLASS';
Шаг 3.
2.
Настройка источника данных ODBC на сервере
3.
Создание файла инициализации HS
%ORACLE_HOME%\HS\admin\initHSDBF.ora
Шаг 2.
Тема 5. Обмен данными в формате DBF
DBF 7/9
4.
DBLink + Heterogonous services (HS)
Настройка Oracle Net Services (tnsnames и listener)
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(PROGRAM = hsodbc)
(ORACLE_HOME = d:\oracle\ora92)
(SID_NAME = HSDBF)
…
5.
tnsnames.ora
HSDBF =
(DESCRIPTION =
(ADDRESS_LIST = … )
(CONNECT_DATA =(SID = HSDBF))
(HS = OK)
…
Создание DBLink
create public database link HSDBF
connect to dummy identified by "dummy" using 'HSDBF';
Тема 5. Обмен данными в формате DBF
DBF 8/9
6.
DBLink + Heterogonous services (HS)
Проверка связи
select table_name, column_name
from dba_tab_columns@HSDBF;
TABLE_NAME
-----------------------------employee
employee
7.
COLUMN_NAME
-----------------------workhour
workdate
Работа
select * from employee@HSDBF;
commit;
update ...
commit;
ALTER SESSION CLOSE DATABASE LINK HSDBF;
Тема 5. Обмен данными в формате DBF
DBF 9/9
DBLink + Heterogonous services (HS)
Преимущества:
•
•
•
•
Работа в реальном времени, моментальное
отображение изменений
Поддержка всех sql-конструкций, которые
предоставляет не-Oracle система
Нет дублирования данных
Не тратится время на
загрузку/выгрузку/репликацию
Тема 6.
Интеграция с информационными системами,
поддерживающими форматы XML и TXT
Тема 6. Обмен данными в формате TXT
TXT
Ключевые особенности
• Нет типов данных как таковых: необходимо
четко определить формат даты и разделитель
дробной части
• Для файлов с разделителем: символразделитель и символ-ограничитель полей
• Для структурированных: начало и конец
секции
• Кодировка может быть различной
Тема 6. Обмен данными в формате TXT
TXT
Оптимальное решение для импорта
Загрузка файла в CLOB 
Разбор на сервере 
Размещение во временных таблицах 
Обработка (процедура) 
Импорт в разделы Парус
Преимущества
• Значительно быстрее по сравнению с разбором на клиенте и
вставке построчно
• Более быстрый разбор + все функции Oracle и регулярные
выражения
• Возможно создание индексов во временных таблицах
Тема 6. Обмен данными в формате TXT
TXT
Пример разбора текстового файла
nROW
integer;
rROW
UDO_IMP_BUFF%rowtype;
Loop
begin
sRESULT := F_GET_NEXT_STRING(cCLOB);
exit when sRESULT is null;
nROW := nROW + 1;
rROW.BATCH_ID := to_number(
replace(strtok(sRESULT,sDELIMETER,1),',','.')
,'99999999999D999’
,'NLS_NUMERIC_CHARACTERS = ''.,''');
rROW.ORDER_NR
:= replace(strtok(sRESULT,sDELIMETER,2),'-');
rROW.PRODUCT_NR := strtok(sRESULT,sDELIMETER,3);
Тема 6. Обмен данными в формате TXT
TXT
Оптимальное решение для выгрузки
Процедура на PLSQL 
Вставка CLOB в спец-таблицу FILE_BUFFER 
«Экспорт в файл»
Преимущества
• Логика обработки на сервере
• Функция Паруса «Экспорт в файл» доступна во всех разделах
• Доступны пользовательские процедуры с CLOB-параметрами
Тема 5. Обмен данными в формате TXT
TXT
create directory OBMEN as 'c:\TEMP';
UTL_FILE
•
•
•
•
v_file utl_file.file_type;
v_file := utl_file.fopen(
‘c:\temp', 'parus.txt', 'w');
файл должен
utl_file.putf(v_file,sTEXT);
располагаться
utl_file.fclose(v_file);
на сервере
возможна автоматическая выгрузка по
расписанию
рабочая папка указывается в параметрах init.ora либо в oracle
directory
работа с текстовыми файлами происходит построчно
Тема 6. Обмен данными в формате TXT
XML
Типовые варианты работы
DBMS_XMLDOM
1. Загрузка в CLOB/varchar2 
Разбор с помощью XMLDOM
Обработка и импорт в разделы Паруса
DOM –
Document
object model
Тема 6. Обмен данными в формате XML
XML
Типовые варианты работы
-- Create table
create table UDO_TMP_XML
( 2. Загрузка в CLOB/XMLType 
inxml xmltype,
XSL-преобразвание
в канонический вид 
outxml
xmltype,
inxsl xmltype,
Вставка во временные таблицы 
rn
number(17)
Обработка и импорт в разделы
)
Паруса
update UDO_TMP_XML t
set t.outxml = t.inxml.transform(t.inxsl);
select t.outxml.getClobVal() into cCLOB
from UDO_TMP_XML where …;
nCONTEXT := DBMS_XMLSTORE.newContext('UDO_TMP_ORDERS');
nRESULT := DBMS_XMLSTORE.insertXML(nCONTEXT, cCLOB);
Тема 6. Обмен данными в формате XML
XML
Типовые варианты работы
3. Загрузка в CLOB/XMLType 
Выборка данных с помощью XMLType 
---------------------Обработка и импорт в разделы Паруса
ID_0000000005
ID_0000000003
select EXTRACTVALUE(t.inxml, '/Nomenclator/Row/ID')
from UDO_TMP_XML t
select extractvalue(
t.inxml
,'//child::node()[position()=1]/Row[position()=1]/ID'
)
from UDO_TMP_XML t
Тема 6. Обмен данными в формате XML
Пример
Задача:
Наладить автоматический импорт данных в
Парус по расписанию из DBF и XML
Решение:
DBF
UTL_FILE
UDO_PKG
XML2
UDO_PRC
канонический
XML
XSL-шаблон
UDO_PRC
Тема 6. Обмен данными в формате TXT
MAIL
Интеграция с почтовыми серверами
• DBMS_SMTP
• Сервер уведомлений (для win-платформы)
РУК_Сервер_уведомлений.pdf
Тема 5. Обмен данными в формате DBF
Тенденция:
Хранение и обработка данных на сервере БД
Источники информации
• Oracle Database Administrator's Guide 10g Release 2 (10.2) Part Number B14231-02
• Oracle® Database Heterogeneous Connectivity Administrator's Guide
10g Release 2 (10.2) Part Number B14232-01
• ADO Object Model http://msdn.microsoft.com/en-us/library/ms675944(v=VS.85).aspx
Download