IMetabaseUsersUpdate.Callback

Синтаксис Fore

Callback: IMetabaseUsersUpdateCallback;

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

Callback: Prognoz.Platform.Interop.Metabase.IMetabaseUsersUpdateCallback;

Описание

Свойство Callback определяет объект, осуществляющий обработку ошибок, которые могут возникнуть при обновлении пользователей.

Комментарии

В качестве значения свойства необходимо указать экземпляр пользовательского класса, реализующего свойства и методы интерфейса IMetabaseUsersUpdateCallback.

Пример Fore

Sub UserProc;
Var
    MB: IMetabase;
    Sec: IMetabaseSecurity;
    Users: IMetabaseUsers;
    User: IMetabaseUser;
    UsUpdate: IMetabaseUsersUpdate;
    UpdateCallback: IMetabaseUsersUpdateCallback;
    Results: IMetabaseUsersUpdateErrors;
    Error: IMetabaseUsersUpdateError;
Begin
    MB := MetabaseClass.Active;
    Sec := MB.Security;
    Users := Sec.Users;
    UsUpdate := Sec.CreateUsersUpdate;
    For Each User In Users Do
        UsUpdate.Add(User);
    End For;
    UpdateCallback := New UserUpdateClb.Create;
    UpdateCallback.CallbackResult := MetabaseUsersUpdateCallbackResult.SilentContinue;
    UsUpdate.Callback := UpdateCallback;
    Sec.UpdateUsers(UsUpdate);
    Results := UsUpdate.Errors;
    If Results.Count <> 0 Then
        Results.SaveToFile("c:\UpdateUsersResult.txt"True);
    End If;
    For Each Error In Results Do
        If Error.Type = MetabaseUsersUpdateErrorType.Error Then
            Debug.WriteLine("Ошибка: " + Error.Message + ". Доп. информация: " + Error.DetailText);
        Else
            Debug.WriteLine("Предупреждение: " + Error.Message + ". Доп. информация: " + Error.DetailText);
        End If;
    End For;
End Sub UserProc;

Class UserUpdateClb: Object, IMetabaseUsersUpdateCallback
    _ClbResult: MetabaseUsersUpdateCallbackResult;

    Sub Process(Subject: ISecuritySubject);
    Begin
        Debug.WriteLine("Обновление пользователя: " + Subject.Name);
    End Sub Process;

    Function RequestAction(Error: IMetabaseUsersUpdateError): MetabaseUsersUpdateCallbackResult;
    Begin
        Select Case Error.Type
            Case MetabaseUsersUpdateErrorType.Warning:
                Debug.WriteLine("Предупреждение: " + Error.Message);
            Case MetabaseUsersUpdateErrorType.Error:
                Debug.WriteLine("Ошибка: " + Error.Message);
        End Select;
        Return _ClbResult;
    End Function RequestAction;

    Function get_CallbackResult: MetabaseUsersUpdateCallbackResult;
    Begin
        Return _ClbResult;
    End Function get_CallbackResult;

    Sub set_CallbackResult(Result: MetabaseUsersUpdateCallbackResult);
    Begin
        _ClbResult := Result;
    End Sub set_CallbackResult;
End Class UserUpdateClb;

При выполнении примера осуществляется обновление всех пользователей, созданных в менеджере безопасности репозитория. Для отслеживания процесса обновления создается объект пользовательского класса «UserUpdateClb». При возникновении каких-либо ошибок процесс обновления будет продолжен. После завершения, если во время обновления возникли ошибки/предупреждения, то информация о них будет выведена в консоль среды разработки, а также сохранена в файл.

Пример Fore.NET

Указанная процедура является точкой входа для .NET-сборки.

Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Sec: IMetabaseSecurity;
    Users: IMetabaseUsers;
    User: IMetabaseUser;
    UsUpdate: IMetabaseUsersUpdate;
    UpdateCallback: IMetabaseUsersUpdateCallback = New UserUpdateClb();
    Results: IMetabaseUsersUpdateErrors;
    Error: IMetabaseUsersUpdateError;
Begin
    MB := Params.Metabase;
    Sec := MB.Security;
    Users := Sec.Users;
    UsUpdate := Sec.CreateUsersUpdate();
    For Each User In Users Do
        UsUpdate.Add(User);
    End For;
    UpdateCallback.CallbackResult := MetabaseUsersUpdateCallbackResult.muucrSilentContinue;
    UsUpdate.Callback := UpdateCallback;
    Sec.UpdateUsers(UsUpdate);
    Results := UsUpdate.Errors;
    If Results.Count <> 0 Then
        Results.SaveToFile("c:\\UpdateUsersResult.txt"True);
    End If;
    For Each Error In Results Do
        If Error.Type = MetabaseUsersUpdateErrorType.muuetError Then
            System.Diagnostics.Debug.WriteLine("Ошибка: " + Error.Message + ". Доп. информация: " + Error.DetailText);
        Else
            System.Diagnostics.Debug.WriteLine("Предупреждение: " + Error.Message + ". Доп. информация: " + Error.DetailText);
        End If;
    End For;
End Sub;

Class UserUpdateClb: IMetabaseUsersUpdateCallback
    _ClbResult: MetabaseUsersUpdateCallbackResult;

    Public Sub Process(Subject: ISecuritySubject);
    Begin
        System.Diagnostics.Debug.WriteLine("Обновление пользователя: " + Subject.Name);
    End Sub;

    Public Function RequestAction(Error: IMetabaseUsersUpdateError): MetabaseUsersUpdateCallbackResult;
    Begin
        Select Case Error.Type
            Case MetabaseUsersUpdateErrorType.muuetWarning:
                System.Diagnostics.Debug.WriteLine("Предупреждение: " + Error.Message);
            Case MetabaseUsersUpdateErrorType.muuetError:
                System.Diagnostics.Debug.WriteLine("Ошибка: " + Error.Message);
        End Select;
        Return _ClbResult;
    End Function;

    Public Property CallbackResult: MetabaseUsersUpdateCallbackResult
        Get
        Begin
            Return _ClbResult;
        End Get
        Set
        Begin
            _ClbResult := Value;
        End Set
    End Property;
End Class;

При выполнении примера осуществляется обновление всех пользователей, созданных в менеджере безопасности репозитория. Для отслеживания процесса обновления создается объект пользовательского класса «UserUpdateClb». При возникновении каких-либо ошибок процесс обновления будет продолжен. После завершения, если во время обновления возникли ошибки/предупреждения, то информация о них будет выведена в консоль среды разработки, а также сохранена в файл.

См. также:

IMetabaseUsersUpdate