Nachfolgend sind die grundlegenden Funktionen sowie Aufbau der Activity beschrieben.
Zur optimalen Verwendung der Activity sind Python Grundkenntnisse von Vorteil, da Python bspw. seinen Scope über Einrückungen definiert und es dort oft zu typischen Fehlern kommt.

Grundlegender Aufbau des Skripts

Das Skript, welches vom Workflow Editor eingelesen wird ist der Einstiegspunkt jeder Python Skript Activity.
Als Benutzer kann man sich deshalb nur innerhalb dieser Klasse bewegen und auch nur auf die DQServer Objekte, die im Parameter übergeben werden, zugreifen.
Damit das Skript fehlerfrei funktioniert, ist auf eine korrekte Einrückung des Codes zu achten.

Neuer Quellcode, der in Höhe der Klasse (ohne Einrückung) definiert wird, befindet sich automatisch im Scope der PythonScriptExecute Klasse und stellt somit den äußersten Scope des kompletten Skripts dar.

Eine weitere Vorgabe, die durch die Activity definiert ist, legt der Konstruktor fest. Die Definition __init__ ist der Klassenkonstruktor mit Parametern und wird immer als erstes aufgerufen, wenn das Skript gestartet wird.
Die Parameter werden vom Workflow Editor eingespeißt und können innerhalb des Konstruktors bzw. der Klasse (z.B. Definieren neuer Methoden) aufgerufen und verwendet werden.

Im Scope der Klasse können eigene Methoden definiert und im Konstruktor bzw. in anderen Methoden aufgerufen werden. Für neue Methoden muss als erster Parameter zwingend self angegeben werden.

Möchte man Funktionen aus anderen Bibliotheken aufrufen, so genügt ein einfaches Python Import innerhalb des Konstruktors bzw. der jeweiligen Methodendefinition.

Workflow Python Activity Klasse

Class PythonScriptExecute:
  // Der Konstruktor ist der Einstiegspunkt des Skripts und kann für alle Operationen genutzt werden.
.def __init__(self, record, logger, access, context):
# ANFANG: Bereich des Nutzers
# Innerhalb des Bereichs muss auf die korrekte Einrückung geachtet werden
  <SCOPE DES KONSTRUKTORS> (2 Leerzeichen z.B. Bearbeitung von Datensätzen und Ergebnistabellen)
 <SCOPE DER KLASSE> (1 Leerzeichen z.B. Definieren neuer Methoden)
# ENDE: Bereich des Nutzers


Skriptbeispiel
Class PythonScriptExecute:
 def __init__(self, record, logger, access, context):

# ANFANG: Bereich des Nutzers

## Code, welcher um zwei Stellen eingerückt ist, wird im Klassenkonstruktor aufgerufen.
## record und access sind globale Variablen, mit welchen die Workflowdaten modifiziert werden können.
## record: Beinhaltet den Eingabedatensatz.
## access: Beinhaltet und modifiziert die Ergebnistabelle(n).
## Scope des Klassenkonstruktors

  ## Importieren der Math Library und anschließender Verwendung. (2 Leerzeichen)
  from math import sqrt
  sqrt_number = sqrt(42)

  ## Modifiziert ein Feld im Datensatz. (2 Leerzeichen)
  record["Name"] = "Freeman"

  ## Fügt mit Hilfe der unten definierten Funktion ein neues Feld zum Datensatz hinzu. (2 Leerzeichen)
  self.AddField("City", "17")

  ## Logmeldungen schreiben (Debug, Info, Warn, Error). (2 Leerzeichen)
  logger.Warn("User", "Function Name", 0, "Message");

  ## Ermöglicht Zugriff auf das komplette Workflow Kontext Objekt. (2 Leerzeichen)
  context.Record["Name"] = context.Parent.Record["Name"].upper();

  ## Erzeuge eine leere Ergebnistabelle. (2 Leerzeichen)
  resultTable = ResultTable();
  ## Füge einen neuen Datensatz zur Ergebnistabelle hinzu. (2 Leerzeichen)
  resultTable.AddRecord(WorkflowRecord(True, ['Name'], ['Gordon Freeman']));
  ## Füge die neue Ergebnistabelle dem globalen Accessobjekt hinzu und definiere einen beliebigen Namen. (2 Leerzeichen)
  access.Add("MyResultTableName", resultTable);

 ## Eine Beispielmethode, die ein neues Feld zum Datensatz hinzufügt. (1 Leerzeichen)
 def AddField(self, fieldName, fieldValue):
  # (1 Leerzeichen)
  record[fieldName] = fieldValue

# ENDE: Bereich des Nutzers

Definitionen der Parameter

Eigenschaften der Parameter


self                    beinhaltet die Klasseninstanz. Wird für das Definieren und Aufrufen von eigenen Methoden benötigt.

record               beinhaltet den Eingangsdatensatz als Dictionary<string, string> (Feldname, Wert).

logger               umfasst Funktionen für den Zugriff auf die Log Funktion des DQ Servers.

access                beinhaltet alle vorhandenen Ergebnistabellen.

context              verwaltet die komplette Datensatzhierarchie aller verwendeten Activities des Workflows über verschiedene Ebenen hinweg.


  • No labels