Zum Hauptinhalt springen

Funktionen (FX)

Eine Funktion ist ein wiederverwendbarer Unterablauf: Sie definieren einen Ablauf einmal und rufen ihn aus beliebig vielen Flows auf. Änderungen an der Funktion pflegen Sie an einer Stelle; sie wirken auf eine Aufrufstelle, sobald deren Flow erneut veröffentlicht wird.

Funktionen bestehen aus zwei Teilen:

  • der Funktion (Definition) – dem Unterablauf mit seinem Kontrakt in der Vorlagen-Bibliothek,
  • dem Transferobjekt Funktion (FX) – der Aufrufstelle in einem Flow.

Funktion (Definition)

Funktionen leben in der Vorlagen-Oberfläche („Templates & FBs", Würfel-Symbol) und mischen sich dort frei mit Vorlagen. Sie erstellen eine Funktion auf zwei Wegen:

  1. In der Vorlagen-Oberfläche über die Schaltfläche bzw. den Kontextmenüeintrag Neue Funktion (FX). Die Funktion wird im gewählten Ordner angelegt und direkt im Baum benannt.
  2. Aus dem Funktion (FX)-Transferobjekt über die +-Schaltfläche neben der Funktionsauswahl. Dabei öffnet sich der Funktionsdialog; den Zielordner wählen Sie über Ablage in.

Den Ablauf der Funktion projektieren Sie im Designer zwischen Scope-Eingang und Scope-Rückgabe. Den Kontrakt – die Ein- und Ausgabewerte mit Name und Datentyp – bearbeiten Sie über die Stift-Schaltflächen der beiden Scope-Objekte oder gesammelt im Funktionsdialog. Die Kontrakt-Elemente erscheinen als Items am Scope-Eingang bzw. an der Scope-Rückgabe – und als Ports an jeder Aufrufstelle.

Designer einer Funktion mit Scope-Eingang, Formel-&-Taschenrechner-Transferobjekt und Scope-Rückgabe

Dialog Scope-Eingang mit den Eingangswerten des Kontrakts

Funktionsdialog

Der Funktionsdialog öffnet sich beim Erstellen aus dem Aufruf-Transferobjekt (+) und beim Bearbeiten einer ausgewählten Funktion (Auge-Schaltfläche).

Funktionsdialog mit Name, Beschreibung und den Reitern Eingänge, Ausgänge und Variablen

EigenschaftBeschreibung
NameEindeutiger Name der Funktion; doppelte Namen werden abgelehnt.
BeschreibungOptionaler Text zur Dokumentation der Funktion.
Ablage inZielordner in der Vorlagen-Bibliothek (nur beim Erstellen).
Eingänge / AusgängeDer Kontrakt der Funktion: Ein- und Ausgabewerte mit Name und Datentyp.
VariablenScope-Variablen der Funktion (Name, Datentyp, Standardwert). Als Datentyp kann auch ein Plug-in gewählt werden; der Wert ist dann der Name der gewünschten Anbindung.
Ablauf öffnenÖffnet den Designer der Funktion.

Kontrakt ändern: Das Entfernen eines Kontrakt-Elements erfordert eine zweite Bestätigung; der Dialog nennt dabei die aufrufenden Flows (bis zu fünf, darüber hinaus zusammengefasst). Die Ports der Aufrufstellen werden beim nächsten Bearbeiten exakt aus dem Kontrakt neu erzeugt; gleichnamige Items bleiben dabei erhalten.

Löschen: Eine Funktion, die von Aufrufstellen referenziert wird, kann weder im Vorlagen-Baum noch im Aufruf-Transferobjekt gelöscht werden; der Löschversuch nennt die aufrufenden Flows.

Produktivschalten: Die Werkzeugleiste des Designers bietet Alle Instanzen produktiv schalten – sie veröffentlicht alle Flows, die die Funktion aufrufen (aktiv, sobald Aufrufstellen existieren).

Transferobjekt „Funktion (FX)"

Erstellen Sie das Objekt innerhalb des Flows wie beschrieben und öffnen Sie den Editor per Doppelklick.

Editor des Funktion (FX)-Transferobjekts mit Funktionsauswahl und dem Reiter Eingänge

EigenschaftBeschreibung
FunktionAuswahl der aufzurufenden Funktion. Daneben: Anlegen (+), Ansehen/Bearbeiten (Auge) und Löschen (Papierkorb, nur ohne Aufrufstellen möglich); ohne ausgewählte Funktion sind Bearbeiten und Löschen deaktiviert.
EingängeAus dem Kontrakt übernommen. Versorgung pro Eingang: verdrahtetes Item oder fester Wert in der Spalte Standardwert; ein verdrahteter Wert hat Vorrang. Bleibt beides leer, ist der Eingang zur Laufzeit leer – der Editor weist darauf hin. Werte werden in den Kontrakt-Datentyp umgewandelt; nicht umwandelbare Werte lassen den Transfer fehlschlagen.
AusgängeAus dem Kontrakt übernommen. Liefert die Funktion für einen Ausgang keinen Wert, greift dessen Standardwert; ohne Standardwert bleibt der Ausgang leer.
VariablenBelegung der Funktionsvariablen: statischer Wert (Ersetzung beim Veröffentlichen) oder verdrahteter Eingang (Ersetzung bei jedem Aufruf).

Mit der Auswahl einer Funktion werden die Ports des Objekts exakt aus deren Kontrakt erzeugt (Name und Datentyp); Items außerhalb des Kontrakts entfallen. Jeder Aufruf unterliegt dem Zeitlimit für Unterabläufe.

Der Diagramm-Knoten trägt die Aktionsleiste Funktion öffnen, mit der Sie die Funktion in einem neuen Reiter öffnen.

Funktion (FX)-Knoten im Flow mit der Aktionsleiste „Funktion öffnen" und den Kontrakt-Ports

Verschachtelung und Ringverweise

Funktionen dürfen andere Funktionen aufrufen – auch innerhalb der Zweige eines Bedingung (IF)-Transferobjekts. Es gilt die maximale Aufruftiefe für Unterabläufe. Ringverweise sind nicht erlaubt: Eine Funktion, die sich direkt oder über andere Funktionen hinweg selbst aufrufen würde, wird bereits bei der Auswahl in der Funktionsliste bzw. beim Einfügen aus der Zwischenablage mit einer Meldung abgelehnt, die die Verweiskette nennt.

Änderungen ausrollen

Beim Veröffentlichen erhält jede Aufrufstelle ihre eigene Ausführungskopie der Funktion. Daraus folgt:

  • Eine geänderte Funktion wirkt auf eine Aufrufstelle erst, wenn deren Flow erneut veröffentlicht wird. Nicht neu veröffentlichte Flows laufen unverändert weiter.
  • Aufrufstellen beeinflussen sich zur Laufzeit nicht gegenseitig – auch bei parallelen Aufrufen derselben Funktion aus verschiedenen Flows.

Export und Import

Beim Datei-Export eines Flows mit Funktion (FX)-Transferobjekten werden die referenzierten Funktionen mit exportiert. Beim Import bleiben die Zuordnungen erhalten. Existiert die Funktion im Zielprojekt bereits, entscheidet die Import-Option: Importierte Flows umbenennen legt die importierte Funktion als eigenständige Kopie an, der die importierten Aufrufer folgen; Existierende überschreiben ersetzt die vorhandene Funktion.

Beim Kopieren eines Funktion (FX)-Transferobjekts über die Zwischenablage in ein anderes Projekt wird die Funktion nicht mitkopiert – nutzen Sie dafür den Datei-Export.