Das DOIT (Workflow) Modul ist das zentrale Modul das die Durchführung von Aufgaben steuert.
Für das Modul können Aufgaben-Listen (Tasks) mit Hilfe von YAML-Konfigurations-Dateien definiert werden.
- Jedes dieser Tasks kann beliebig viele Unteraufgaben (Steps) enthalten die nacheinander abgearbeitet werden.
- Bei jedem Step wird mindestens 1 Funktion (teils automatisch oder vordefiniert) aufgerufen.
- Jeder Step kann aus vielen gleichen Funktionsaufrufen bestehen.
Z.B. führe eine Aufgabe für alle Artikel, Kategorien, Attribute, Kunden etc. durch.
Es können sehr komplexe Tasks (Workflows) für unterschiedlichste Aufgaben definiert werden die nacheinander abgearbeitet werden. Einzelne Steps können aktiviert oder deaktiviert werden. Sie können auch auf Funktionen beliebiger Klassen zugreifen.
Das DOIT Modul gibt es in einer Light und Professional Version. Die Light-Version wird für Ausführung von DOIT Modulen benötigt. Die Professional Version ermöglicht die Entwicklung eigener DOIT-Module und ist sehr leistungsfähig.
Diese Dokumentation beinhaltet hauptsächlich die Funktionsweise der Professional Version.
DOIT Tasks sind im Shop Admin-Bereich in einem DropDown (Admin-Bereich / Service / DOIT) auswähl-und aufrufbar.
DOIT Module
Mit Hilfe des DOIT Basis Moduls können die Steps unterschiedlichster DOIT Module beliebig miteinander verknüpft werden.
Zurzeit existieren die DOIT Module:
DOIT Attributes
Dieses Modul erstellt Attribute anhand vorher einer YAML-Konfiguration definierten Regeln.
DOIT Pictures
Automatische Bildoptimierung und SEO Optimierung von Bildern
DOIT Import
Sehr flexibler Datenimport
DOIT Content
Sehr umfangreiches Modul für die Generierung von Text anhand von definierbaren Bedingungen.
Beispiele:
Generiere einen Text wenn ein Artikel von Hersteller X ist.
Generiere Text wenn das Attribut Y vorhanden ist
Generiere Text wenn das Attribut X existiert und der Wert des Attributs Z ist
Gebe Text aus zu allen im Moment nicht lieferbaren Artikeln
uvm.
DOIT Sitemap (in Entwicklung)
Generiert Google Sitemaps nach individuellen Einstellungen
DOIT Urls (in Entwicklung)
Optimiert Shop Urls und Url Strukturen. Das ist z.B. wichtig für gute Crawlbarkeit, sprechende aussagekräftige Urls, Vermeidung von Duplicate Content, etc.
DOIT Google Merchant (in Entwicklung)
Generierung von optimierten Google Merchant Daten und weitere Automatisierungen.
SEO Explorer (in Entwicklung)
Sehr umfangreiches Modul. Es enthält DOIT Funktionen. Außerdem Keywordrecherche, Keywordverwaltung, Anbindung an Google API`s uvm.
eigene DOIT Module
Sehr gerne entwickeln wir für Sie individuelle DOIT Module die dann in Tasks der anderen DOIT Module integriert werden können! Wenden Sie sich einfach an uns unter +49 89 45455580 oder per Email an info@webtools.de .
Anwendungsbeispiele
Hier ein paar fiktive Beispiele (für die Professional Version). Jedes Task besteht aus einzelnen Steps die in den YAML-Konfigurationsdateien definiert sind.
Task „Artikeldaten Optimierung“ mit den Steps:
Backup Artikeldaten / Attribute
Erstellung von Attributen
Erstellung von Keywords Anhand Artikeldaten und Attributen
Keywordrecherche
Content Backup
Content Erstellung
Task „Attribute erstellen“ mit den Steps:
Backup Attribute
Erstellen Attribute
Content Erstellung (Erweiterung anhand von Attributen)
Content Backup
Task „Datenimport“ mit den Steps:
Backup Artikel-Daten
Download Produktdaten von externer Quelle
Entpacken ZIP-Datei
Öffnen Excel-File und Erstellung von Daten1 Objekten anhand Tabellenblatt 1
Öffnen Excel-File und Erstellung von Daten2 Objekten anhand Tabellenblatt 2
Öffnen Excel-File und Erstellung von Daten3 Objekten anhand Tabellenblatt 3
Import von Artikeln anhand Daten der 3 Daten Objekte
Generierung von Attributen anhand Daten der 3 Daten Objekte
Generierung von sprechenden Artikel Urls
Generierung neuer Google Sitemap
Generierung Google Merchant Daten
Senden Google Merchant Daten
…..
Wenden Sie sich an uns um das Maximale aus Ihrem Shop heraus zu holen.
YAML-Konfigurations-Dateien
Diese Daten liegen im Verzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/modulname“
Für das Modul „doit“ z.B. im Verzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/doit“
Sprachenspezifische Einstellungen in Unterverzeichnissen im jeweiligen Modulverzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/doit/(de/en/..)“
DOIT YAML-Konfigurations-Dateien müssen mit dem Dateinamen-Prefix „doit“ beginnen.
Aufbau der YAML-Konfigurations-Dateien
YAML Dateien sind vergleichbar mit XML Dateien und werden dementsprechend strukturiert aufgebaut.
Jede Datei muss mit „tasks:“ als Root-Position beginnen.
Jede tasks: kann module, globals, form und steps enthalten
Jeder Step eines Tasks kann auf Funktionen einer hier definierte Basisklasse zugreifen. Sollte ein Step auf eine Funktion einer anderen Klasse zugreifen sollen, so kann dies im Step definiert werden.
globals:
Hier können beliebige globale Variablen definiert werden, die in den Steps zur Verfügung stehen.
form:
Für jedes Task kann ein Formular definiert werden, in dem für die Durchführung des Tasks Angaben gemacht werden können.
Wenn z.B. eine Datei hochgeladen werden soll, dann kann ein Datei-Upload Feld definiert werden. Der Dateiupload steht dann in jedem Step zur Verfügung. Gleiches gilt für Checkboxen und beliebige weitere Formulardaten.
Eigene Formulare müssen als „alternative_definition:“ definiert werden.
Feldtypen
Es können folgende HTML Feldtypen definiert werden:
Beispiele:
HTML “select” aus Variablen Wert oder String
HTML “checkbox”
HTML “file”
HTML “text”
HTML “textarea”
value:
Die Inhalte von Auswahllisten und Checkboxen können mit value: vordefiniert werden. Werte können ein String, Array oder Funktionsaufruf sein.
HTML “button”s
Es muss ein taskformsubmit: Button definiert sein!
TaskFormData
Die im Formular definierten Felder können über:
in jedem Step geladen werden.
Beispiel Formular
steps:
Die Definitionsmöglichkeiten in Steps sind sehr vielfältig. In einem Step müssen nur die für den Step relevanten Angaben gemacht werden.
Gesamtübersicht aller Definitionsmöglichkeiten
Beispiele für Steps
Führe Funktion “setValue” aus.
Datenimport aus Datei.
Importiere die Daten der Datei PRODUCER.CSV, wandle die Daten der Datei um und speichere das Ergebnis als Objekt in AllProducerImport_Result.txt
(Mode: fileimport)
Update Article2Categories
Führe ein Update in der OXID Shop Article2Categories-Tabelle durch für jede Zeile der zuvor gesetzten SessionVariable „Article2Categories“ (Mode: sessionimport)
Führe Funktion aus mit dbtable aus
Führe eine Funktion für jede Zeile einer Datenbank Tabelle aus (Mode: dbtable)
XLS Import
Lade Daten aus einem Tabellenblatt eines XLS-Files und speichere das Ergebnis in einer Datei (Mode: fileimport2file)
Modes
Jeder Step wird in einem bestimmten Mode durchgeführt. Der Mode bestimmt wie der Step ausgeführt wird.
function
Für jede Zeile des Steps wird eine Funktion aufgerufen
dbtable
Für jede Zeile einer Datenbank Tabelle wird eine Funktion aufgerufen
sessionimport
Für jede Zeile eines Session Variablen Arrays wird eine Funktion aufgerufen
fileimport
Für jede Zeile einer Import-Datei wird eine Funktion aufgerufen. Wenn Header Angaben gemacht wurden werden diese berücksichtigt.
fileload2sessionvar
Lädt Datei direkt in Session-Variable. Es wird keine Funktion aufgerufen!
fileimport2file
Es wird keine Funktion aufgerufen, sondern z.B. der Inhalt eines Blattes eines Excel Files direkt verarbeitet und z.B. in eine Output-Datei und / oder Session Variable geschrieben.
Anwendungsideen:
Um die Ausführung komplexer Tasks (je mehr Steps sie enthalten) möglichst einfach oder in Zwischenschritten zu bewerkstelligen sind ganz einfach Tricks möglich:
Beispiel: Laden großer Datenmengen, Erstellen von Objekten und speichern des Object local und gleichzeitig in Session Variable oData. Anschließend mehrfache Verarbeitung der oData Objekte an verschiedensten Steps oder unterschiedlichen Tasks
Wenn die Daten nicht in einer Datei gespeichert werden sollen einfach die OutputFile Angaben weglassen.
Anschließend kann erzeugte Datenobject der Session Variable oData an beliebiger Stelle genutzt werden.
Sonderfunktionen
Base::debug
Gibt eine Variable aus:
Base::debugdie
Gibt eine Variable aus und beendet den Prozess anschließend:
BaseSession::loadSessionVariable
Ähnlich wie die OXID Shop Function “Session->getVariable()”. BaseSession prüft aber ob die Variable in Session vorhanden ist. Wenn nein, dann erfolgt Programm-Abbruch mit Base::debugdie().
Beispiel: load mit eingeschalteter Prüfung ob Variable vorhanden ist:
Beispiel: load ohne Prüfung ob Variable vorhanden ist:
Die Verwendung der BaseSession Funktionen ist sehr zu empfehlen!
Wenn z.B. in einer Funktion Variablen die aus Session Daten initialisiert werden, benutzt werden, diese aber durch das Deaktivieren eines vorherigen Steps nicht initialisiert wurden, kann dies zu fehlerhaften Ergebnissen der Funktion führen da sie mit einer leeren Variable arbeitet.
BaseSession::setSessionVariable
Da DOIT viel mit Session Variablen arbeitet müssen diese auch wieder gelöscht werden, wenn ein Task erfolgreich durchgeführt wurde. Dies wird automatisch durchgeführt, wenn mit BaseSession gearbeitet wird. Andernfalls kann es vorkommen dass der Browsercache voll läuft und die Ausfürhung der DOIT Module fehlerhaft wird.
Steptraits
DOIT arbeitet viel mit Session Variablen. Gutes Session Management ist bei der Verwendung von DOIT Modulen essentiell!
Folgende Session Variablen stehen, wenn in der eigenen Klasse mit „use Steptraits“ und die Getter / Setter Methoden in der Step Funktion eingebunden sind, zur Verfügung.
StepData
Die Variable StepData enthält die Daten des jeweiligen Steps. In der Funktion des Steps kann sie mit $this->StepData ausgegeben werden.
Die Werte der Variable StepData werden beim Abbruch eines Steps durch Base::debugdie angezeigt. Es wird so ein einfacheres Debugging ermöglicht.
RunOutput
Während des Durchlaufens eines Steps können unterhalb des Fortschritts-Balken Informationen ausgegeben werden.
LogOutput
Für jeden Step kann ein Logfile erzeugt werden. Dieses wird automatisch mit den Werten der Variable $this->LogOutput gefüllt.
ResultOutput
Am Ende eines Tasks können die Ergebnisse ausgegeben werden, die während der Ausführung aller Steps erzeugt wurden.
ResultErrorOutput
Am Ende eines Tasks können die Ergebnisse ausgegeben werden, die während der Ausführung aller Steps erzeugt wurden.
ResultCount
Im Fortschrittsbalken werden die Anzahl der Ergebnisse eines Steps angezeigt.
ImportData
Alle Daten die nach dem Step gespeichtert werden sollen, müssen in die Variable ImportData geschrieben werden.
eigene DOIT Funktionen Beispiele
Beispiel für eine DOIT Klasse mit allen StepTraits Variablen.
Beispiel für eine DOIT Klasse mit allen StepTraits Variablen und SessionVariable die in einem Step gefüllt wird.
DOIT Module Voraussetzungen
Jedes Modul von WebTools benötigt die Installation des WebTools-Basis Moduls.
Für die Anpassung / Entwicklung von DOIT Funktion oder eigenen DOIT Klassen ist eine DOIT (Workflow) Modul Professional Lizenz erforderlich.
Alle DOIT Module sind mit IonCube verschlüsselt.
DOIT Module Preise
Die DOIT Module sind sehr komplex und kaum zu vergleichen mit “einfachen OXID Modulen”. Für uns steht die Leistungsfähigkeit der Module, die Kosten und Zeit-Ersparnis und der Mehrwert der durch die Module erzeugt wird im Vordergrund.
Deshalb haben alle DOIT Module eine einmalige Lizenzgebühr die die Nutzung des Modules für 1 Jahr includiert. Die Module werden laufend fortentwickelt und deshalb berechnen wir in jedem Folgejahr automatisch eine jährliche Gebühr von 50% der ursprünglichen Lizenzgebühr damit das Modul aktiv bleibt. Soll das Modul nicht mehr genutzt werden senden Sie uns bitte eine Kündigung für das Modul an doit@webtools.de
Fragen zu DOIT Modulen?
Wir freuen uns darauf Sie unterstützen zu dürfen. Gerne erarbeiten wir das für Ihren Shop passende Optimierungskonzept.
Sie erreichen und telefonisch unter +49 89 45455580 oder per E-Mail an doit@webtools.de .
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren