In diesem Best Practice möchten wir Ihnen anhand der Entwicklung eines ACMP Connectors aufzeigen, wie Sie PowerShell-Microservices für Ihre eigenen Projekte entwickeln und nutzen können. Als Beispiel-Projekt wird zur Veranschaulichung ein Connector entwickelt, mit dem die aktuellen Informationen zur Internationalen Raumstation (ISS) aus der öffentlichen REST API https://wheretheiss.at abgerufen und über die ACMP Public API als Asset im ACMP angelegt bzw. aktualisiert werden. Ziel ist es, die Positions- und Statusdaten der ISS regelmäßig zu synchronisieren und damit immer auf die aktuellen Informationen im System zugreifen zu können.
Entwicklungsumgebung
Als Entwicklungsumgebung für die Umsetzung dieses Beispiel-Projekts benötigen Sie:
- Eine aktuelle Version von Visual Studio Code
- Eine installierte PowerShell-Erweiterung in Visual Studio Code
- Eine installierte AESB Shell
- Eine erreichbare AESB Console
Entwicklungsumgebung einrichten
Sofern Sie Visual Studio Code mit der PowerShell-Erweiterung noch nicht installiert haben, befolgen Sie zunächst die Installationsanleitung von Microsoft.
Wenn Sie Visual Studio Code mit der PowerShell-Erweiterung installiert haben, können Sie die AESB Shell in Visual Studio Code einrichten:
- Legen Sie einen neuen Ordner im Datei-Explorer an.
- Klicken Sie mit einem Rechtsklick auf den neuen Ordner, um das Kontextmenü zu öffnen.
- Wählen Sie im Kontextmenü den Eintrag Mit Code öffnen aus, damit direkt das richtige Verzeichnis geöffnet wird.
- Erstellen Sie eine neue Datei mit der Endung .psm1 (z.B. Microservice.psm1). Bei dieser Datei handelt es sich um ein PowerShell-Modul, in dem nun die Businesslogik implementiert werden kann.
- Geben Sie im Terminal den Befehl code $profile ein und bestätigen Sie mit der Eingabetaste. Nun öffnet sich die Datei Microsoft.VSCode_profile.ps1, mit der Sie das verwendete PowerShell-Profil anpassen können.
- Fügen Sie den nachfolgenden Code in die Datei Microsoft.VSCode_profile.ps1 ein. Beachten Sie, dass der angegebene Pfad für die AESB Shell korrekt ist.
- Drücken Sie Strg + S, um die Datei zu speichern.
- Starten Sie Visual Studio Code anschließend neu.
2
3
4
5
6
7
8
9
$aesbShellPath = "C:\Program Files (x86)\Aagon\AESB Shell"
[System.Environment]::CurrentDirectory = $aesbShellPath
Import-Module "$aesbShellPath\Aagon.Shell.Core.dll", "$aesbShellPath\Aagon.Sis.Sics.Powershell.Cmdlets.dll" -Prefix AESB -Force -Global
New-AESBShell
}
catch {
Write-Error "No AESBShell installed!"
}

AESB Shell in Visual Studio Code einrichten
Als Ergebnis wird in Visual Studio Code im Terminal-Bereich nun direkt die AESB Shell geladen. So können Sie ab jetzt einfach und effektiv neue Module entwickeln, um diese später in den Microservices zu nutzen.
Aufgabenteilung
Das Ziel der Aufgabenteilung ist es, die Hauptaufgabe auf kleinere Services aufzuteilen und damit zu modularisieren. Jeder Service soll dabei nur eine spezifische Funktion übernehmen. Somit wird gewährleistet, dass die verschiedenen Services unabhängig voneinander laufen.
Die Hauptaufgabe des ACMP Connector für die ISS ist es, die aktuellen Informationen zur Internationalen Raumstation (ISS) aus der öffentlichen REST API https://wheretheiss.at abzurufen und über die ACMP Public API als Asset in dem ACMP anzulegen bzw. zu aktualisieren. Anhand dieser kurzen Projektdefinition lässt sich in diesem Beispiel erkennen, dass es zwei Teilaufgaben gibt: Erstens das Abrufen der Daten von der REST API und zweitens die Integration der bereitgestellten Daten in ACMP. Für jede Teilaufgabe wird ein eigener Service bzw. Microservice definiert:
- Microservice 1: Datenabruf von der REST API
Der erste Service ruft die ISS-Daten (z.B. Position, Höhe, Geschwindigkeit) von der API ab und sendet diese an den zweiten Microservice. - Microservice 2: Integration in ACMP
Der zweite Service liest die vom ersten Service bereitgestellten Daten und überträgt sie mithilfe der Public API an den ACMP. Dabei wird entweder ein neues Asset für die ISS erstellt oder ein bestehendes Asset aktualisiert.

Schematische Darstellung der aufgeteilten Services für den ACMP Connector für ISS-Daten
Vorbereitungen
Nachdem die Hauptaufgabe aufgeteilt und die modularen Microservices für die einzelnen Aufgaben definiert wurden, ist es ggf. notwendig, das bestehende System vorzubereiten. In diesem Beispiel müssen für ACMP als das bestehende System, in das die Daten integriert werden sollen, einige Ressourcen neu angelegt werden. Das ist notwendig, damit Sie bei der anschließenden Entwicklung der Microservices direkt auf die Ressourcen zugreifen können.
Die Daten für die ISS sollen in ACMP im Asset Management einem Asset hinzugefügt werden. Da es bislang allerdings keinen Assettypen für eine Raumstation gibt, muss dieser erst angelegt werden. Außerdem werden für die Daten der Raumstation neue benutzerdefinierte Felder benötigt, die ebenfalls erst angelegt werden müssen. So können Sie die Datenfelder dann direkt bei der Erstellung des neuen Assettypen hinzufügen.
Benutzerdefinierte Felder erstellen
Für die Erfassung von den Daten der Raumstation werden vier neue benutzerdefinierte Felder benötigt: Latitude, Longitude, Altitude und Velocity. Gehen Sie folgendermaßen vor, um das benutzerdefinierte Feld Latitude anzulegen:
- Öffnen Sie die ACMP Console und navigieren Sie zur Solution System > Einstellungen > Benutzerdefinierte Felder > Assets.
- Klicken Sie mit einem Rechtsklick auf den Ordner Custom Fields und wählen Sie den Eintrag Tabelle hinzufügen aus (Umschalt+Alt+N).
- Ändern Sie den Namen der neuen Tabelle zu Spacestation und bestätigen Sie die Erstellung mit dem Button Fertig.
- Klicken Sie mit einem Rechtsklick auf die Tabelle Spacestation und wählen Sie den Eintrag Feld hinzufügen aus (Strg+N).
- Ändern Sie den Namen in Latitude und klicken Sie auf den Button Weiter.
- Legen Sie als Feldtyp die Option Text fest und ändern Sie den Wert der Feldgröße auf 50.
- Bestätigen Sie die Erstellung des Feldes mit dem Button Fertig.
- Wiederholen Sie Schritt 4 bis Schritt 7 für die weiteren Datenfelder.
- Klicken Sie abschließend in der Ribbonleiste auf den Button Speichern.

Benutzerdefinierte Felder für die ISS-Daten
Assettypen erstellen
Nun können Sie den benötigten Assettypen erstellen:
- Navigieren Sie in der ACMP Console zur Solution Asset Management > Hardware Assets.
- Klicken Sie in der Ribbonleiste auf den Button Assettypen.
- Klicken Sie im Dialogfenster auf den Button Assettypen hinzufügen.
- Wählen Sie im Dialogfenster als Zielordner Hauptebene aus und ändern Sie den Namen in Spacestation.
- Klicken Sie zwei Mal auf den Button Weiter, um Schritt 3 Benutzerdefinierte Felder zu öffnen.
- Öffnen Sie den Ordner Custom Fields und ziehen Sie die Tabelle Spacestation per Drag-and-Drop in das rechte Fenster.
- Klicken Sie auf den Button Fertig.
Der Assettyp Spacestation ist nun in der Liste verfügbar und hat die entsprechenden benutzerdefinierten Felder.

Neuer Assettyp mit benutzerdefinierten Feldern für die ISS-Daten