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

t.oster

Gut bekanntes Mitglied
4. Dezember 2013
191
19
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
191
19
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.574
299
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
191
19
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
23
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
191
19
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
191
19
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
191
19
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

Sehr aktives Mitglied
4. September 2015
338
31
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.886
191
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.548
45
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

Sehr aktives Mitglied
4. September 2015
338
31
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
Manuelle Workflowliste nach Update durcheinandergewürfelt JTL-Wawi 1.8 0
Neu Zeilenumbruch Artikel manuelle Eingabe User helfen Usern - Fragen zu JTL-Wawi 0
Neu Vorschlag fürs Forum Costum Workflows JTL-Wawi - Ideen, Lob und Kritik 1
Verwiesen an Support wo finde ich die Logdatei von den Workflows JTL-Workflows - Fehler und Bugs 9
Beantwortet Abbild der Workflows als CSV JTL-Workflows - Ideen, Lob und Kritik 1
In Bearbeitung Warum sind die Leerzeichen im Namen von Workflows JTL-Workflows - Fehler und Bugs 2
Neu shopapotheke per Anbindung eBay-Anbindung - Fehler und Bugs 1
Neu Umlagerung per Ameisen-Import JTL-Wawi - Fehler und Bugs 1
Neu In einen Portlet-Container im Frontend per Ajax Datennachladen (weitere anzeigen) Technische Fragen zu Plugins und Templates 1
Neu eBay Plus Angebote per Ameise steuerbar ? Eigene Übersichten in der JTL-Wawi 6
Neu Zugang zu Kategorien nur per Kennworteingabe Plugins für JTL-Shop 3
Neu Eigene Felder (Kunde) in csv-Datei per Ausgabe (Auftrag oder Lieferschein) Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Lieferadresse / Rechnungsadresse im Auftrag per Doppelklick wählbar machen JTL-Wawi - Ideen, Lob und Kritik 0
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Neu Lieferantenbestellung als CSV mit selbst festgelegten Spalten per Mail senden Arbeitsabläufe in JTL-Wawi 1
Neu Benachrichtigung per Workflow bei Wareneingang User helfen Usern - Fragen zu JTL-Wawi 24
Neu Weiterleitungen direkt per Datenbank einfügen aufgrund Größe bzw. Anzahl? Betrieb / Pflege von JTL-Shop 9
Gelöst Per Workflow im Servicedesk eine Mail versenden. Gelöste Themen in diesem Bereich 4
Variationen per Ameise umbenennen JTL-Wawi 1.8 1
Workflow Auftraqspositionen per Email an Kunden senden JTL-Wawi 1.7 3
Neu Ist es möglich per Ameise Kunden zu löschen? Arbeitsabläufe in JTL-Wawi 2
Neu LS-Pos Kundenrechnung per Email Fragen rund um LS-POS 1
Neu Warenkorb per Link teilen Allgemeine Fragen zu JTL-Shop 6
Ausgabe per E-Mail geht plötzlich nicht mehr, Testmail aus Wawi aber schon JTL-Wawi 1.6 22
Beantwortet Kunde von Firma per Workflow setzen JTL-Workflows - Ideen, Lob und Kritik 1
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu Consent Status per Smarty Var abfragen Technische Fragen zu Plugins und Templates 2
Nur noch sporadischer Versand per Mail von Rechnungen, Lieferscheinen und Mahnungen nach Update auf Version 1.8. JTL-Wawi 1.8 0
Neu Kinderartikel per Ameise vom Vater lösen Arbeitsabläufe in JTL-Wawi 6
Neu Probleme bei Aufgabenplaner (Export-Manger) per Cronjob JTL-Shop - Fehler und Bugs 1
Neu EK-Preise per Workflow in Lieferantenbestellung einfügen? User helfen Usern - Fragen zu JTL-Wawi 0
Neu per Workflow: WhatsApp oder ähnliches senden User helfen Usern - Fragen zu JTL-Wawi 0
Preise per Artikel Funktionsattribut bei einzelnen Artikeln ausblenden Einrichtung JTL-Shop5 0
Neu Vorschlag: Per Workflow Tickets erstellen Servicedesk (Beta) 1
Label per Import bedienen JTL-Wawi 1.8 0
Neu Artikeländerung per Artikelnummer mit Wildcard? JTL-Ameise - Ideen, Lob und Kritik 1

Ähnliche Themen