IUiLicenseManager.LicenseRequest

Синтаксис Fore

LicenseRequest(

FeatureName: String;

Var License: IUiLicense;

[ShowActivationWizard: Boolean = False]): UiLicenseStatusCode;

Синтаксис Fore.NET

LicenseRequest(

FeatureName: string,

var License: Prognoz.Platform.Interop.Ui.IUiLicense,

ShowActivationWizard: boolean,

pContext: Prognoz.Platform.Interop.Fore.ForeRuntimeContext): Prognoz.Platform.Interop.ForeSystem.UiLicenseStatusCode;

Параметры

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

License. Лицензия;

ShowActivationWizard. Параметр, отвечающий за появление диалогового окна «Активация модуля», когда запрашиваемая единица лицензирования недоступна. По умолчанию параметр установлен в False: диалог активации не появляется;

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

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

Описание

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

Комментарии

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

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

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

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

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

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

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку 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);
    If StatusCode = UiLicenseStatusCode.Success Then
        Lic.LicenseUpdate;
    Else
        /// обработка ошибок лицензирования
        ///...
    End If;
    ///Работа с лицензируемым блоком
    ///...
    ///После завершения работы освобождаем лицензию
    If Lic <> Null  Then
       Lic.LicenseRelease;
    End If;

End Sub Button1OnClick;

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

Пример Fore.NET

Для выполнения примера добавьте ссылки на системные сборки: Ui, Fore, ForeSystem. Разместите на форме компонент Button с идентификатором «Button1». Пример является обработчиком события OnClick для компонента «Button1». Результат выполнения примера Fore.NET совпадает с примером Fore.

Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Ui;

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,RunContext);
    If StatusCode = UiLicenseStatusCode.lscSuccess Then
        Lic.LicenseUpdate();
    Else
        /// обработка ошибок лицензирования
        ///...
    End If;
    ///Работа с лицензируемым блоком
    ///...
    ///После завершения работы освобождаем лицензию
    If Lic <> Null Then
            Lic.LicenseRelease();
    End If;
End Sub;

См. также:

IUiLicenseManager