Skip to content

Release Notes 11-2016

Wir freuen uns Ihnen im November 2016 wieder ein neues Synesty Studio Release zu präsentieren. 

Afterbuy

Neues Add-On zum automatisierten Datenaustausch mit Afterbuy

Afterbuy ist die Komplettlösung für den erfolgreichen und Multi-Channel-Vertrieb. Das neue Synesty Add-On für Afterbuy ermöglicht es externe Systeme einfach an Afterbuy anzubinden. Damit lassen sich unter anderen folgende Anwendungsfälle umsetzen:

  • Produkte importieren und exportieren
  • Import von neuen Artikeln und Update von bestehenden Artikeln
  • Automatischer Abgleich von Warenbestand, Verfügbarkeit
  • Preisupdates und Repricing automatisieren
  • Export von Auftragsdaten, um diese z.B. zu einem externen System zu übertragen (z.B. Dropshipping Lieferantenanbindung)
  • Anlegen von Aufträgen von externen Systemen in Afterbuy (z.B. Aufträge von Amazon Vendor EDI
  • Bestellwesen: Nachbestellungen zu Lieferanten übermitteln (z.B. über Veloconnect)

Zum Afterbuy Add-On

Vereinfachte XML- und JSON-Verarbeitung

Die beiden Steps JSON2Spreadsheet und XML2Spreadsheet wurden um eine neue Funktion erweitert, die das Einlesen von XML-Dateien und JSON-Dateien sehr stark vereinfacht. 

addColumns(row, node, [optional: prefix])

Die Funktion *addColumns() *fügt automatisch alle Unterelemente / Knoten eines XML- oder JSON-Fragments als Spalten in eine Zeile des Spreadsheets ein, ohne dass man explizit jede Spalte einzeln definieren muss. Für einfache XML- oder JSON-Strukturen reduziert sich der das Einlese-Skript auf schlanke 4 Zeilen. 

Vorteile:

  • man kommt schneller zum Ziel durch weniger Tiparbeit
  • man reduziert Fehler durch Tip-Fehler und sich ständig wiederholenden Code für Error-Handling

Ausserdem ist bei diesen beiden Steps das Encoding jetzt einstellbar. Während das Encoding bei XML schon teilweise automatisch erkannt wurde (da es in der XML-Deklaration stehen kann), war das bei JSON nicht der Fall. Ab jetzt kann es eingestellt werden. 
Das Default-Encoding wurde aus Gründen der Rückwärtskompatibilität auf ISO-8859-1 beibehalten.  

Neue Funktionen

SpreadsheetFilter jetzt mit dynamischer Spaltenerkennung

Die Spaltenauswahl im SpreadsheetFilter hat bisher nur funktioniert, wenn das filternde Spreadsheet aus einem SpreadsheetMapper-Step kam.
War das nicht der Fall, dann konnte man die Spalten nicht in der Spaltenauswahl sehen. 
Problem: Man musste noch einen Mapper einbauen, damit man sich im Filter komfortabel eine Bedingung zusammen klicken konnte.  

Ab jetzt geht das einfacher auch ohne vorgeschalteten SpreadsheetMapper.

Dazu muss man sich die Ergebnisvorschau des SpreadsheetFilters selbst oder des Steps anzeigen lassen, der das Input-Spreadsheet liefert. Sobald die Vorschau einmal angezeigt wurde ist die Spaltenauswahl im SpreadsheetFilter auch verfügbar.

{.image-center height=“250” image-src=“attachments/41650601/41650760.gif” unresolved-comment-count=“0” linked-resource-id=“41650760” linked-resource-version=“1” linked-resource-type=“attachment” linked-resource-default-alias=“2016-11-03_08-51-43-1.gif” base-url=“https://docs.synesty.com” linked-resource-content-type=“image/gif” linked-resource-container-id=“41650601” linked-resource-container-version=“27”}

Wozu brauche ich das?

Der SpreadsheetFilter ist einer der am meisten genutzten Steps, um Ergebnisse zu filtern. Der SpreadsheetFilter lässt sich aber nur komfortabel bedienen, wenn die Spalten bekannt sind. 
Das bisherige Verhalten war oft verwirrend und hat den Arbeitsfluss erschwert. Mit dem neuen dynamischen Verhalten sollte das leichter von der Hand gehen.
 

SpreadsheetMapper Split-Funktion erweitert

Jetzt gibt es eine Möglichkeit die Position relativ zum letzten Element zu bestimmen (z.B. zur Bestimmung des vorletzten Elements kann man schreiben last-1)

Begrenzung der Calls pro Sekunde bei URL-Abrufen und API-Calls

Die Steps SpreadsheetURLDownload und APICall haben jetzt einen neue Option rateLimitPerSecond
Damit lassen sich die Anfragen pro Sekunde limitieren. Der Step wartet zwischen den Anfragen dann automatisch so lange zwischen Anfragen, so dass das Call-Limit eingehalten wird.

Wozu brauche ich das?

Viele APIs und Webservice Schnittstellen erlauben nur eine bestimmte Anzahl Zugriffe pro Sekunde oder Minute (sog. Call-Limits), um die Systemlast zu reduzieren. D.h. der Aufrufer muss sich an diese Limits halten. Mit dieser neuen Option haben Sie nun die Möglichkeit diese Call-Limits zu konfigurieren.  

Beispiele:

  • 2 pro Sekundebedeutet 120 Aufrufe/Minute
  • 0.5 pro Sekunde bedeutet 2 Sekunden Pause nach jedem Aufruf
  • Default: Leer = Kein Limit.

Neuer Gruppiermodus im SpreadsheetMapper

Der Gruppiermodus beim Gruppieren im SpreadsheetMapper ist eine praktische Neuerung, die sich z.B. dafür eignet, zusätzlich zu jeder gruppierten Ergebniszeile, auch noch die Zeilen auszugeben, die durch die Gruppierung normalerweise zusammengefasst werden.

Wozu braucht man das?

Am besten lässt sich das an einem Beispiel erklären. 

Gegeben sein ein Spreadsheet mit 10 Zeilen (Bestandsdaten).

Durch gruppieren, können wir uns darstellen lassen, wieviel verfügbar und wieviel nicht verfügbar ist. 

Durch Gruppieren nach der Spalte verfuegbarkeit bleiben 2 Zeilen übrig (weil es bei Verfügbarkeit nur die beiden Werte ja und *nein *gibt). 
In den beiden Spalten stock und price haben wir als Aggregatfunktion “Summe aller Werte” eingestellt. D.h. der Wert in diesen Spalten sind quasi alle zusammengefassten Werte zusammenaddiert. 
Auf das Beispiel bezogen:

  • stock = die Summe aller Lagermengen, die verfuegbarkeit=ja bzw. *verfuegbarkeit=nein *haben.

  • price = die Summe aller Preise, die verfuegbarkeit=ja bzw. *verfuegbarkeit=nein *haben.

Wenn wir nun den Gruppiermodus auf “Ergebnis als oberste Zeile” stellen passiert folgendes:

Unter den beiden gruppierten Zeilen (roter Pfeil) werden jetzt zusätzlich noch die Originalzeilen angezeigt. 
Die gruppierten Zeilen enthalten das Ergebnis je nach dem welche Aggregatfunktion man eingestellt hat. 

Wann ist das sinnvoll?

Mit dieser Option haben wir uns künstlich eine neue Zeile geschaffen, die man als “Summenzeile” bezeichnen könnte. Es gibt auch noch andere Anwendungsfälle wo so etwas sinnvoll sein kann, z.B. wenn man sich aus einer ganzen Liste aus Auftragspositionen noch pro Auftrag eine “Auftragskopfzeile” erzeugen möchte. In diesem Fall würde man nach Auftragsnummer gruppieren.  

SpreadsheetFilter-Bedingungen erweitert

Es wurde die Negation für die Prüfung, ob ein Element in einer Liste enthalten ist hinzugefügt

Damit kann man Bedingungen formulieren wie z.B.:

  • Farbe darf nichtin Liste *rot,blau,grün *enthalten sein

Dateiname im SpreadsheetCSVReader 

Bei Spreadsheets, die mit dem SpreadsheetCSVReader Step durch Einlesen von Dateien erzeugt wurden, ist jetzt der darunter liegende Dateiname als Variable im SpreadsheetMapper verfügbar. 
Im SpreadsheetMapper taucht in diesem Fall ein neuer Quellwert [Dateiname] auf.  

Wozu braucht man das?

Der Wunsch nach dieser Möglichkeit wurde auf unserem Partnertag geäußert. Wenn man z.B. mit dem FTPDownload Step mehrere CSV-Dateien von einem FTP-Server herunterlädt und diese mit dem SpreadsheetCSVReader einließt, dann kann es hilfreich sein, wenn man im Spreadsheet auch den Dateinamen sieht bzw. darauf Zugriff hat. Vor allem wenn der Dateiname auch wichtige Informationen wie z.B. Auftragsnummern oder Artikelnummern enthält. 

Verbesserter Eventlog und Step-Liste

Das Flow-Eventlog enthält jetzt auch einen Link zum Projekt des Flows. 
Die Übersicht Add-Ons / Meine genutzten Steps enthält jetzt auch einen Direktlink zum Projekt und Flow sowie eine Suchfunktion.

Flow Variablen jetzt mit Datumsselektor

Ab jetzt kann man Flow-Variablen anlegen, die über eine Datums- und Uhrzeitauswahl verfügen. 
Wenn man z.B. Flows baut, deren Logik einen Datumsfilter beinhaltet (z.B. Erstellungsdatum von - bis), macht diese Neuerung die anschließende Arbeit mit diesem Flow einfacher. 
 

Diese Datumsfelder funktionieren auch bei der Verwendung des FlowTrigger Step bzw. Flow-in-Flow

Einfacherer Zugriff auf erste Zeile eines Spreadsheets

Für fortgeschritte Nutzer, die z.B. oft direkt mit REST-APIs oder Webservices arbeiten, gibt es jetzt eine einfachere Möglichkeit per Freemarker auf Werte der ersten Zeile eines Spreadsheets zuzugreifen. 

Wert der Spalte "status" der ersten Zeile: ${output@SpreadsheetUrlDownload_2.firstRow("status")!}

Hier wird der Wert der Spalte status der ersten Zeile des Spreadsheets* *ausgegeben. 

bzw.

Wert der Spalte "status" der ersten Zeile: ${output@SpreadsheetUrlDownload_2.firstRow("status", "no status")!}

Hier wird auch der Wert ausgegeben. Über den zweiten Parameter kann aber ein Default-Wert mitgegeben werden, der zurückgegeben werden soll, sollte es die Spalte Status nicht geben.

Hinweis: Der Variablenname output@SpreadsheetUrlDownload_2 ist nur ein Beispiel und unterscheidet sich je nach Step und Position des Steps. Über den Pfeil unter den Steps kommen Sie an den korrekten Variablenname.

Google Drive

  • Der Step GoogleDriveFileDownload kann jetzt auch mehrere Dateien (FILELIST) eines Ordners herunterladen
  • Der Step GoogleDriveFileUpload kann jetzt auch mehrere Dateien (FILELIST) in einen Ordner hochladen. (Update 2016/12/20: Diese Information ist leider nicht korrekt. Der GoogleDriveFileUpload unterstützt nur den Upload einer einzigen Datei)