LicenseRequest(
FeatureName: String;
Var License: IUiLicense;
[ShowActivationWizard: Boolean = False])
[StorageType: UiLicenseStorageType = 0] : UiLicenseStatusCode;
LicenseRequest(
FeatureName: String,
License: Prognoz.Platform.Interop.Ui.IUiLicense,
ShowActivationWizard: Boolean,
StorageType: Prognoz.Platform.Interop.ForeSystem.UiLicenseStorageType,
Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext) : Prognoz.Platform.Interop.ForeSystem.UiLicenseStatusCode;
FeatureName. Наименование единицы лицензирования;
License. Лицензия;
ShowActivationWizard. Параметр, отвечающий за появление диалогового окна «Активация модуля», когда запрашиваемая единица лицензирования недоступна. По умолчанию параметр установлен в False: диалог активации не появляется.
StorageType. Параметр актуален, если производится запрос единицы лицензирования, которая не входит в предустановленный набор единиц лицензирования платформы. Параметр определяет место сохранения запрашиваемой единицы лицензирования: в файл или в реестр. По умолчанию информация об успешной активации прикладных единиц лицензирования сохраняется в ветку реестра HKEY_CURRENT_USER или HKEY_LOCAL_MACHINE в зависимости от применения настроек репозитория: Metabases\<Идентификатор репозитория>\License. Файл автономной лицензии хранится по следующему пути: %PROGRAMDATA%\JSC Prognoz\Prognoz Platform\lservrc.
Примечание. Для успешной активации пользователь должен обладать правами на запись в соответствующую ветку реестра или в файл с лицензией.
Context. Контекст. Актуален только для Fore.NET.
Метод LicenseRequest проверяет наличие заданной единицы лицензирования (Feature) в лицензии и возвращает результат проверки.
Проверка единицы лицензирования может быть выполнена как для сетевой, так и для автономной лицензии.
После получения лицензии ее необходимо обновить IUiLicense.LicenseUpdate.
После завершения работы с лицензируемым блоком лицензию необходимо освободить с помощью LicenseRelease, то есть удалить объект с лицензией.
При использовании прикладных единиц лицензирования необходимо создание специального lsinit.exe, содержащего информацию о них. Подробнее смотрите в статье «Лицензирование прикладных систем».
Если при запросе прикладной единицы лицензирования использовалась сетевая лицензия и на сервере лицензий нет запрашиваемой единицы, то при вводе корректного кода активации для текущего пользователя будут изменены настройки поиска лицензии: будет включен поиск автономной лицензии.
Для выполнения примера подключите системную сборку «Ui», разместите на форме компонент Button с идентификатором «Button1». Пример является обработчиком события OnClick для компонента «Button1».
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
LicManager: IUiLicenseManager;
Feature: String;
Lic: IUiLicense;
StatusCode: UiLicenseStatusCode;
Begin
LicManager := WinApplication.Instance.LicenseManager;
Feature := "ApplicationFeature";
StatusCode := LicManager.LicenseRequest(Feature, Lic, True, UilicenseStorageType.File);
If StatusCode = UiLicenseStatusCode.Success Then
Lic.LicenseUpdate;
Else
/// обработка ошибок лицензирования
///...
End If;
///Работа с лицензируемым блоком
///...
///После завершения работы освобождаем лицензию
If Lic <> Null Then
Lic.LicenseRelease;
End If;
End Sub Button1OnClick;
При нажатии на кнопку будет запрошена единица лицензирования «ApplicationFeature». В случае если она недоступна, будет выдан диалог «Активация модуля».
Для выполнения примера подключите системные сборки «Ui», «Fore», «ForeSystem». Разместите на форме компонент Button с идентификатором «Button1». Пример является обработчиком события OnClick для компонента «Button1». Результат выполнения примера Fore.NET совпадает с примером Fore.
Imports Prognoz.Platform.Interop.Ui;
Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.ForeSystem;
...
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
WinApp: WinApplicationClassClass = New WinApplicationClassClass();
Svc: IForeServices;
RunContext: ForeRuntimeContext;
LicManager: IUiLicenseManager;
Feature: String;
Lic: IUiLicense;
StatusCode: UiLicenseStatusCode;
Begin
Svc := Self.Metabase As IForeServices;
RunContext := Svc.GetRuntime().Context;
LicManager := WinApp.Instance[RunContext].LicenseManager;
Feature := "ApplicationFeature";
StatusCode := LicManager.LicenseRequest(Feature, Var Lic, True, UiLicenseStorageType.ulstFile,RunContext);
If StatusCode = UiLicenseStatusCode.lscSuccess Then
Lic.LicenseUpdate();
Else
/// обработка ошибок лицензирования
///...
End If;
///Работа с лицензируемым блоком
///...
///После завершения работы освобождаем лицензию
If Lic <> Null Then
Lic.LicenseRelease();
End If;
End Sub;
См. также: