10._mochalnikov._semenov

реклама
«Центр Разработки и Внедрения
Террасофт Поволжье»
Интеграция с внешними системами
Содержание
Средства и инструменты интеграции
Протокол OData
Интеграция через Web service
PT 1C Connector
Quartz.NET
Средства и инструменты
интеграции
Цели интеграции
Единая база справочников
Bpm’online
Автоматический обмена данными между
системами
Синхронизация работы подразделений
компании
Средство
интеграции
Информация вводится один раз
1C
Средства интеграции
Средство
интеграции
Bpm’online
1C
БП bpm’online
Web service
1C
SQL
bpm’online
SQL 1C
OData
Com
Приложение
Дополнительные инструменты интеграции
.Net Managed Assemblies
Com
Dll
Промежуточные файлы
Подробнее об интеграции:
http://www.terrasoft.ua/software/bpmonline/integration
DEMO
Взаимодействие с bpm’online
с помощью dll-библиотек
DLL. Добавление dll файла в разделе в конфигураторе
DLL. Добавление Using директив
DLL. Создание бизнес-процесса и написание кода
DLL. Результат работы
Основные схемы интеграции. Мастер-система
Мастер-система – система,
изменения данных которой
являются
наиболее
приоритетными при интеграции
SQL
bpm’online
OData
БП bpm’online
SQL 1C
Приложение
SQL 1C
Web service
1C
Интеграция на основе SQL job
SQL
bpm’online
Достоинства
SQL 1C
Недостатки
• Быстрота
• On-site
• Безопасность
• 1C только на SQL БД
• Индивидуальные для
каждого проекта
хранимые процедуры
Интеграция на основе SQL job. Разработка
SQL
bpm’online
SQL 1C
Дополнительные поля в 1С для хранения id записи из bpm’online
Хранимые процедуры интеграции
SQL Job запускающий хранимые процедуры в соответствии с
расписанием
Интеграция через отдельное приложение
SQL 1C
OData
Приложение
Com 1C
Достоинства
• On-site и on-demand
• Файловая и SQL 1C
Недостатки
• Невозможна интеграция
по событию
• Скорость
Интеграция через отдельное приложение. Разработка
SQL 1C
OData
Приложение
Com 1C
Дополнительные поля в 1С для хранения id записи из bpm’online
либо в bpm’online для хранения кодов, номеров и дат 1С
Код
Регистрация приложения в Windows Scheduler
Протокол OData
Протокол OData
 Data Protocol (OData) — это открытый веб-протокол для запроса
и обновления данных
 Позволяет выполнять операции с ресурсами, используя в качестве
запросов HTTP-команды, и получать ответы в форматах Atom, JSON
или XML.
 Microsoft выпустила OData SDK, состоящий из библиотек
для .NET Framework, AJAX, PHP, Java, JavaScript, WebOS, и Objective-C.
OData. Поддерживаемые операции

Добавление/обновление/удаление объекта

Добавление/удаление связей между объектами

Получение коллекции объектов

Получение конкретного объекта

Получение отдельного поля / нескольких полей конкретного объекта

Получение N первых объектов коллекции

Возврат коллекции объектов, пропустив N объектов (с N+1 объекта)

Сортировка объектов
DEMO
Взаимодействие с bpm’online
по протоколу OData
OData. Генерация прокси-классов сервиса
OData. Работа через WCF-клиент

Получение
Пример
получения
коллекции
коллекции
контактов
контактов
явным запросом
неявным
через
запросом
LINQ–запрос:
через
через
объект
объект
контекста:
контекста:
public static void GetContactCollectionExample() {
// Объявление переменной адреса сервиса OData
Uri serverUri = new Uri("http://<имя_сервера>/0/ServiceModel/EntityDataService.svc/");
Определение
Uri запроса
к сервису,
который
возвращает коллекцию контактов.
// Создание
контекста
объекта
контекста
приложения
приложения
BPMonline.
BPMonline.
Uri context
contactUri
= new
Uri(serverUri, "ContactCollection");
var
= new
BPMonline(serverUri);
Создание имени
объекта
контекста
приложенияBPMonline.
BPMonline.
// Указание
и пароля
пользователя
var
context = new BPMonline(serverUri);
context.Credentials
= new NetworkCredential("BPMUserName", "BPMUserPassword");
//
имени и пароля пользователя BPMonline.
tryУказание
{
context.Credentials
= new LINQ
NetworkCredential("BPMUserName",
"BPMUserPassword");
// Определение
Построение запроса
неявного
запроса
для получение
к сервисуколлекции
для получения
контактов.
коллекции контактов.
try var
{ allContacts = from contacts
DataServiceQuery<Contact>
allContacts
in context.ContactCollection
= context.ContactCollection;
select contacts;
// Выполнение
явного
запроса
к сервису вызовом
метода Execute<>().
foreach
(Contact
contact
in allContacts)
{
foreach
(Contactдействий
contact
inсконтактами.
context.Execute<Contact>(contactUri))
{
////Выполнение
Выполнение
действийс
контактами.
} // Выполнение действий с контактами.
}
} catch
(Exception ex) {
} catch
(Exception
ex) {
// Обработка
ошибок.
} // Обработка ошибок.
} }
}
Особенности использования OData в bpm’online

