Insert-Methode erweitern mit Hilfe eines Chain of command in einer Augmentation-Klasse

In diesem Beitrag möchte ich zeigen, wie man mit Hilfe von Chain of command Pre- oder Post-Events ablösen kann.

Nachdem man sich das gewünschte Projekt erstellt/geöffnet hat kann man über das Kontextmeü des Projektes unter Add > New item eines neues Objekt vom Typ Class erstellen. Dieser Klasse gibt man noch einen Namen, wichtig dabei ist die Endung _Extension.

Screenshot

Danach steht eine einfache Klasse zur Verfügung, die sich wie folgt darstellt

class FMCustomer_DMO_Table_Extension
{
}

Nun ändern wir über das Attribut ExtensionOf die Klasse, ergänzen sie um den Modifier final. Solcherart gekennzeichnete Klassen werden auch als Augmentation-Klassen bezeichnet.

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
}

Nun wechseln wir wieder in den Application Explorer, suchen uns dort jene Tabelle die wir erweitern wollen und erweitern des Methods-Knoten. Nun stellen wir uns auf die jeweilige Methode, im Beispiel die insert(), und wählen über das Kontextmenü die Option View Code aus.
Dadurch öffnet sich die Methode im Arbeitsbereich aus dem wir die Definition der Methode in die Zwischenablage kopieren.

public void insert()
{
}

Diesen Code fügen wir in der Extension-Klasse ein.

Danach fügen wir den Aufruf der Original-Methode in unseren Code ein

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
    public void insert()
    {
       next insert();
    }
}

Anschließend kann man vor dem Aufruf von next() bzw. nach diesem Aufruf entsprechenden Code einfügen. Je nach Position dieses Codes haben wir sozusagen eine Pre- oder Post-Eventhandler abgebildet.

Im konkreten Beispiel wird vor dem Aufruf der Original insert()-Methode ein Feld ggf. mit einem Standardwert befüllt.

[ExtensionOf(tableStr(FMCustomer))]
final class FMCustomer_DMO_Table_Extension
{
    public void insert()
    {
        if ( !this.Email)
        {
            this.Email = "someone@somewhere.com";
        }

        next insert();
    }
}

Dieser Beitrag wurde basierend auf der Version 7.3 mit Platform-Update 12 und installiertem Fleet Management Sample Application erstellt.
 

Dieser Beitrag bezieht sich auf die Version:
Dynamics 365 for Finance and Operations

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
Juni 2020
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2020 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu