G. Pilz
Aktives Mitglied
Hallo zusammen,
je mehr ich einzelne Abläufe/ Prozesse bei uns automatisieren, bzw. sicherer machen möchte, umso mehr Probleme habe ich mit den Workflows.
Mich würde aktuell vor allem interessieren, ob ich etwas "falsch" mache, es andere (zuverlässigere) Ansätze gibt, oder ob es generelle Probleme seitens JTL sind?
Erstes allgemeines Problem: Workflows mit Ausführungszeitpunkt "Sofort" werden nicht zuverlässig getriggert (IMHO ein absolutes No-Go/ Unding!).
Wie u.a. auch hier im Forum nachlesbar wird einem allen Ernstes auch von JTL empfohlen, eine Zeitverzögerung einzustellen! Und wer im Worker für diverse Prozesse ein 60 Sekunden Intervall eingestellt hat, der muss/ sollte dann in seinen Workflows mind. 2 Minuten einstellen, da es ansonsten dennoch passieren kann, dass der Workflow nicht getriggert wird!
Die meisten Workflows verwende ich unter "Aufträge", etliche unter dem Ereignis "Erstellt". Da man innerhalb eines Workflows keine Einstellung bzgl. der Ausführungsreihenfolge eingeben kann, ist es ja interessant zu wissen, wie JTL das handhabt bei Workflows, die (theoretisch) gleichzeitig ausgeführt werden müssten?
Bei Google erscheint (bei Suchbegriff "jtl wawi workflows reihenfolge"): Workflows können alle auf "sofort" stehen. Die werden von oben nach unten abgearbeitet, sofern keine Verzögerung eingestellt ist. Die Reihenfolge der Workflows kannst du mit der Maus verschieben, falls bestimmte abhängig voneinander sind.
OK, gehen wir mal davon aus, dass das stimmt, dann stellt sich mir gleich die nächste Frage, nämlich die, wie es sich dann mit dem Ereignis "Geändert" verhält?
Also angenommen, ich habe unter "Aufträge" -> "Erstellt" 5 Workflows, die alle "zeitgleich", sprich von "oben nach unten" abgearbeitet werden und jeder von denen nimmt nun eine Änderung an dem Auftrag vor.
Wird dann nach jedem Workflow das Ereignis "Geändert" ausgelöst (und würden somit dann alle Workflows unter diesem Ereignis mit Ausführungszeitpunkt "Sofort" getriggert)?
Weil wenn dem so wäre, und diese Workflows u.U. auch wieder Änderungen an dem Auftrag vornehmen, auf welchen "Stand (des Auftrags)" beziehen sich dann die nachfolgenden Workflows unter "Aufträge" -> "Erstellt"?
Und dann würde mich auch noch interessieren, wie es sich mit der Reihenfolge bzgl. der Workflowgruppen verhält?
Also z.B. wenn jetzt über den (JTL) Shop eine neue Bestellung reinkommt, wird dann erst die Gruppe "Aufträge" (und darin dann das Ereignis "Erstellt") ausgelöst, und dann die Gruppe "Kunden" (und darin dann das Ereignis "Angelegt")?
Konkreter Hintergrund meiner Frage ist, dass ich ein Supportticket aufgemacht hatte, weil ich in der Tabelle unter "Verkauf" die Spalte "Debitorennummer" eingefügt hatte, mir aber bei etlichen Aufträgen keine Debitorennummer angezeigt wird, obwohl bei dem Kunden sehr wohl eine vorhanden ist (ungleich 0).
Hier ein Auszug aus der Antwort vom Support:
... wenn ich es richtig verstehe, wird die Debitorennummer dann erst im Kunden eingefügt. Ist der Auftrag bereits erstellt, wird diese nicht nachträglich in den Auftrag "geladen". Es sind immer nur die Daten vorhanden, die zum Zeitpunkt der Erstellung vorhanden waren (Adressänderungen im Kunden bewirken auch keine Änderung im Auftrag).
Bei bereits erstellten Aufträgen, müsste der Kunde erneut im Vorgang hinterlegt werden, damit die Debitorennummer mit übernommen wird.
Mal abgesehen davon, dass ich das nicht glaube, da ja bei einigen Aufträgen die Debitorennummer angezeigt wird (bei denen es sich auch jeweils um Neukunden handelt), wäre das ja totaler Quatsch/ Unsinn.
Hat jemand von euch ggf. dasselbe oder ein ähnliches Problem?
Der nächste Punkt, der mir lange Kopfzerbrechen und (unnötige) Arbeit verursacht hat ist, dass ich in einem Workflow eine (von mehreren) Bedingung habe, die da lautet: Zahlungen.Zahlungen.enthält.Zahlungsart.Name.beginnt nicht mit Otto
Dieser Workflow wurde anscheinend bei einigen Aufträgen nicht (korrekt) ausgeführt. Im Workflow Log (nachdem ich davon erfahren und es gefunden hatte) dann des Rätsels Lösung: Die Bedingung "Zahlungen.Zahlungen.enthält.Zahlungsart.Name" enthält keine Einträge.
Auch das ist IMHO eher ein "Fehler", denn wenn das Feld "leer" ist, dann sollte die Bedingung ja erfüllt sein (und nicht der Workflow wegen eines Fehlers abgebrochen werden)!
Zumal es ja in der Auswahlliste der Vergleichsoperatoren auch "Ist leer" und "Ist nicht leer" gibt.
An der Stelle die Frage: Muss ich jetzt den Workflow kopieren, um in der Kopie auch den Fall "Ist leer" abzufragen, oder kann ich (bspw. per RegEx) die beiden Dinge "beginnt nicht mit Otto)" und "Ist leer" kombinieren (einfach eine zusätzliche Bedingung in den Workflow einbauen scheidet aus, da er wie gesagt mehrere Bedingungen beinhaltet, die alle erfüllt sein müssen)?
Ich würde es auch sehr begrüßen, wenn sich mal jemand von JTL hier mit erhellenden Informationen melden würde. Denn die Workflows sind schon ein enorm wichtiger Bestandteil, nutzen nur nicht viel (oder eher im Gegenteil), wenn man nicht nachvollziehen kann, wie diese "intern arbeiten", bzw. welche "Fallstricke & Bugs" es zu beachten gilt!
Problem ist halt auch, dass sich viele dieser Sachen nicht wirklich "simuliert" testen lassen, sondern nur dann wirklich "getestet" werden können, wenn tatsächlich Aufträge ins System einlaufen (und davon haben wir derzeit noch nicht so viele).
Von daher hoffe ich auf eure freundliche Mithilfe/ Unterstützung.
PS: Was mir auch gerade noch eingefallen ist - In dem Windows Meldungsfenster, welches angezeigt wird, wäre es hilfreicher, wenn da nicht nur "Starte Workflow mit ..." stehen würde, sondern auch noch welchen Workflow!
VG
Gunther
je mehr ich einzelne Abläufe/ Prozesse bei uns automatisieren, bzw. sicherer machen möchte, umso mehr Probleme habe ich mit den Workflows.
Mich würde aktuell vor allem interessieren, ob ich etwas "falsch" mache, es andere (zuverlässigere) Ansätze gibt, oder ob es generelle Probleme seitens JTL sind?
Erstes allgemeines Problem: Workflows mit Ausführungszeitpunkt "Sofort" werden nicht zuverlässig getriggert (IMHO ein absolutes No-Go/ Unding!).
Wie u.a. auch hier im Forum nachlesbar wird einem allen Ernstes auch von JTL empfohlen, eine Zeitverzögerung einzustellen! Und wer im Worker für diverse Prozesse ein 60 Sekunden Intervall eingestellt hat, der muss/ sollte dann in seinen Workflows mind. 2 Minuten einstellen, da es ansonsten dennoch passieren kann, dass der Workflow nicht getriggert wird!
Die meisten Workflows verwende ich unter "Aufträge", etliche unter dem Ereignis "Erstellt". Da man innerhalb eines Workflows keine Einstellung bzgl. der Ausführungsreihenfolge eingeben kann, ist es ja interessant zu wissen, wie JTL das handhabt bei Workflows, die (theoretisch) gleichzeitig ausgeführt werden müssten?
Bei Google erscheint (bei Suchbegriff "jtl wawi workflows reihenfolge"): Workflows können alle auf "sofort" stehen. Die werden von oben nach unten abgearbeitet, sofern keine Verzögerung eingestellt ist. Die Reihenfolge der Workflows kannst du mit der Maus verschieben, falls bestimmte abhängig voneinander sind.
OK, gehen wir mal davon aus, dass das stimmt, dann stellt sich mir gleich die nächste Frage, nämlich die, wie es sich dann mit dem Ereignis "Geändert" verhält?
Also angenommen, ich habe unter "Aufträge" -> "Erstellt" 5 Workflows, die alle "zeitgleich", sprich von "oben nach unten" abgearbeitet werden und jeder von denen nimmt nun eine Änderung an dem Auftrag vor.
Wird dann nach jedem Workflow das Ereignis "Geändert" ausgelöst (und würden somit dann alle Workflows unter diesem Ereignis mit Ausführungszeitpunkt "Sofort" getriggert)?
Weil wenn dem so wäre, und diese Workflows u.U. auch wieder Änderungen an dem Auftrag vornehmen, auf welchen "Stand (des Auftrags)" beziehen sich dann die nachfolgenden Workflows unter "Aufträge" -> "Erstellt"?
Und dann würde mich auch noch interessieren, wie es sich mit der Reihenfolge bzgl. der Workflowgruppen verhält?
Also z.B. wenn jetzt über den (JTL) Shop eine neue Bestellung reinkommt, wird dann erst die Gruppe "Aufträge" (und darin dann das Ereignis "Erstellt") ausgelöst, und dann die Gruppe "Kunden" (und darin dann das Ereignis "Angelegt")?
Konkreter Hintergrund meiner Frage ist, dass ich ein Supportticket aufgemacht hatte, weil ich in der Tabelle unter "Verkauf" die Spalte "Debitorennummer" eingefügt hatte, mir aber bei etlichen Aufträgen keine Debitorennummer angezeigt wird, obwohl bei dem Kunden sehr wohl eine vorhanden ist (ungleich 0).
Hier ein Auszug aus der Antwort vom Support:
... wenn ich es richtig verstehe, wird die Debitorennummer dann erst im Kunden eingefügt. Ist der Auftrag bereits erstellt, wird diese nicht nachträglich in den Auftrag "geladen". Es sind immer nur die Daten vorhanden, die zum Zeitpunkt der Erstellung vorhanden waren (Adressänderungen im Kunden bewirken auch keine Änderung im Auftrag).
Bei bereits erstellten Aufträgen, müsste der Kunde erneut im Vorgang hinterlegt werden, damit die Debitorennummer mit übernommen wird.
Mal abgesehen davon, dass ich das nicht glaube, da ja bei einigen Aufträgen die Debitorennummer angezeigt wird (bei denen es sich auch jeweils um Neukunden handelt), wäre das ja totaler Quatsch/ Unsinn.
Hat jemand von euch ggf. dasselbe oder ein ähnliches Problem?
Der nächste Punkt, der mir lange Kopfzerbrechen und (unnötige) Arbeit verursacht hat ist, dass ich in einem Workflow eine (von mehreren) Bedingung habe, die da lautet: Zahlungen.Zahlungen.enthält.Zahlungsart.Name.beginnt nicht mit Otto
Dieser Workflow wurde anscheinend bei einigen Aufträgen nicht (korrekt) ausgeführt. Im Workflow Log (nachdem ich davon erfahren und es gefunden hatte) dann des Rätsels Lösung: Die Bedingung "Zahlungen.Zahlungen.enthält.Zahlungsart.Name" enthält keine Einträge.
Auch das ist IMHO eher ein "Fehler", denn wenn das Feld "leer" ist, dann sollte die Bedingung ja erfüllt sein (und nicht der Workflow wegen eines Fehlers abgebrochen werden)!
Zumal es ja in der Auswahlliste der Vergleichsoperatoren auch "Ist leer" und "Ist nicht leer" gibt.
An der Stelle die Frage: Muss ich jetzt den Workflow kopieren, um in der Kopie auch den Fall "Ist leer" abzufragen, oder kann ich (bspw. per RegEx) die beiden Dinge "beginnt nicht mit Otto)" und "Ist leer" kombinieren (einfach eine zusätzliche Bedingung in den Workflow einbauen scheidet aus, da er wie gesagt mehrere Bedingungen beinhaltet, die alle erfüllt sein müssen)?
Ich würde es auch sehr begrüßen, wenn sich mal jemand von JTL hier mit erhellenden Informationen melden würde. Denn die Workflows sind schon ein enorm wichtiger Bestandteil, nutzen nur nicht viel (oder eher im Gegenteil), wenn man nicht nachvollziehen kann, wie diese "intern arbeiten", bzw. welche "Fallstricke & Bugs" es zu beachten gilt!
Problem ist halt auch, dass sich viele dieser Sachen nicht wirklich "simuliert" testen lassen, sondern nur dann wirklich "getestet" werden können, wenn tatsächlich Aufträge ins System einlaufen (und davon haben wir derzeit noch nicht so viele).
Von daher hoffe ich auf eure freundliche Mithilfe/ Unterstützung.
PS: Was mir auch gerade noch eingefallen ist - In dem Windows Meldungsfenster, welches angezeigt wird, wäre es hilfreicher, wenn da nicht nur "Starte Workflow mit ..." stehen würde, sondern auch noch welchen Workflow!
VG
Gunther
Zuletzt bearbeitet: