Gelöst (Manuelle) Workflows per Kommandozeile/API starten

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
Wir haben die 1.1 installiert und freuen uns sehr über die manuellen Workflows. Um das ganze jetzt auf die Spitze zu treiben, bräuchte man eine Möglichkeit diese per Kommandozeile zu starten, damit man die von eigenen Programmen aus anstossen kann.

Wir haben bei uns viele Abläufe, die sich leider nicht komplett in der Wawi abbilden lassen und haben dafür viel eigene Software, die auch auf die Wawi-Datenbank zugreift. Am Ende mancher Prozesse sollen bestimmte Aktionen in der Wawi gestartet werden, die sich wunderbar durch Workflows abbilden lassen. Es fehlt nur die letzte Meile, dass man z.B. mit
Code:
JTLWawi.exe /execute_workflow A-1234 workfowXY
oder ähnlichem diesen dann programmatisch anstossen kann.

Ist ein solche Feature geplant? Gibt es vielleicht schon versteckte Kommandozeilenparameter? Ich denke es ist keine große Änderung am Code, da der Button für den manuellen Workflow ja schon existiert, es müsste jetzt nur noch ohne GUI gehen.
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
AW: (Manuelle) Workflows per Kommandozeile/API starten

Woher stammt dieses Zitat? Das klingt ja sehr interessant
EDIT: habs gefunden, im Changelog. Aber in der Wawi habe ich die Bezeichnung (extern) im Gegensatz zu (manuell) nicht gefunden. Wäre nett wenn mal jemand von JTL sagen könnte, was diese ominöse Ticket 18073 beinhaltet
 

Thomas Lisson

Administrator
Mitarbeiter
24. März 2006
15.567
277
Köln
AW: (Manuelle) Workflows per Kommandozeile/API starten

Hi,

es geht hierbei um die JTLwawiExtern.dll - die kann man mit C# einbinden und die enthaltenen Funktionen aufrufen. z.B. Workflow aufrufen
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
AW: (Manuelle) Workflows per Kommandozeile/API starten

Danke für die schnelle Antwort, dann werde ich mich mal daran versuchen...
 

marcos software

Sehr aktives Mitglied
23. Juli 2009
1.742
21
Bonn
AW: (Manuelle) Workflows per Kommandozeile/API starten

3 kurze Hinweise für alle, die die WawiExtern.dll nutzen :

1) diese ist als nur unter 32Bit Umgebungen kompiliert, falls ihr 64Bit oder gemischt nutzen wollt, müsst ihr euch einen kleinen Wrapper schreiben
2) bitte beachtet, dass wenn ihr die Assembly erst dynamisch zur Laufzeit ladet, diese nicht wieder entladen werden, bevor der Workflow durchgelaufen ist. Manche Workflows wie beispielsweise die, die mit Mails zu tun haben werden asynchron abgearbeitet. Rückgabe der jeweiligen Methode ist also u.U. bevor die Workflow durch ist - wer zu diesem Zeitpunkt aber schon wieder entlädt, verhindert die weitere Ausführung des Workflows.
3) Manche Bibliotheken die von der WawiExtern (nach)geladen werden (z.B. Mail) prüfen ihre benötigten Lizenzen im realen Ausführungsverzeichnis (wenn die dann fehlt gibts lustige Fallbacks wie die gleiche Mail zig mal zu senden oder einfach den Text innerhalb der Mail ändern ;) ). Ein einfaches setzen der AppDomain BaseDirectory aufs JTL Programmverzeichnis reicht hier nicht, ebenso CurrentDirectory per Invoke. Was geht ist das legen eines Wrappers ins JTL Programmverzeichnis (oder gar der eigenen Anwendung) wovon wir aber dringend abraten würden, weil einfach unsauber (und du weißt nie, wer wann was bei welcher Install / Uninstall / Update Action wie wo und warum aufräumt). Guter gangbarer Weg ist der Aufruf eines eigenen Wrappers aus dem eigenen Verzeichnis per ProcessStart und dem setzen des Working Directories aufs JTL Programmverzeichnis (für entsprechende nachzuladende Lizenzen). Hat gleichzeitig den Vorteil, dass damit auch direkt Punkt 1) abgearbeitet werden kann.
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
AW: (Manuelle) Workflows per Kommandozeile/API starten

Danke für die vielen Hinweise. Nach vielem Probieren (C# ist Neuland, genauso wie VisualStudio) habe ich heute meinen kleinen Wrapper geschrieben und kann jetzt aus gewohnter Umgebung (JavaEE, PHP) über einen kleinen Webservice die Workflows starten. Das die manuellen nicht gehen stört mich nicht, ich lege mir einfach welche für extern an (musste ich aber auch erstmal rausfinden, dass man das unter Plaftorm explizit anhaken muss).

Ich musste die ganzen DLLs von Hand als Verweise hinzufügen, da das mit dem automatischen Laden anscheinend nicht funktioniert hat. Vielleicht mache ich ja was falsch, aber beim Beispielprojekt hat es auch nur funktioniert, nachdem ich die hinzugefügt habe. Allerdings ist es beim aktuellen Projekt kein Problem die Executable mit ins Wawi-Verzeichnis zu werfen...
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
AW: (Manuelle) Workflows per Kommandozeile/API starten

Von meiner Seite her kann man das Thema gerne als gelöst markieren.
 

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
181
14
AW: (Manuelle) Workflows per Kommandozeile/API starten

Gibt es Informationen zur Threadsicherheit etc? Also wenn ich einen Workflow starte, dauert der Aufruf ggf. relativ lange. Kann ich gleichzeitig in einem anderen Thread noch einen Workflow starten, oder kommt sich das ins Gehege?
 

Guybrush

Gut bekanntes Mitglied
4. September 2015
337
19
AW: (Manuelle) Workflows per Kommandozeile/API starten

Je nach Anforderungen ist evtl. auch das hier noch ganz interessant:
https://github.com/GuybrushX/JtlDbWrapper

Damit kann man direkt auf die JTL DB zugreifen (lesend und schreibend!) - und das alles via einer JTL eigenen DLL, die den DB Zugriff kapselt.

Ist sehr mächtig und es lässt sich wsl. so ziemlich alles an Anforderungen damit realisieren :)
 

Marc Völker

Moderator
Mitarbeiter
15. April 2014
1.772
137
Hürth
AW: (Manuelle) Workflows per Kommandozeile/API starten

Naja, find das nicht so gelungen. Schluss endlich bietet Jtl genau diese Dll auch nicht als API an. Sprich was da drin abgeht kann sich von heute auf morgen grundsätzlich verändern. Geschweige den das du vielleicht auch Inkonsistenzen erzeugen kannst, weil Jtl dort z.B. über einen Controller drauf zugreift und nicht direkt.
 

maik.schwefer

Moderator
Mitarbeiter
1. August 2012
2.545
38
Köln
AW: (Manuelle) Workflows per Kommandozeile/API starten

Wenn ihr direkt über die Datenbank oder über so ein Tool wie das von GuyBrush Daten ändert, verliert ihr damit jeglichen Support von uns. Es kam oft genug vor, dass bei Kunden Probleme auftraten, weil die Kunden selbst auf der Datenbank rumgespielt haben. Die rauszufinden ist immer sehr zeitaufwendig. Seid bitte vorsichtig mit solchen Tools. Wenn ich bei einer Teamviewer-Sitzung sehe das ein Kunde selbst an der Datenbank manipuliert, kann es gut sein, dass ich den Supporet abbreche und lieber den Kunden helfe die Probleme haben die evtl. nicht selbst verschuldet sind.
 

Guybrush

Gut bekanntes Mitglied
4. September 2015
337
19
AW: (Manuelle) Workflows per Kommandozeile/API starten

Ich verstehe die Bedenken - würde mir als Entwickler von JTL ähnlich gehen und die Erfahrung habt ihr wsl. noch mehr und öfter gemacht, dass abenteuerlustige oder unwissende Kunden alles mal eben ausprobieren und sich damit selbst in beide Knie schießen und ihr das wieder richten dürft :)

Ich sehe das so:
- Ja, das Tool *ist* gefährlich, steht ja auch zig Mal so im README deswg. :) Vor allem, da das DB Design in einigen Punkten sagen wir mal "sehr frei" ist, so dass man sich da super easy Inkonsistenzen einbauen kann -> z. B. konnte man sich vor einigen Versionen via Ameise lauter doppelte Artikelnummern importieren - wsl. geht das auch heute noch - auch ohne so ein Tool
- es ist auch nicht für jedermann und viele werden es eh nicht verstehen -> die, die es verstehen, schreiben entweder auch selbst schon in die DB oder verwenden halt osql|sqlcmd etc. und irgendwelche Snippets, die sie irgendwo finden

So ist alles zumindest via JTL DLL gekapselt, die höchstwsl. auch intern verwendet wird und somit eine *gewisse* Sicherheit bietet. Und wie wir alle wissen, kann man sich mit einem UPDATE auch mal eben den Nachnamen bei allen Lieferadressen überschreiben - auch ohne dieses Tool ;)

Fazit:
Ganz klar, damit sollte man eigenverantwortlich und sehr umsichtig umgehen und ich habe auch eben noch das README ergänzt und Maiks Statement verlinkt, um das allen leichtfüßigen potentiellen Usern klar zu machen.

Für die, die wissen, was sie tun (und das nicht nur glauben ;)) kann es eine gute Hilfe sein, die ein der andere Funktion abzubilden, die JTL bisher noch nicht und erfahrungsgemäß auch erst in Wochen oder eher Monaten (oder auch gar nicht) realisieren wird.

@Marc
Dass sich das jederzeit alles ändern kann ist wsl. jedem klar, der den Wrapper verwendet, weil es sicherlich nicht seine erste Entwicklung ist - auch das habe ich noch im README ergänzt.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL Shop 5 Consent Manager - manuelle Einträge Allgemeine Fragen zu JTL-Shop 1
Neu Workflows bei Verbindung über Vodafone laufen deutlich länger als über Telekom User helfen Usern - Fragen zu JTL-Wawi 17
Neu Workflows - Else Ausführung - Rekursion JTL-Wawi - Ideen, Lob und Kritik 19
Kostenlos Einsteigerschulung: Tag 6 Teil 2 - Einführung in Automatisierungen mit JTL-Workflows Messen, Stammtische und interessante Events 6
Beantwortet Frage zu Auftragspositionen in Workflows JTL-Workflows - Ideen, Lob und Kritik 2
Beantwortet Maximale Menge bei Ebay per Workflow setzen. JTL-Workflows - Ideen, Lob und Kritik 2
Neu wie Ebay-Variationen per Ameise exportieren?? JTL-Ameise - Fehler und Bugs 5
Neu SQL Datei per Batch ausführen User helfen Usern - Fragen zu JTL-Wawi 12
Neu Import Lieferantenbestellung per "Aufträge" (*.xml) User helfen Usern - Fragen zu JTL-Wawi 0
Neu Retour - Ausgangszahlung per Überweisung JTL-Shop - Fehler und Bugs 0
Neu Tabs von indivduelle Ansichten schieben bzw. Reihenfolge per Klick ändern Individuelle Listenansichten in der JTL-Wawi 0
Neu Ladenpreise per Ameisenimport entfernen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu JTL-Wawi Verteilen per Softwareverteilung Installation von JTL-Wawi 5
In Bearbeitung POS-Bon (externe Rechnung) aus WaWi per Mail versenden Allgemeine Fragen zu JTL-POS 2
Neu 1.6.27.2 Auftragsattribute erstellen, Werte von Auftragsattribute per Workflow setzen, Auftragsattribute per FFN an Fulfiller übertragen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Eigene Formulare für bestimmte Artikel per Funktionsattribut JTL-Shop - Ideen, Lob und Kritik 2
Neu Lagerbestand per CSV Einfügen, aber wie ? User helfen Usern - Fragen zu JTL-Wawi 12
Neu Wawi 1.5.46.2 keine Auftrag / Rechnung per eMail möglich User helfen Usern - Fragen zu JTL-Wawi 2
Neu Amazon Preise international per Ameise geändert. Automatischer Abgleich!? Preise werden nur auf .de übernommen Amazon-Anbindung - Fehler und Bugs 3
Gelöst Versandbestätigung per Mail versenden über einen Eintrag unter Versand => Packtisch/WMS-Ausgabe Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 3
Neu öffentlicher Wunschzettel per email senden Allgemeine Fragen zu JTL-Shop 0
Neu Retourenanmeldung per Workflow User helfen Usern - Fragen zu JTL-Wawi 2
Neu Sendungsnummer nachträglich geändert, Info per Mail möglich? User helfen Usern - Fragen zu JTL-Wawi 0
IP-Adresse per .htaccess sperren Einrichtung JTL-Shop5 0
Gelöst In WMS Verpacken per Scan starten Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu Kundenimport in Wawi 1.6, und dann per Online-Abgleich gleich weiter in den Shop 5? Arbeitsabläufe in JTL-Wawi 1
Gelöst Freier Wareneingang per MDE ohne "Wareneingangsplatz" Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 8
Neu Benutzer in JTL-Wawi per Ameisen Import anlegen? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Lieferschein/Rechnung/Versandetikett per Email als PDF in Workflow versenden User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wert per Workflow ausrechnen User helfen Usern - Fragen zu JTL-Wawi 4

Ähnliche Themen