Inhaltsverzeichnis
Variablen
Aktualisiert von Sebastian Bartsch
Ein zentraler Bestandteil jeder Konfiguration sind die Variablen. In den Variablen laufen sämtliche Informationen aus dem gerade verarbeiteten Dokument zusammen. Ihr primärer Zweck ist es Informationen bereitzustellen und aufzubereiten, um diese für die Indexierung eines Dokuments zu verwenden.
In diesem Artikel möchten wir Ihnen grundlegendes und fortgeschrittenes Wissen zu den Variablen vermitteln.
Die Variablenübersicht
Standardmäßig auf der rechten Seite des Konfigurationsdialoges befindet sich die Variablenübersicht. Hier finden Sie, gruppiert in Kategorien (1), sämtliche Variablen die durch das Quelldokument, Werkzeuge und Aktionen, oder von Ihnen selbst hinzugefügt wurden (2).
Fährt man mit der Maus über eine Variable erscheint ganz rechts ein Icon (3) zur Anlage einer neuen Variable, die auf dieser basiert. Unten gehen wir näher auf diesen Punkt ein.
Alternativ kann über die Schaltfläche am unteren Fensterrand (4) eine neue Variable ohne Bezug auf eine System-Variable angelegt werden.
Kategorien
Jede Variable wird einer Kategorie zugeordnet. Diese Kategorie wird durch StorageRobot bestimmt und kann nicht verändert werden. So werden beispielsweise die Werte von ausgelesenen Barcodes einer Variable der Kategorie Barcode zugeordnet, während Informationen zu einer Datei aus dem Dateisystem in der Kategorie File zu finden sind. Diese Variablen werden auch als System-Variablen bezeichnet.
Eine Sonderrolle nimmt die Kategorie My ein. Unter dieser vereinen sich alle Variablen, die durch den Benutzer angelegt wurden. Allerdings finden Sie direkt unter dem Eintrag der My-Kategorie nur Variablen, die nicht auf einer System-Variable basieren. Mehr dazu später.
Der Variablenname
Der Variablenname setzt sich aus der Kategorie gefolgt von einem Unterstrich und dem eigentlichen Namen zusammen. Innerhalb einer Kategorie muss der Name eindeutig sein.
Wird eine Variable innerhalb einer Konfiguration verwendet, dann werden Sie diese in zwei Formen vorfinden. In einer grafisch aufbereiteten Form oder in Textform:
Eine Sonderform des Variablennamens bezieht sich auf Variablen, die eine Liste / Array von Werten enthalten. Hierzu später mehr.
Dem bereits bekannten Variablennamen wird noch ein sogenannter Indexer hinzugefügt, um auf die einzelnen Zeilen der Liste zuzugreifen. Der Indexer beginnt mit einem Doppelpunkt gefolgt von der Zeilennummer:
In Textform würden diese beiden Variablen folgendermaßen aussehen: {My_Dateiname:0} {My_Dateiname:1}
Verwenden von Variablen
Im einfachsten Fall verwenden Sie direkt die System-Variablen. Ordnen Sie den ausgelesenen Wert eines Barcodes beispielsweise direkt dem entsprechenden DocuWare Indexfeld zu.
Dies geschieht entweder per Drag & Drop aus der Variablenübersicht an die Stelle wo die Variable verwendet werden soll. Alternativ kann der Variablenname auch einfach direkt eingetippt werden. Achten Sie dabei auf die geschweiften Klammern und Groß-/Kleinschreibung.
In manchen Fällen kann es vorkommen, dass nicht der gesamte Wert der System-Variable verwendet werden soll. Beispiele dafür sind z.B. der Swiss-QR Barcode, der viele Informationen über das Dokument enthält, oder ein Dateiname in dem die relevante Informationen neben anderen Daten kodiert wurde. Für solche Fälle muss eine My-Variable von einer System-Variable abgeleitet werden.
Eigene Variablen erstellen
Im folgenden Fall enthält der Dateiname der verarbeiteten Dokumente Informationen über die Belegart und eine Belegnummer. Der Dateiname hat den Aufbau: Belegart-Belegnummer.pdf
Da beide Informationen nur separat verwendet werden können soll der Dateiname anhand des Bindestrichs getrennt werden.
- Klicken Sie auf das Icon Variable erstellen rechts neben dem Wert der Variable FileNameWithoutExtension in der Kategorie File
- Es öffnet sich ein neues Fenster. In diesem Fenster werden die Eigenschaften der neuen Variable definiert.
- Geben Sie im Feld Name
Dateiname
ein - Öffnen Sie das DropDown Makro und wählen hier den Eintrag Segmentierung
- Tragen Sie in der Tabelle darunter in der Zeile delimiter einen Bindestich
-
ein. - Klicken Sie auf Test und betrachten den Wert im Feld Ausgabewert
Das Ergebnis dieser Operation ist eine Liste mit den Einzelwerten INV und 202304711
- Geben Sie im Feld Name
- Bestätigen Sie mit OK
Spannender als die Vorschau im Feld Ausgabewert ist der neue Eintrag, den Sie nun in der Variablenübersicht sehen. Unterhalb der Variable FileNameWithoutExtension in der Kategorie File wurde die gerade erstellte Variable Dateiname angelegt.
Unter der System-Variable FileNameWithoutExtension (1) wurde die neue Variable Dateiname (2) eingeordnet. Unter dieser befindet sich je ein Eintrag pro Listenelement (3).
Sobald Sie den Eintrag der Variable Dateiname erweitern sehen Sie eine Auflistung sämtlicher Werte. Die einzelnen Werte können jetzt, wie jede andere Variablen auch, an den benötigten Stellen zugeordnet werden.
Fortgeschrittene Techniken
Im vorherigen Abschnitt haben wir bereits das Makro Segmentierung kennengelernt. Neben diesem Standardmakro bringt StorageRobot noch weitere Makros mit. Darunter zum Beispiel eines zum extrahieren von Textteilen oder für die Konvertierung von Datumswerten.
In seltenen Fällen kommt es vor, dass diese Standardmakros nicht ausreichen um den Wert einer Variable bereitzustellen. Dafür wurde in StorageRobot die Möglichkeit zur Erstellung von eigenen Makros implementiert.
Das hier gezeigte Beispiel stammt aus der Praxis. Es zeigt die Möglichkeiten der Makros und gleichzeitig eine deutliche Reduzierung des Administrationsaufwandes.
Ausgangssituation
Über eine System-Variable wird eine Liste von Nummern getrennt durch ein Komma bereitgestellt. In dieser Liste soll nun eine Teilmenge in ein DocuWare Indexfeld geschrieben werden. Die einzelnen Nummern im Indexfeld sollen mit einem Leerzeichen getrennt werden.
Lösung ohne eigenes Makro
Der klassische Lösungsansatz ist, dass eine neue Variable von der System-Variable abgeleitet wird und diese das Makro Segmentierung ausführt. Anschließend werden die benötigten Einträge aus der Liste dem Indexfeld zugewiesen.
Dieses Beispiel ist vereinfacht dargestellt. Tatsächlich wurden hier mehr als 20 Einträge hinzugefügt. Der Administrationsaufwand bei Änderungen ist enorm. Auch leidet die Übersichtlichkeit bei so vielen Variablen.
Lösung mit einem eigenen Makro
Dank der Möglichkeit, eigene Makro in der Programmiersprache Python (StorageRobot verwendet die etwas eingeschränkte Variante IronPython) zu implementieren, kann diese Aufgabe stark vereinfacht werden.
nummern = in_value.split(",")
indexes = [0,2,4,8]
result = ""
for index in indexes:
result += nummern[index] + " "
return result.strip()
- Die globale Variable
in_value
enthält den Wert der Variable auf den die eigene Variable basiert. In diesem Fall lautet der Wert1,2,3,4,5,6,7,8,9,10
- Es wird eine weitere Variable
indexes
definiert, welche die Position der Nummern enthält und dem Indexfeld zugewiesen werden soll. - Über eine Schleife werden nun die Nummern zusammengestellt.
- Und anschließend mittels return als Ergebnis des Makros festgelegt.
Über das Makro haben Sie nun bequem die Möglichkeit die zu verwendenden Nummern anzupassen. Ebenso schnell ist das Trennzeichen angepasst mit dem der Originalwert getrennt wird, oder mit welchem Zeichen der Wert im Indexfeld getrennt werden soll.
Die Zuordnung zum Indexfeld reduziert auf die nur eine Variable.
Anlegen einer Variable mit benutzerdefiniertem Makro
- Legen Sie, wie oben beschrieben, eine neue Variable basierend auf einer System-Variable an
- Wählen Sie bei Makro den Eintrag Benutzerdefiniertes Makro aus
Der Dialog wechselt in den Modus zur Skripteingabe.Um wieder zur Makroauswahl zurückzukehren, klicken Sie auf die Schaltfläche Assistent. Achtung! Bei dieser Aktion geht das Makro verloren! - Ersetzen Sie eventuell vorhandenen Code durch das Skript.
- Sobald Sie auf Test klicken wird das Makro ausgeführt. Anhand des Status oberhalb der Test-Schaltfläche erkennen Sie, ob alles OK ist, oder ob Fehler aufgetreten sind.
- Im Ausgabewert wird das Ergebnis des Makros angezeigt
- Sobald der Dialog mit OK geschlossen wird steht die Variable, wie oben beschrieben, zur Verfügung.