ILicenseManager.RequestLicense

Синтаксис

LicenseRequest(FeatureName: String; Var License: ILicense; [Settings: ILicenseRequestSettings = Null]): UiLicenseStatusCode;

LicenseRequest(FeatureName: String, Var License: Prognoz.Platform.Interop.Host.ILicense, Settings: Prognoz.Platform.Interop.Host.LicenseRequestSettings, Context: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): Prognoz.Platform.Interop.ForeSystem.UiLicenseStatusCode;

Параметры

FeatureName. Наименование единицы лицензирования;

Примечание. Параметр принимает пустое значение, если параметр Settings передает тип единицы лицензирования с помощью свойства FeatureType.

License. Лицензия;

Settings. Объект для работы с мастером активации модуля. Если запрашиваемая единица лицензирования недоступна используйте свойство ShowActivationWizard для отображения диалогового окна «Активация модуля». По умолчанию свойство принимает значение False, диалог активации не отображается;

Примечание. Значение свойства True используется только для проверки автономной лицензии, при проверке сетевой лицензии и отсутствии запрашиваемой единицы лицензирования появится сообщение об ошибке.

Context. Контекст. Актуален только для Fore.NET.

Описание

Метод LicenseRequest проверяет наличие заданной единицы лицензирования в лицензии и возвращает результат проверки.

Комментарии

Проверка единицы лицензирования может быть выполнена как для сетевой, так и для автономной лицензии.

После получения лицензии ее необходимо обновить ILicense.LicenseUpdate.

После завершения работы с лицензируемым блоком лицензию необходимо освободить с помощью ILicense.LicenseRelease, то есть удалить объект с лицензией.

При использовании прикладных единиц лицензирования необходимо создание специального lsinit.exe, содержащего информацию о них. Подробнее смотрите в статье «Лицензирование прикладных систем».

В случае, если в диалоге активации модуля был указан валидный код активации, то код единицы лицензирования будет сохранен в файл. Файл автономной лицензии хранится по следующему пути: %PROGRAMDATA%\Foresight\Foresight Analytics Platform\lservrc.

При использовании метода проверяется тип лицензии:

Пример Fore

Для выполнения примера разместите на форме компонент Button с наименованием «Button1».

Добавьте ссылки на системные сборки: Host, Forms, Ui, Fore, ForeSystem (для примера на Fore.NET).

Пример является обработчиком события 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;

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;

При нажатии на кнопку будет запрошена единица лицензирования «PP_WordAddin». В случае если она недоступна, будет выдан диалог «Активация модуля».

См. также:

ILicenseManager