Интеграция сервиса Мой Склад и Aurama с помощью REST API.

Передо мной возникла задача интеграции сервиса Мой Склад и сервиса по управлению клиентами Aurama. При создании клиентских заказов в сервисе Мой Склад и заполнении определенных атрибутов необходимо было автоматически передавать их в сторонний Сервис Aurama.
Мой склад предоставляет REST API по работе с заказами позволяющий получить перечень заказов по указанному критерию.
Например так выглядит запрос для получения всех заказов измененных в указанном временном интервале yyyyMMddHHmmss (Формат java.text.SimpleDateFormat 20130606060606).

https://online.moysklad.ru/exchange/rest/ms/xml/CustomerOrder/list?filter=data_updated>20130606060606
В результате сервер Мой Склад возвращает xml описывающий заказы, соответствующие указанному критерию.
Сервис Aurama так же предоставляет API для импорта заказов, работает по протоколу http обрабатывая данные в формате JSON.
Для реализации бизнес логики нужен был надежный контейнер в котором будет работать сервис интеграции. Т.к. возможности вмешиваться в программную логику интегрируемых сервисов не было. Критериями при выборе были: надежность, стоимость и удобство работы.
В результате для работы был выбран облачный сервис GAE (Google Application Engine ).
Потому что:
• бесплатных квот вполне хватило для функционирования интеграции (при эксплуатации интеграции платить ни чего не нужно),
• Google говорит что если в их дата центр попадет атомная бомба система автоматически переключиться на резервный вычислительный центр, который работает на другом континенте (риск сохранности данных и функционирования сервера сводиться к минимуму).
• Нет необходимости администрировать сервер и инфраструктуру, в общем готовое удобное решение.
Из минусов GAE, могу назвать не понятную работу хранилища данных. Сколько я ни бился на тестовой машине запуская юнит тесты по созданию/ удалению персистентных объектов в рамках транзакций их количество всегда было разным. Эту проблему удалось обойти после изменения алгоритма. На тестовой машине данные сохранялись только после 100-200 миллисекунд после выполнения транзакции . Плюс существенное ограничение на время работы одного запроса 30 сек, но это уже технические детали. Актуально когда в рамках одной задачи нужно выполнить десятки http запросов последовательно обработав их результат.
В результате задача была решена быстро и удобно для заказчика.
Единственным минусом остается то, что в Моем Складе пользователь не может задать вызов действия по событию. Например мне нужно было делать вызов интеграционного сервиса по событию «Создание/изменение заказа». Поэтому для работы интеграции пришлось выполнять запросы к моему складу через определенные интервалы времени. И анализировать полученную выборку на наличие изменений.
Я более 6 лет успешно занимаюсь интеграцией информационных продуктов и могу помочь вам с интеграцией сервиса Мой Склад с вашим программным продуктом.
Интеграция информационных продуктов – это залог целостности и актуальности данных в вашем информационном пространстве.
Со мной можно связаться через:
• сайт: http://plmservice.ru/kontakt/
• email: fivig[DOG]mail.ru

Добавить комментарий