Встраиваемые plugin-модули
Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.
В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.
Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.
Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell.
Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.
В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.
Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.
Plugin-программы с визуальным содержимым используются только клиентскими приложениями.
Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе Описание базовых элементов интерфейса
В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.
Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения
- среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»;
- в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма).
Plugin-форма может быть реализована как объект класса
- System.Windows.Forms.Form;
- System.Windows.Forms.Control;
или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).
В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.
Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).
В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).
Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.
Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.
Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.
Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.
Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.
В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.
Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.
Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell.
Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.
В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.
Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.
Plugin-программы с визуальным содержимым используются только клиентскими приложениями.
Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе Описание базовых элементов интерфейса
В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.
Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения
- среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»;
- в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма).
Plugin-форма может быть реализована как объект класса
- System.Windows.Forms.Form;
- System.Windows.Forms.Control;
или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).
В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.
Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).
В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).
Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.
Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.
Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.
Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.