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