iikoFront API SDK

Лицензирование

Лицензирование плагинов является принудительным. Прежде чем приступить к разработке плагина, необходимо получить лицензию разработчика, она позволит запустить тестовый экземпляр приложения iikoFront для разработки, отладки и тестирования плагина. Пользователям, устанавливающим уже готовый плагин, необходимо будет приобрести на него лицензию. Этот механизм защищает разработчиков плагинов от их несанкционированного использования, а также позволяет компании iiko контролировать использование некоторых функций.

Схемы лицензирования

С технической точки зрения, есть две схемы лицензирования:

Плата за экземпляр плагина

Данный вариант может применяться для плагинов, предоставляющих законченную функциональность и представляющих самостоятельную ценность. Например, плагин, дублирующий состав текущего заказа на экран покупателя, мог бы лицензироваться по этой схеме. Контроль лицензий осуществляется автоматически приложением iikoFront, плагин будет загружен только при наличии лицензии на него. Для одновременного использования плагина на нескольких терминалах требуется лицензия на соответствующее количество плагинов. Так, если плагин должен быть установлен на 10 терминалов, потребуется лицензия на 10 экземпляров плагина.

Чтобы защитить плагин по этой схеме, необходимо:

Плата за внешнее подключение к плагину

Данная схема применима для плагинов, которые являются посредниками между iikoFront и внешними устройствами. За контроль лицензий в таком случае отвечает плагин. Помимо самого факта включения модуля в лицензию, могут быть установлены дополнительные ограничения, основное из которых — количество слотов. Слот модуля — это своего рода ячейка, которую на время может занять плагин или подключенное к нему устройство. Подключаясь попеременно, два устройства могут обходиться одним слотом, по очереди занимая и освобождая его, но для одновременной работы им понадобится два слота. Например, если плагин обеспечивает работу мобильных терминалов на предприятии, состоящем из двух групп отделений, в каждой из которых установлено по одному экземпляру плагина, и в обеих группах используется по 5 мобильных терминалов, то пользователю необходима лицензия на 10 слотов. Количество работающих экземпляров плагина при этом не учитывается.

Для реализации этой схемы защиты необходимо:

При вызове AcquireSlot один из слотов модуля плагина отмечается занятым указанным устройством. Если свободных слотов нет, метод генерирует исключение InsufficientLicenseException, значит, уже подключено максимально разрешённое количество устройств, и очередному устройству в подключении должно быть отказано.

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

Регистрация

Разработчику необходимо зарегистрировать свой плагин как лицензируемый модуль в iiko, а пользователю получить лицензию на использование этого модуля. При регистрации плагину назначается некий идентификатор, целое число, это и будет идентификатором модуля. Это может быть как новый модуль, созданный специально для этого плагина, так и универсальный, используемый для небольших частных доработок. Разработчик привязывает плагин к модулю, указывая его идентификатор с помощью атрибута PluginLicenseModuleId. Пользователю необходимо будет получить лицензию, включающую в себя соответствующий модуль.

Для регистрации, получения лицензии разработчика, получения идентификатора лицензируемого модуля и заключения договора необходимо отправить заявку по адресу api@iiko.ru.

Ссылки