Используя ОData нельзя работать с системными таблицами,
например, нельзя создавать пользователей системы,
т.к. при работе через протокол OData на уровне ядра
запрещен доступ к системным таблицам (с приставкой Sys-)

В bpm’online реализована принудительная постраничность
при возврате результирующих коллекций объектов.
По умолчанию запрос возвращает первые 40 объектов.
Интеграция через Web
service
Интеграция через Web service 1C
БП bpm’online
Достоинства
Web service
1C
Недостатки
• On-site и on-demand
• Скорость
• Файловая и SQL 1C
• Web service доступны
через интернет
• Интеграция по событию
Интеграция через Web service 1C. Разработка
БП bpm’online
Web service получение данных об объектах, создание новых,
удаление (в случае мастер-системы bpm’online)
XDTO package 1C
Интерфейс
БП bpm’online (событийные либо запускающиеся с помощью
Quartz .NET)
Web service
1C
PT 1C Connector
PT 1C Connector
PT 1C Connector – продукт, позволяющий
пользователю bpm’online 7.X настраивать
интеграцию с 1С.
Интеграция справочников и документов
Гибкое расписание
Фильтрация данных
Иерархии и агрегации
Выполнение скриптов в 1С
DEMO
Quartz.NET
Библиотека Quartz.NET

Quartz.NET – это библиотека .NET с открытым исходным кодом,
написанным на C#.

Планировщик оперирует понятиями задание и триггер.

Задание (job) представляет собой исполняемую задачу, которая может
быть запланирована.

Триггер (trigger) представляет собой график выполнения задачи.
Преимущества Quartz.NET

Задание может быть создано и сохранено в планировщике
независимо от триггера

После отрабатывания триггеров задание остается в планировщике
и может быть отредактировано или использовано в дальнейшем
без повторного переопределения

Одно задание может быть связано с несколькими различными
триггерами

Триггер может быть модифицирован без переопределения связанных
с ним заданий
Методы и свойства класса AppScheduler

Instance - получение экземпляра планировщика приложения

CreateProcessJob() - создание задания для запуска процесса

ScheduleImmediateProcessJob() - планирование задачи
для немедленного однократного запуска процесса

ScheduleMinutelyProcessJob() - планирование задачи для запуска
процесса с заданным интервалом, начиная с текущего момента

DoesJobExist() - проверка существования задания в заданной группе

RemoveJob() - удаление задачи из планировщика
Более подробно свойства и методы класса описаны в bpm’online SDK
Примеры работы с AppSheduler и Quartz.NET

начиная
с текущего
момента,начиная
запуск процесса
по графику:
запускать
с текущего
процесс смомента,
интервалом в 3 часа
запускать
процесс запуска
каждые
15 минут
в течение
часа
в 10:30,процесса
11:30,
12:30
и 13:30 каждую
среду и пятницу
// Задание интервала
(в минутах).
int
minutleyInterval
= 180;
// Создание
задания для
запуска процесса.
IJobDetail job = AppScheduler.CreateProcessJob("ReadSomeDataProcessJob", null,
// Добавление
задания по запуску
процесса в планировщик.
"ReadSomeDataProcess",
"CurrentWorkspace",
"CurrentUserName");
AppScheduler.ScheduleMinutelyProcessJob("ReadSomeDataProcessJob", null,
"ReadSomeDataProcess",
"CurrentWorkspace",
"CurrentUserName",
minutleyInterval);
// Создание
простого
триггера,
соответствующего
графику
запуска
задания.
Cron-триггера,
соответствующего
графику
запуска
задания.
ITrigger trigger = new SimpleTriggerImpl("ReadSomeDataProcessTrigger",
null,
CronTriggerImpl("ReadSomeDataProcessTrigger", null,
DateTime.UtcNow,
DateTime.UtcNow.AddHours(1),
"0 30 10-13 ? * WED,FRI");
MisfireInstruction.SimpleTrigger.RescheduleNextWithExistingCount,
TimeSpan.FromMinutes(15));
// Добавление
задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
Пример передачи параметров в БП (для 7.х)
// Создание словаря, хранящего параметры
var parameters = new Dictionary<string, object>();
// Добавление параметра в словарь
parameters.Add("ConnectorSettingsId", connectorSettings.ToString());
IJobDetail job = AppScheduler.CreateProcessJob("ReadSomeDataProcessJob", null,
"ReadSomeDataProcess", "CurrentWorkspace", "CurrentUserName", parameters);
// Создание простого триггера, соответствующего графику запуска задания.
ITrigger trigger = new SimpleTriggerImpl("ReadSomeDataProcessTrigger", null,
DateTime.UtcNow, DateTime.UtcNow.AddHours(1),
MisfireInstruction.SimpleTrigger.RescheduleNextWithExistingCount, TimeSpan.FromMinutes(15));
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
Россия:
443035 Самара,
Московское шоссе 4а
+7 (846) 266-55-69
[email protected]
123090, Москва,
Ул. Каланчевская, д. 16
+7 (495) 280-16-80
[email protected]
Украина:
03118, Киев, пр-т.
Краснозвездный, 115-А
+38 (044) 363-31-33
[email protected]
UK:
PORTLAND HOUSE,
BRESSENDAN PLACE,
LONDON SW1E 5RS
+44 (2) 0338 40040
[email protected]
Alexandria:
901 N Pitt Street, Suite 325 +1 (917) 383-27-70
Alexandria
[email protected]
Скачать