single.php
< Beitrag von Roland Bücker

Unterwegs in die Cloud – Add-Ins in Dynamics NAV

Auf dem Weg in die Cloud entwickelt sich Microsoft Dynamics NAV  von einer grauen Maus zu einem modernen Enterprise Resource Planning System (ERP-System) mit ansprechendem Look & Feel. Schau dir an, wie Add-Ins in Dynamics NAV fit werden für’s Web!

Am 1. Dezember 2017 wurde die Version 2018 von Microsoft Dynamics NAV veröffentlicht, die mit dem Nachfolger Dynamics 365 „Tenerife“ unaufhaltsam in die Cloud führt – über den steinigen Weg des Technologiewechsels und allen Herausforderungen, die mit diesem Wechsel verbunden sind.

Der Weg ins Web setzt eine 3-Tier Architektur voraus. Für Dynamics NAV bedeutet dies: Lösungen, die im Role Tailored Client (RTC)  einfach über clientseitige Dynamic Link Libraries (DLL) umsetzbar waren, müssen nun zwingend auch im Web laufen. Und das heißt: viel Arbeit für die NAV Entwickler!

Fit für’s Web: Add-Ins in Dynamics NAV

Am Beispiel eines Add-In im NAV RTC soll gezeigt werden, wie NAV für das Web fit gemacht werden kann. Beliebt ist die Funktion Dateien per Drag & Drop an Belege anzuheften, wobei eine beliebige Datei im RTC oder im Browser auf einem definierten Feld fallengelassen, automatisch auf den Dynamics NAV Server hochgeladen und in der Datenbank abgelegt wird.

Technisch sieht dies grob so aus:

Add-Ins in Dynamics NAV

Um webtauglich zu sein, kommuniziert Dynamics NAV über das „NAV Extensibility Framework“ mit JavaScript und umgekehrt. Aber genug der Theorie, ran ans Werk!

Vorbereitung der Entwicklungsumgebung

Schritt 1: In Visual Studio wird ein Projekt zur Entwicklung einer Klassenbibliothek angelegt.

Schritt 2: Für den JavaScript-Bereich wird eine Ordner-Struktur benötigt. In einem Add-In-Ordner wird jeweils ein Ordner angelegt für Ressourcen, für Skripte und für Stylesheets inkl. entsprechender Dateien:

  • Der Ordner „Image“ enthält ein Bild für die Oberfläche.
  • Der Ordner „Script“ enthält den Code. Zur Entwicklung wird TypeScript verwendet, daher ist eine .ts Datei vorhanden, die von Visual Studio automatisch in eine .js Datei umgewandelt wird (TypeScript Compiler).
  • Im Ordner „StyleSheet“ liegt eine .css Datei zur Gestaltung der Oberfläche.

Schritt 3: Eine Manifest.xml wird angelegt, die das Add-In deklarativ in XML beschreibt.

Schritt 4: Abschließend benötigen wir eine Signierung für die Assembly.

Add-Ins in Dynamics NAV

 

Wenn die Projektmappe ungefähr so aussieht wie auf dem Bild oben, kann es eigentlich schon losgehen. Diese 3 „Postbuild-Maßnahmen“ vereinfachen aber die Entwicklung:

  1. Ausgabe des Signaturtoken, der benötigt wird, um das Add-In in NAV zu registieren. Dazu kann ein PowerShell Skript genutzt werden.Add-Ins in Dynamics NAV
  2. Erstellung einer Zip-Datei, mit der Add-In-Ordnerstruktur.
  3. Die erstellte DLL wird in den Add-In-Ordner von NAV kopiert.

    Add-Ins in Dynamics NAV

Der C# Part

Zunächst verweisen wir über „using“ auf das Microsoft Dynamics Extensibility Framework.

Dann beschreiben wir über ein Interface alle in NAV zu nutzenden Methoden und Events. Wir benötigen ein Event zur Initialisierung sowie ein Event zum Fallenlassen einer oder mehrerer Dateien (Drop).

