Разработка собственного коннектора

Последние изменение: 27.08.2019

Для работы коннектора под управлением сервера Mobile SMARTS и настройки параметров коннектора через панель управления создаются два файла dll: первая dll, предназначенная для сервера, размещается в <Папка базы Mobile SMARTS>\ Server\DataService\ bin\. Вторая dll, для панели управления - в <Папка базы Mobile SMARTS>\ Control panel\ Addins. Имена файлов должны иметь вид Cleverence.Connectivity.*.dll (например, Cleverence.Connectivity.MyConnector.dll - для сервера и Cleverence.Connectivity.MyConnector.Panel.dll  - для панели управления).

В «Решении» (Solution) в Visual Studio нужно создать два проекта с типом выходных данных «Библиотека классов»:

Скачать заготовку коннектора (Решение Visual Studio 2019 с двумя проектами).

Пространство имен класса коннектора должно начинаться на Cleverence.Connectivity, целевая рабочая среда .NET Framework 4.6.1.

Для серверной версии коннектора в «Ссылки» (Reference Assemblies) нужно добавить следующие dll:

Cleverence.Common.dll

Cleverence.Connectivity.dll

Cleverence.DataCollection.dll

Cleverence.MobileSMARTS.dll

Данные библиотеки находятся по пути <папка установки Mobile SMARTS>\ Server\DataService\ Bin (по умолчанию, C:\ Program Files (x86)\ Cleverence Soft\ Mobile SMARTS\ Server\ DataService\ Bin)

В проект коннектора для панели управления нужно добавить в «Ссылки» (Reference Assemblies):

Cleverence.DataCollection.dll

Cleverence.MobileSMARTS.ComConnector.dll

Библиотека Cleverence.MobileSMARTS.ComConnector.dll находится по пути <папка установки Mobile SMARTS>\ Control Panel (по умолчанию C:\ Program Files (x86)\ Cleverence Soft\ Mobile SMARTS\ Control Panel).

Рекомендуется скопировать все нужные dll в отдельную папку рядом с файлом «Решения» (Solution) и добавить ссылки на библиотеки из этой папки.

В каждый из проектов (для сервера и для панели управления) нужно добавить по файлу *.cs для исходного кода класса коннектора.

Класс коннектора должен реализовывать интерфейс IConnector (находится в пространстве имен Cleverence.Connectivity). Можно наследовать класс своего коннектора от класса ConnectorTypical (также из Cleverence.Connectivity), который реализует IConnector и, кроме того, содержит свойства для указания имен обработчиков событий сервера и виртуальные функции для вызова обработчиков.

Обе версии класса коннектора (для cервера и для панели управления) должны иметь одинаковое имя и находится в одинаковых пространствах имен (namespace), начинающихся на Cleverence.Connectivity (например, Cleverence.Connectivity.MyConnector).

При наследовании от ConnectorTypical в серверной версии коннектора следует перегрузить функции: Initialize (выполняет инициализацию коннектора), Deinitialize (выполняет деинициализацию), InvokeMethod (выполняет вызов во внешнюю систему). Именно InvokeMethod реализует основной функционал коннектора по работе с внешней системой. Также следует перегрузить свойство Initialized (возвращает признак, инициализирован ли коннектор, true - инициализирован, false - нет). При необходимости, могут быть перегружены функции обработки событий сервера (например, GetProduct - получение товара при запросе с ТСД, DocumentFinished - на сервер с ТСД попал завершенный документ и др.). Если не перегружать функции обработки событий, при возникновении событий будет вызываться функция InvokeMethod, в которую передается имя обработчика события, указанное в настройках и соответствующие событию аргументы (см. События сервера).   

Версия коннектора для панели управления также наследуется от ConnectorTypical. Перегружать какие-либо функции в этом случае не нужно. Для подключения коннектора к базе внешней системы обычно требуются определенные настройки (адрес базы внешней системы, имя пользователя/ пароль и т.п). Для того, чтобы иметь возможность редактировать нужные настройки и чтобы настройки сохранялись, требуется добавить свойства в классы коннектора для панели управления и сервера. Заготовка коннектора:

[С#]
Серверная часть: namespace Cleverence.Connectivity.DemoConnector { public class DemoConnector : ConnectorTypical { public DemoConnector() { } public string MyProperty { get; set; } public override bool Initialized { get { throw new NotImplementedException(); } } public override void Initialize() { throw new NotImplementedException(); } public override void Deinitialize() { throw new NotImplementedException(); } public override object InvokeMethod(string methodName, object[] args) { throw new NotImplementedException(); } } } Часть для панели управления: namespace Cleverence.Connectivity.DemoConnector { public class DemoConnector : ConnectorTypical { public DemoConnector() { } public string MyProperty { get; set; } } }

В серверной части нужно реализовать Initialized, Initialize, Deinitialize, InvokeMethod. Для примера добавлено свойство MyProperty.  

Собранную dll серверной версии размещаем в <Папка базы Mobile SMARTS>\Server\DataService\bin\, версию для панели управления в <Папка базы Mobile SMARTS>\Control panel\Addins.

Сервер Mobile SMARTS в целях безопасности выполняет проверку цифровой подписи загружаемых сборок. Если после размещения неподписанного файла dll в <Папка базы Mobile SMARTS>\Server\DataService\bin\> перезапустить службу сервера Mobile SMARTS, в логе сервера базы данных dataserver_*.log (в C:\ProgramData\Cleverence\Logs) появится сообщение:

2019-08-05 10:08:08.6537|ERROR|NLogger.WriteNlogEvent| Коннекторы не загружены! Обнаружена неподписанная сборка: C:\ProgramData\Cleverence\Базы Mobile SMARTS\e3945857-308f-4829-92e2-720dc11d1bec\Server\DataService\bin\Cleverence.Connectivity.DemoConnector.dll

Видим, что dll коннектора не загрузилась. В некоторых случаях загрузка неподписанной сборки приводит к остановке сервера. Для того, чтобы можно было проверить работу коннектора и выполнить отладку, сервер нужно запустить с ключом Debug из командной строки (службу сервера перед этим нужно остановить):

C:\Program Files (x86)\Cleverence Soft\Mobile SMARTS\Server\Cleverence.MobileSMARTS.Server.exe /debug

После этого в панели управления можно добавить коннектор в конфигурацию:

Настройка параметров коннектора выполняется через панель свойств. Когда настройка выполнена, сохраним конфигурацию. После этого можно запустить коннектор с помощью кнопки «Пуск»:

Если требуется отладка кода коннектора, рядом с файлом коннектора в <Папка базы Mobile SMARTS>\Server\DataService\bin\ следует разместить файл *.pdb (см. Тестирование и выпуск разработанного коннектора). Когда отладка закончена, обратитесь в техническую поддержку «Клеверенс» для подписания dll.

Скачать заготовку коннектора (Решение Visual Studio 2019 с двумя проектами).