Oops... your message was not sent

Your message has been successfully sent

тематические истории, основанные на опыте компании JetRuby
API, Веб-разработка

Коробочная интеграция с SAP Business One

SAP Business One — это система, обеспечивающая полный контроль над всеми аспектами деятельности коммерческой компании. А именно — управление продажами, финансовыми потоками, закупками, производственным процессом и т.д.  SAP Business One может разворачиваться, как в офисе, так и на виртуальном сервере. Использование этой системы помогает в ведении всех аспектов бизнеса.

Интеграции с SAP стоит строго разделять по назначению. Мы выделим два основных сценария и вопроса, на которые они помогают ответить:

  • Репликация данных — существует ли подмножество таблиц в базе данных SAP B1, действующей в качестве совместно используемой мастер-БД? Или копию этих данных хранят внешние БД?
  • Синхронизация данных — если данные дублируются, они синхронизируются всегда или только периодически?

Реализация интеграций с SAP B1 сталкивается с проблемами в момент пересечения с бизнес-логикой,  а также при столкновениями с большими объемами данных. Также отметим, что подобные трудности оборачиваются дополнительными затратами на северное оборудование.

Подведем промежуточный итог — суть процесса интеграции с SAP кроется в ответе на два важных вопроса: каков тип сценария репликации данных и какова периодичность их синхронизации?

Для получения исчерпывающего ответа перейдем к самим механизмам интеграции. А для затравки предложим вашему вниманию стандартные решения, которые поставляются в комплекте SAP B1 SDK (впрочем, комплект не означает что все будет работать, как вам нужно — такова коммерческая подоплека):

  • SAP Business One DI-API
  • SAP Business One DI Server

SAP Business One DI-API

DI-API предоставляет интерфейс объектам SAP Business One, с типичным для API CRUD набором действий (вы можете читать, просматривать, создавать, обновлять или удалять объекты в базе данных SAP B1, а также выполнять некоторые XML-операции). Из приятного: SAP обеспечивает максимально полную проверку данных и автоматически заполняет значения полей, основанные на бизнес-правилах SAP B1. Таким образом, консистентность данных в базе гарантированна.

На самом деле DI API дает доступ не только внешней системы к базе данных с объектами, но и частично — к бизнес логике, реализованной в SAP B1.

DI-API реализован в виде DLL на основе Microsoft COM. Это обеспечивает совместимость с любой COM или .NET средой разработки, включая Microsoft Visual Studio или Visual Studio .NET. Кроме того, имеется возможность адаптировать DI-API под Ruby on Rails. Для этого потребуется использовать небольшую прослойку на Savon, способствующую реализации интерпретатора SOAP протокола и генерации полезного XML.

DI-API действует, как COM на основе фасадной капсулы, за которой скрывается множество внутренних служб (рис. 1), обеспечивающих:

  • доступ к функциям базы данных и метаданных (менеджер данных)
  • расширенные функциональные возможности XML (схемы Generator)
  • SAP B1 бизнес-логики (ObserVer).

Обратите внимание, что DI-API представляет собой мононаправление и синхронный интерфейс. Интеграция данных требуется также и для получения уведомлений о создании, удалении и обновлении объектов в SAP Business One DB.

SAP-B1-DI-API-Structure-e1458900776882

SAP Business One DI Server

DI-сервер предоставляет SOAP интерфейс для SAP B1. Набор операций, осуществляемых этим интерфейсом является подмножеством методов, экспортируемых DI-API. В целом, он обеспечивает проведение CRUD операций на объектах (как и в DI API), но с одним ограничением: не поддерживаются функции метаданных. DI Server не позволяет изменять структуру пользовательских таблиц в БД.

Однако он дает возможность передачи нескольких операций в течение одной транзакции. Впрочем, подобным функционалом наделен и API.

Главное положительное отличие DI Server от DI API — поддержка более   широкого спектра клиентских технологий. А это автоматически означает и наличие больших возможностей интеграции (конечно после предварительной обработки “напильником”). DI Server позволяет использовать: COM, COBRA, или TCP/IP для взаимодействия с SAP Business One с помощью XML. В отличие от DI-API c COM-оберткой, его можно рассматривать как SOAP-обертку вокруг внутренних служб SAP Business One.

На приведенной ниже схеме показана архитектура для DI Server (рис 2).

SAP-B1-DI-Server-Structure-e1458900788179

Интеграция с мобильными клиентами (IOS и Android)

Команда JetRuby также имеет опыт интеграции SAP с мобильным приложениями на базе IOS и Android. В этом деле на первый план выходит дополнительная прослойка с конвертацией в JSON формате. Кроме того, интеграция SAP с мобильными устройствами требует внедрения отдельных вспомогательных сервисов и дополнительных ресурсов препроцессинга выдачи данных. Например, для быстрого поиска и выдачи предварительно подготовленных результатов мы используем ElasticSearch.

Что же касается действий на запись или вычислений, они проходят асинхронно в фоновых потоках. Если вычисления занимают более 10 секунд для одного клиента, для этого используются дополнительные адаптеры Ruby или GoLang.

department
Статью подготовил
Отдел веб-разработки
Профессиональная разработка сайтов и приложений на стороне сервера и клиента. Проектирование дизайна, верстка страниц и техническое обслуживание реализованных проектов.
New Articles