Table of Contents

Wzorce integracji systemów zewnętrznych

MDMS umożliwia obsługę części synchronizacyjnej procesu replikacji w sposób niestandardowy. Artykuł przeprowadzi użytkownika przez konfigurację odbiorcy, zdarzenia integracji i możliwe scenariusze.

Typowe scenariusze

Tabele tymczasowe zawierające dane replikacji (Rekord wejściowy replikacji i Wiersz wejściowy replikacji) są eksponowane przez zdarzenie OnBeforeSendPackage (opublikowane w jednostce kodu ITI Record Synchronization Mgt). Wszystkie wartości są eksponowane jako tekst w formacie XML. Poniżej opisano powszechnie stosowane scenariusze.

Uwaga

Stan jest ustawiany na Przetworzone dla każdego zapisu synchronizacji obsługiwanego przez zewnętrznego odbiorcę.

Eksportowanie rekordów do pliku

Dane tabeli Rekord wejściowy replikacji i Wiersz wejściowy replikacji są serializowane (XML, JSON) i wysyłane do przechowania (Magazyn obiektów Blob Azure, sFTP...). Zewnętrzny system odczytuje pliki.

Ważne

Do wdrożenia tego scenariusza synchronizacji wymagany jest rozwój niestandardowy przy użyciu kodu AL.

Eksportowanie rekordów do aplikacji logiki Azure wyzwalanej przez protokół HTTP

Dane tabeli Rekord wejściowy replikacji i Wiersz wejściowy replikacji są serializowane (XML, JSON) i wysyłane do aplikacji logiki Azure wyzwalanej przez protokół HTTP jako treść żądania. Aplikacja logiki Azure dostarcza wiadomość do systemu zewnętrznego.

Ważne

Do wdrożenia tego scenariusza synchronizacji wymagany jest rozwój niestandardowy przy użyciu kodu AL, a także dedykowane zasoby Azure.

Konfigurowanie odbiorcy dla integracji zewnętrznej

Aby skonfigurować odbiorcę:

  1. Wybierz ikonę Lightbulb that opens the Tell Me feature, wprowadź Odbiorcy, a następnie wybierz powiązane łącze.

  2. Na stronie Odbiorcy wybierz Nowy, a następnie wypełnij poniższe pola:

    • Nr – Określ unikatowy kod służący do identyfikacji odbiorcy.
    • Opis – Określ tekst służący do identyfikacji odbiorcy.
    • Zewnętrzny - Zaznacz opcję Prawda.
  3. Zignoruj skrócone karty Usługi sieci Web i Uwierzytelnianie.

Uwaga

Praca z zewnętrznymi odbiorcami wymaga niestandardowego kodu AL, który obsługuje część synchronizacji replikacji.

Subskrybowanie do opublikowanych zdarzeń

Subskrybowanie do opublikowanych zdarzeń wymienionych poniżej jest obowiązkowe, aby proces replikacji działał.

Nazwa zdarzenia Nazwa jednostki kodu Cel
OnBeforeSendPackage ITI Record Synchronization Mgt Pobieranie zreplikowanych rekordów
OnBeforeProcessMetadata ITI Record Synchronization Mgt Pobieranie informacji o metadanych
OnBeforePurgeTables ITI Record Synchronization Mgt Pobieranie informacji o czyszczeniu tabel

Przykład: OnBeforeSendPackage

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI Record Synchronization Mgt", 'OnBeforeSendPackage', '', false, false)]
    local procedure CustomSynchronization(ReceiverNo: Code[20]; var IsHandled: Boolean; LastPackage: Boolean; ReplicationNo: Code[20];
        var TempITIReplicationInputRecord: Record "ITI Replication Input Record"; var TempITIReplicationInputLine: Record "ITI Replication Input Line")
    var
        ITIReceiver: Record "ITI Receiver";
    begin
        ITIReceiver.Get(ReceiverNo);
        IsHandled := ITIReceiver.External;

        // Take TempITIReplicationInputRecord and TempITIReplicationInputLine data and handle it in a custom way
    end;

Przykład: OnBeforeProcessMetadata

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI Record Synchronization Mgt", 'OnBeforeProcessMetadata', '', false, false)]
    local procedure ProcessMetadata(ReceiverNo: Code[20]; ReplicationNo: Code[20]; var IsHandled: Boolean)
    var
        ITIReceiver: Record "ITI Receiver";
    begin
        ITIReceiver.Get(ReceiverNo);
        IsHandled := ITIReceiver.External;

        // Custom logic is optional
        // Matadata contains information about local record edition limitations
    end;

Przykład: OnBeforePurgeTables

    [EventSubscriber(ObjectType::Codeunit, Codeunit::"ITI Record Synchronization Mgt", 'OnBeforePurgeTables', '', false, false)]
    local procedure PurgeTables(ReceiverNo: Code[20]; ReplicationNo: Code[20]; var IsHandled: Boolean)
    var
        ITIReceiver: Record "ITI Receiver";
    begin
        ITIReceiver.Get(ReceiverNo);
        IsHandled := ITIReceiver.External;

        // Custom logic is optional
        // Purging information is available on a data set line.
    end;

Usuwanie rekordu

Żądania usunięcia rekordów synchronizowanych z odbiorcami zewnętrznymi są pomijane. Pomimo tego tworzone są zapisy synchronizacji typu Usuń.

Sprawdzanie stanu rekordu

Żądania sprawdzenia stanu rekordów zsynchronizowanych z odbiorcami zewnętrznymi nie są możliwe.