Dem Drop-Event geben wir noch unsere Datei zusammen mit einigen Metadaten mit. Der Parameter „data“ beinhaltet dabei die Datei. Diese wird webtauglich als Base64 String übertragen, daher wird hier der Typ „String“ verwendet:

Manifest.xml, der Einstiegspunkt

Weiter geht es mit der Manifest.xml, die als Einstiegspunkt dient. Die Manifest.xml wird so gefüllt:

  • Im Knoten „Resources“ liegen die Referenzen auf unsere zuvor angelegten Dateien.
  • Der Knoten „Script“ dient als Einstiegspunkt für das Add-In.
  • Mit „initializeControlAddIn“ rufen wir JavaScript Code zur Initialisierung des Add-In auf.
  • Mit „InvokeExtensibilityMethod“ wird NAV angerufen und der Trigger „ControlAddInReady“ ausgeführt.
  • Im unteren Bereich wird noch die Größe festglegt.

Etwas für die Optik: Die CSS Datei

Die CSS Datei enthält ein paar Eigenschaften zur Verschönerung des Add-Ins.

Wir ziehen einen Rahmen um die Drop-Fläche und erstellen einen Hover-Effekt, um dem Benutzer zu signalisieren, dass er die Fläche getroffen hat und die Datei loslassen kann.

Der TypeScript Code

Zunächst legen wir die Klassen „Upload“ und „UploadQueue“ an.

Upload beinhaltet die Datei mit einigen Metadaten.

Um gleichzeitig mehrere Dateien hochladen zu können, legen wir den Upload in einer Warteschlange ab.

Die dort abgelegten Uploads werden über die Methode „StartSendData“ in einen Base64 String gewandelt und über das Extensibility Framework an NAV gesendet.

Die Methode „initializeControlAddIn“ initialisiert unser Add-In. Hier ist ein entsprechender HTML Code hinterlegt, in dem auch das Bild eingebettet ist.

Weiterhin wird über die Methode „pageLoaded“ das Drop Event registriert.

Wenn Dateien auf das Add-In fallengelassen werden, werden diese in der Warteschlange abgelegt und anschließend gesendet.

Der NAV Part

In NAV benötigen wir eine Tabelle, in der wir ankommende Dateien inkl. der Metadaten ablegen und speichern.

Die eigentliche Datei wird in einem BLOB Feld gespeichert.

Add-Ins in Dynamics NAV

Anschließend erstellen wir eine Page, auf der wir das Add-In anzeigen möchten.

Hier bietet sich eine Page vom Typ CardPart an, die wir als FactBox nutzen können.

Add-Ins in Dynamics NAV

In der Eigenschaft „ControlAddIn“ des Feldes „AddIn“ hinterlegen wir das Add-In.

Jetzt sollten im C/AL Editor auch die zuvor definierten Events als Trigger erscheinen:

Add-Ins in Dynamics NAV

Der Trigger „FileDrop“ nimmt eine Datei nach einem Drop Event in JavaScript entgegen.

Die Metadaten werden zunächst in den entsprechenden Feldern abgelegt.

Anschließend wird die ankommende Datei im Base64 String Format in NAV wieder decodiert (Funktion: „Base64Decode“) und im BLOB Feld abgelegt.

Wenn das Add-In jetzt in NAV registriert ist, kann es getestet werden.

Add-Ins in Dynamics NAV

Beim Start der Page sollte das erstellte Add-In angezeigt werden:

Add-Ins in Dynamics NAV

Wenn man eine Datei fallen lässt, wird diese aufgenommen und nach NAV übertragen.

Add-Ins in Dynamics NAV

Das Add-In kann jetzt z. B. als Klassiker zum Anhängen von Dateien an Belege benutzt werden.

Add-Ins in Dynamics NAV

Das Add-In kann man noch aufhübschen und mit vielen Ideen erweitern.

Viel Spaß beim Nachbauen, Implementieren und Weiterentwickeln!

Folgen
X

Folgen

E-mail : *
Kategorie: Cloud | Schlagwörter: | Kommentare: 0

Beitrag kommentieren

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.