LicenseRequest(FeatureName: String; Var License: ILicense; [ShowActivationWizard: Boolean = False]): UiLicenseStatusCode;
LicenseRequest(FeatureName: string, var License: Prognoz.Platform.Interop.Ui.ILicense, ShowActivationWizard: boolean, pContext: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): Prognoz.Platform.Interop.ForeSystem.UiLicenseStatusCode;
FeatureName. Наименование единицы лицензирования;
License. Лицензия;
ShowActivationWizard. Параметр, отвечающий за появление диалогового окна «Активация модуля», когда запрашиваемая единица лицензирования недоступна. По умолчанию параметр установлен в False: диалог активации не появляется;
Примечание. Значение параметра True используется только для проверки автономной лицензии, при проверке сетевой лицензии и отсутствии запрашиваемой единицы лицензирования появится сообщение об ошибке.
Context. Контекст. Актуален только для Fore.NET.
Метод LicenseRequest проверяет наличие заданной единицы лицензирования в лицензии и возвращает результат проверки.
Проверка единицы лицензирования может быть выполнена как для сетевой, так и для автономной лицензии.
После получения лицензии ее необходимо обновить ILicense.LicenseUpdate.
После завершения работы с лицензируемым блоком лицензию необходимо освободить с помощью ILicense.LicenseRelease, то есть удалить объект с лицензией.
При использовании прикладных единиц лицензирования необходимо создание специального lsinit.exe, содержащего информацию о них. Подробнее смотрите в статье «Лицензирование прикладных систем».
В случае, если в диалоге активации модуля был указан валидный код активации, то код единицы лицензирования будет сохранен в файл. Файл автономной лицензии хранится по следующему пути: %PROGRAMDATA%\Foresight\Foresight Analytics Platform\lservrc.
При использовании метода проверяется тип лицензии:
если используется сетевая лицензии и нет запрашиваемой единицы лицензирования, то вместо диалогового окна активации появится сообщение об ошибке. Активация лицензий не поддерживается для сетевого режима;
если на сервере есть запрашиваемая лицензия, то для текущего пользователя будут изменены настройки поиска лицензии на автономную лицензию;
если используется автономная лицензии и нет запрашиваемой единицы лицензирования, то появится диалоговое окно активации.
Для выполнения примера разместите на форме компонент Button с наименованием «Button1».
Добавьте ссылки на системные сборки: Host, Forms, Ui.
Пример является обработчиком события OnClick для компонента «Button1». Выполните пример без отладки.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
LicManager: ILicenseManager;
Lic: ILicense;
StatusCode: UiLicenseStatusCode;
Settings: IUiLicenseRequestSettings;
Begin
LicManager := WinApplication.Instance.LicenseManager;
Settings := New UiLicenseRequestSettings.Create;
Settings.FeatureType := UiLicenseFeatureType.WordAddin;
Settings.ShowActivationWizard := True;
StatusCode := LicManager.RequestLicense("", Lic, Settings);
If StatusCode = UiLicenseStatusCode.Success Then
Lic.LicenseUpdate;
Else
// обработка ошибок лицензирования
//...
End If;
//Работа с лицензируемым блоком
//...
//После завершения работы освобождаем лицензию
If Lic <> Null Then
Lic.LicenseRelease;
End If;
End Sub Button1OnClick;
При нажатии на кнопку будет запрошена единица лицензирования «PP_WordAddin». В случае если она недоступна, будет выдан диалог «Активация модуля».
Для выполнения примера разместите на форме компонент Button с наименованием «Button1».
Добавьте ссылки на системные сборки: Host, Ui, Fore, ForeSystem.
Пример является обработчиком события OnClick для компонента «Button1». Выполните пример без отладки.
Imports Prognoz.Platform.Interop.Host;
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
LicManager: ILicenseManager;
Lic: ILicense;
StatusCode: UiLicenseStatusCode;
Settings: UiLicenseRequestSettingsClass = New UiLicenseRequestSettingsClass();
WinApp: WinApplicationClassClass = New WinApplicationClassClass();
Svc: IForeServices;
RunContext: ForeRuntimeContext;
Begin
Svc := Self.Metabase As IForeServices;
RunContext := Svc.GetRuntime().Context;
LicManager := WinApp.Instance[RunContext].LicenseManager;
Settings.FeatureType := UiLicenseFeatureType.lftWordAddin;
Settings.ShowActivationWizard := True;
StatusCode := LicManager.RequestLicense("", Var Lic, Settings As LicenseRequestSettings, RunContext);
If StatusCode = UiLicenseStatusCode.lscSuccess Then
Lic.LicenseUpdate();
Else
// обработка ошибок лицензирования
//...
End If;
//Работа с лицензируемым блоком
//...
//После завершения работы освобождаем лицензию
If Lic <> Null Then
Lic.LicenseRelease();
End If;
End Sub;
Результат выполнения примера Fore.NET совпадает с примером Fore.
См. также: