OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
Node. Объект обновления.
Links. Коллекция отсутствующих ссылок.
Метод OnNullLinksResolve реализует событие, возникающее при наличии ссылок, которые отсутствуют в репозитории назначения.
Для выполнения примера предполагается наличие файла обновления update.perfx, содержащего объект с ключом «1286399», который при обновлении будет содержать отсутствующие ссылки.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
MB: IMetabase;
MUpdate: IMetabaseUpdate;
Progress: MyUpdateProgress;
UpdateCxt: IMetabaseUpdateContext;
Begin
MB := MetabaseClass.Active;
MUpdate := MB.CreateUpdate;
MUpdate.LoadFromFileNF("C:\update.pefx");
Progress := New MyUpdateProgress.Create;
UpdateCxt := MUpdate.CreateUpdateContext;
UpdateCxt.RegisterNullRemapping(1286399);
MUpdate.ApplyEx(Progress, UpdateCxt);
End Sub Button1OnClick;
Class MyUpdateProgress: UpdateProgress
Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
Var
Link: IMetabaseUpdateNullLink;
i: Integer;
MB: IMetabase;
Begin
MB := MetabaseClass.Active;
Debug.WriteLine("OnNullLInks");
For i := 0 To Links.Count - 1 Do
Link := Links.Item(i);
Debug.WriteLine("Id: " + Link.Id);
Debug.WriteLine("Name: " + Link.Name);
Debug.WriteLine("Key: " + Link.Key.ToString);
Debug.WriteLine("Description: " + Link.Description);
Debug.WriteLine("ClassId: " + Link.ClassId.ToString);
Debug.WriteLine("---");
End For;
End Sub OnNullLinks;
End Class MyUpdateProgress;
После выполнения примера в консоль будет выведена информация об отсутствующих ссылках.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Public Class Program
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MUpdate: IMetabaseUpdate;
Progress: MyUpdateProgress;
UpdateCxt: IMetabaseUpdateContext;
Begin
MB := Params.Metabase;
MUpdate := MB.CreateUpdate();
MUpdate.LoadFromFileNF("C:\\update.pefx", UpdateLoadMode.ulmReplace);
Progress := New MyUpdateProgress(MB);
UpdateCxt := MUpdate.CreateUpdateContext();
UpdateCxt.RegisterNullRemapping(1286399);
MUpdate.ApplyEx(Progress, UpdateCxt);
End Sub;
End Class;
Class MyUpdateProgress: IMetabaseUpdateProgress
_MB: IMetabase;
Public Constructor MyUpdateProgress(MB: IMetabase);
Begin
_MB := MB;
End Constructor;
Public Sub OnResolve(Node: IMetabaseUpdateNode; Resolver: IMetabaseUpdateResolver);
Begin
End Sub OnResolve;
Public Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
Begin
End Sub;
Public Sub OnAskConstraintsHandling(Node: IMetabaseUpdateNode; Details: String; Var Handling: UpdateDataConstraintsHandlingType);
Begin
End Sub;
Public Sub OnAskReflectRights(Var Cancel: Boolean);
Begin
End Sub;
Public Sub OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);
Begin
End Sub;
Public Sub OnContext(Context: IMetabaseUpdateContext);
Begin
End Sub;
Public Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
Begin
End Sub;
Public Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
Var
Link: IMetabaseUpdateNullLink;
i: Integer;
Begin
System.Diagnostics.Debug.WriteLine("OnNullLInks");
For i := 0 To Links.Count - 1 Do
Link := Links.Item[i];
System.Diagnostics.Debug.WriteLine("Id: " + Link.Id);
System.Diagnostics.Debug.WriteLine("Name: " + Link.Name);
System.Diagnostics.Debug.WriteLine("Key: " + Link.Key.ToString());
System.Diagnostics.Debug.WriteLine("Description: " + Link.Description);
System.Diagnostics.Debug.WriteLine("ClassId: " + Link.ClassId.ToString());
System.Diagnostics.Debug.WriteLine("---");
End For;
End Sub;
Public Sub OnProgress(Data: IMetabaseUpdateProgressData);
Begin
End Sub;
Public Sub OnSkip(Data: IMetabaseUpdateProgressData);
Begin
End Sub;
End Class;
См. также: