In Unternehmen wird es immer wichtiger, Prozesse zu automatisieren, um Zeit für die wichtigen Dinge zu gewinnen. Hierbei gilt es sich zunächst auf die “QuickWins” zu konzentrieren, damit du ein optimales Kosten-/Nutzen-Verhältnis erreichst. Prüfe also zunächst, welche Tätigkeiten häufig auftreten und welche besonders viel Zeit in Anspruch nehmen.
Anschließend kannst du dir Gedanken zu den Prozessen machen, welche es zu automatisieren gilt. Eine stichpunktartige Ablaufbeschreibung der Prozesse kann die spätere, technische Umsetzung wesentlich vereinfachen.
Die Enterprise Service Management Lösung der Matrix42 bietet die Möglichkeit mithilfe von Workflows auf einfachem Wege solch eine Automatisierung zu erreichen. Dennoch gibt es erweiterte Möglichkeiten wie etwa die Verwendung von PowerShell-Skripten.
In manchen Situationen kann es notwendig sein, Array-Objekte als Ein- bzw. Ausgabeparameter zu übergeben. Genau das beschreibt diese kurze Anleitung.
Zusätzlich möchte ich dir grundlegende Informationen zur PowerShell-Activity mitgeben und wie du Felder in der Legacy als Pflichtfeld markieren kannst
1. Die Activty “Invoke PowerShell”
Die PowerShell-Activity findest du im Workflow Studio ganz einfach über die Suche auf linken Seiten. Diese kannst du per Drag-and-drop in den Flow ziehen, um sie in den Prozess einzubinden.
Um die Einstellungen der Activity zu bearbeiten, musst du diese einfach anklicken. Auf der rechten Seite sind die folgenden Eigenschaften konfigurierbar:
- Parameters
Ein- und ausgehende Parameter, welche aus der param-Section deines PowerShell-Scripts übernommen werden - Persist
Steuert, ob die PowerShell-Sitzung nach Beendigung des Skripts offen gehalten werden soll, damit ein spätere Activity diese weiter nutzen kann - Run on Application Server
Sofern aktiviert, wird der Workflow nur auf dem Matrix42 Worker des Anwendungsservers – siehe Matrix42 Worker – ausgeführt. Das kann hilfreich sein, um Modulabhängigkeiten sowie Firewall-Konfigurationen zu vereinfachen - Script
Beinhaltet das eigentliche Skript, welches im Prozess ausgeführt werden soll. Dabei kann auf die ein und ausgehenden Parameter zugegriffen werden - Variables
Diese sind mit den Parametern zu vergleichen. Vorteil der Parameter ist die Möglichkeit der Vorbelegung, sofern die param-Section im Skript bereits vorhanden ist.
Zusätzlich gibt es zwei Eigenschaften, welche für den Output des Skript’s relevant sind:
- Result
Übergibt das zuletzt ausgegebene Objekt an die gewählte Variable - TypeArgument
Definiert den Typ der unter “Result” angegebenen Variable an
Nun hast du erst einmal grundlegende Informationen zur Activity.
2. Der Workflow
Der hier gezeigte Workflow soll lediglich die Verwendung von PowerShell-Arrays zeigen und erfüllt keinen tieferen Zweck. Legen wir direkt einmal los.
Als Erstes hinterlegen wir das Beispiel-Skript:
#PowerShell-Array initialisieren
$test = @()
# Erstellung des ersten Custom-Objektes
$obj = New-Object PSCustomObject
$obj | Add-Member -type NoteProperty -Name Name -Value "Musterfrau"
$obj | Add-Member -type NoteProperty -Name Firstname -Value "Maxi"
# Objekt zum Array hinzufügen
$test += $obj
# Erstellung des ersten Custom-Objektes
$obj2 = New-Object PSCustomObject
$obj2 | Add-Member -type NoteProperty -Name Name -Value "Mustermann"
$obj2 | Add-Member -type NoteProperty -Name Firstname -Value "Max"
# Objekt zum Array hinzufügen
$test += $obj2
# Ausgabe des Array's zur Übergabe an die Variable an "Result"
$test
Code-Sprache: PowerShell (powershell)
Damit die Information aus der Eigenschaft “Result” in die Variable “InvokePowerShell_Result” geschrieben wird, muss diese Variable zunächst erstellt und anschließend verknüpft werden:
Die zuvor angelegte, verknüpfte Variable “InvokePowerShell_Result” kannst du nun z.B. in einem ForEach verwenden, um jedes Element einzeln im Workflow zu verarbeiten:
Dem ForEach-Element kannst du noch einen sprechenden Variablennamen für das Item zuweisen (hier “record”):
Anschließend kannst du wie folgt auf die einzelnen Element-Eigenschaften innerhalb des ForEach zugreifen (hier die Eigenschaft “Name” bzw. “Firstname”):
Verwendungszwecke gibt es sicher viele. Mit diesem Artikel hast du nun das notwendige Handwerkszeug erlangt und kannst dich nun im Workflow-Universum der Matrix42 austoben.
Und falls du dich noch mehr austoben willst, lerne hier, wie du mit Filtern in der UUX nach doppelten Datensätzen suchen kannst 😉