IMetabaseUpdateProgress.OnProgress

Синтаксис Fore

OnProgress(Data: IMetabaseUpdateProgressData);

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

OnProgress(Data: IMetabaseUpdateProgressData);

Параметры

Data. Информация о ходе обновления.

Описание

Метод OnProgress реализует событие общего статуса процесса обновления/синхронизации.

Комментарии

Данное событие генерируется во время применения обновления, либо при синхронизации объектов репозитория с объектами в обновлении.

Пример Fore

Для выполнения примера в файловой системе предполагается наличие файла обновления с наименованием «TSDB.pef». Данный файл содержит информацию для обновления базы данных временных рядов. Если какие-либо объекты обновляются вместе с правами доступа, то метод переноса прав объектов осуществляется в запросе после обновления самих объектов.

Добавьте ссылку на системную сборку Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    MUpdate: IMetabaseUpdate;
    Progress: MyUpdateProgress;
Begin
    MB := MetabaseClass.Active;
    MUpdate := MB.CreateUpdate;
    MUpdate.LoadFromFile(
"c:\TSDB.pef");
    Progress := 
New MyUpdateProgress.Create;
    MUpdate.Apply(Progress);
End Sub UserProc;

Class MyUpdateProgress: UpdateProgress
    
Sub OnProgress(Data: IMetabaseUpdateProgressData);
    
Begin
        
Select Case Data.Stage
            
Case MetabaseUpdateProgressStage.Start: Debug.WriteLine("Начало обновления объектов");
            
Case MetabaseUpdateProgressStage.Prepare: Debug.WriteLine("Подготовка объекта");
            
Case MetabaseUpdateProgressStage.Apply: Debug.WriteLine("Обновление объекта");
            
Case MetabaseUpdateProgressStage.Finish: Debug.WriteLine("Обновления объектов завершено");
        
End Select;
        Debug.WriteLine(
"Текущее " + Data.Current.ToString + " из " + Data.Total.ToString + " Объект " + Data.Node.Label);
        
If Data.Node.NodeType = MetabaseUpdateNodeType.Object Then
            Debug.WriteLine(
"Старый ключ объекта: " + (Data.Node As IMetabaseUpdateObjectNode).ObjectOldKey.ToString);
        
End If;
    
End Sub OnProgress;

    
Sub OnAskReflectRights(Var Cancel: Boolean);
    
Begin
        Cancel := 
True;
    
End Sub OnAskReflectRights;

End Class MyUpdateProgress;

После выполнения примера будет выполнено обновление из файла «TSDB.pef». Для обработки событий, возникающих во время обновления, используется пользовательский класс «MyUpdateProgress». Статус выполнения обновления будет выведен в окно консоли. Если в обновление включены таблицы, для которых необходимо обновить права доступа, то обновление прав будет осуществлено только на уровне платформы.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MUpdate: IMetabaseUpdate;
    Progress: MyUpdateProgress;
Begin
    MB := Params.Metabase;
    MUpdate := MB.CreateUpdate();
    MUpdate.LoadFromFile("c:\TSDB.pef", UpdateLoadMode.ulmReplace);
    Progress := New MyUpdateProgress.Create();
    MUpdate.Apply(Progress);
End Sub;

// Класс, реализующий события, которые происходят во время обновления
Public Class MyUpdateProgress: IMetabaseUpdateProgress
    
    Public Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
    Begin
    End Sub;
    
    Public Sub OnProgress(Data: IMetabaseUpdateProgressData);
    Begin
        Select Case Data.Stage
            Case MetabaseUpdateProgressStage.mupsStart:
                System.Diagnostics.Debug.WriteLine("Начало обновления объектов");
            Case MetabaseUpdateProgressStage.mupsPrepare:
                System.Diagnostics.Debug.WriteLine("Подготовка объекта");
            Case MetabaseUpdateProgressStage.mupsApply:
                System.Diagnostics.Debug.WriteLine("Обновление объекта");
            Case MetabaseUpdateProgressStage.mupsFinish:
                System.Diagnostics.Debug.WriteLine("Обновления объектов завершено");
        End Select;
        System.Diagnostics.Debug.WriteLine("Текущее " + Data.Current.ToString() + " из " +
            Data.Total.ToString() + " Объект " + Data.Node.Label);
        If Data.Node.NodeType = MetabaseUpdateNodeType.untObject Then
            System.Diagnostics.Debug.WriteLine("Старый ключ объекта: " +
                (Data.Node As IMetabaseUpdateObjectNode).ObjectOldKey.ToString());
        End If;
    End Sub;
    
    Public Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
    Begin
    End Sub;
    
    Public Sub OnAskConstraintsHandling(Node: IMetabaseUpdateNode; Details: String; Var Handling: UpdateDataConstraintsHandlingType);
    Begin
    End Sub;
    
    Public Sub OnAskReflectRights(Var Cancel: Boolean);
    Begin
        Cancel := True;
    End Sub;
    
    Public Sub OnContext(Context: IMetabaseUpdateContext);
    Begin
    End Sub;
    
    Public Sub OnResolve(Node: IMetabaseUpdateNode; Resolver: IMetabaseUpdateResolver);
    Begin
    End Sub;
    
    Public Sub OnSkip(Data: IMetabaseUpdateProgressData);
    Begin
    End Sub;
    
    Public Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
    Begin
    End Sub;
    
    Public Sub OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);
    Begin
    End Sub;
End Class MyUpdateProgress;

См. также:

IMetabaseUpdateProgress