Neu Workflows per Script ausführen

timblicker

Aktives Mitglied
13. Januar 2018
14
1
Hallo zusammen,

ist es möglich Workflows mit einem Script (Bsp: PowerShell, .NET Programm, o.ä.) remote aufzurufen?
 

timblicker

Aktives Mitglied
13. Januar 2018
14
1
Gibt es keine Möglichkeit?
Ist das nur für mich interessant, oder gibt es noch mehr die das gebrauchen könnten?
 

tobiasgraeber

Aktives Mitglied
22. Januar 2017
49
11
Ich fände das ebenfalls sehr interessant. (Könnte ggf. aber auch schon über die wawi dlls gehen...)
 
Zuletzt bearbeitet:

T4DT.GmbH

Offizieller Servicepartner
SPBanner
6. November 2018
327
160
Hannover
Ja geht. Wie genau, hängt aber sehr stark von der verwendeten Wawi-Version ab. Wir haben uns dazu eine ausführbare Exe geschrieben, welche wir von allen Programmen parametrisiert aus aufrufen
 

nesh

Gut bekanntes Mitglied
14. Oktober 2012
177
14
Frankfurt am Main
Hallo,

ich hatte mich auch schon mal an das Thema gesetzt (EXE via Kommandozeile und Parametern aufrufen) und dann div. Dinge via scripts aus zu führen..
Es war sogar schon so weit, dass man nicht die Internen IDs der verschiedenen Bereiche übergeben musste, sondern je nach Bereich die Kundennummer, Bestellnummer, Externe Auftragsnummer oder auch Artikelnummer als Parameter übergeben konnte.
Die Id habe ich mit dann aus der entsprechenden Tabelle "gezogen" und dann via Extern.DLL übergeben.

Leider habe ich mir dann die Doku dazu zu spät genauer angeschaut. Da ich dann erst gesehen habe, dass man die *Manuell Events nicht aufrufen kann, habe ich das "Projekt" begraben.
Da man nur die Ereignisse aufrufen kann die sowieso schon vom Worker oder "sofort" ausgeführt werden, hat das dann für uns keinen Sinn mehr gemacht....

MEGA wäre es, wenn man via Extern.DLL nicht nur ein Ereignis (In meinem Fall "Manuell") sondern zusätzlich auch noch gezielt einen Workflow übergeben könnte, der abgearbeitet werden soll.
Dann würde ich das Projekt wieder zum Leben erwecken... Nicht aus zu denken, was man dann alles Extern triggern könnte....
 

T4DT.GmbH

Offizieller Servicepartner
SPBanner
6. November 2018
327
160
Hannover
Hallo,

ich hatte mich auch schon mal an das Thema gesetzt (EXE via Kommandozeile und Parametern aufrufen) und dann div. Dinge via scripts aus zu führen..
Es war sogar schon so weit, dass man nicht die Internen IDs der verschiedenen Bereiche übergeben musste, sondern je nach Bereich die Kundennummer, Bestellnummer, Externe Auftragsnummer oder auch Artikelnummer als Parameter übergeben konnte.
Die Id habe ich mit dann aus der entsprechenden Tabelle "gezogen" und dann via Extern.DLL übergeben.

Leider habe ich mir dann die Doku dazu zu spät genauer angeschaut. Da ich dann erst gesehen habe, dass man die *Manuell Events nicht aufrufen kann, habe ich das "Projekt" begraben.
Da man nur die Ereignisse aufrufen kann die sowieso schon vom Worker oder "sofort" ausgeführt werden, hat das dann für uns keinen Sinn mehr gemacht....

MEGA wäre es, wenn man via Extern.DLL nicht nur ein Ereignis (In meinem Fall "Manuell") sondern zusätzlich auch noch gezielt einen Workflow übergeben könnte, der abgearbeitet werden soll.
Dann würde ich das Projekt wieder zum Leben erwecken... Nicht aus zu denken, was man dann alles Extern triggern könnte....
Nun ja, du kannst zumindest im Workflow hinterlegen, dass der Workflow nur "extern", also über die DLL aufgerufern werden kann. Dann hinterlegst du den Workflow für "geändert" und startest ihn extern
 

T4DT.GmbH

Offizieller Servicepartner
SPBanner
6. November 2018
327
160
Hannover
Lässt du uns daran teilhaben? Wie habt Ihr es denn gelöst?
Nun ja, im Grunde ist es auf https://developer.jtl-software.de/Wiki/JTLwawiExterndll_einbinden/ hervorragend erklärt. Man geht den Guide einmal durch, baut sich daraus nach Bedarf dann eine Exe-Datei und fertig. Sehr schwierig ist es nicht. Ich hatte bis zur 1.1 auch in Powershell eine fertige Lösung, die ist allerdings nicht kompatibel mit der 1.3 und 1.4. Die hätte ich teilen können. Allerdings ist das Dependency-Loading in der 1.3 und 1.4 leider nicht mehr so sauber gelöst (gab ja vorher auch schon viele kleine Bugs im Speicherhandling der DLL), sodass diese nicht mehr (in Powershell) einwandfrei geladen werden kann. Schade eigendlich.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
938
342
Hallo,
wir haben uns auch zuerst JTLwawiExtern.dll angeschaut.
Jetzt benutzen wir Worker + Script, da wir über SQL Server-Agent zeitgesteuert die manuellen Workflows aufrufen.
Nur zwei SQL-Inserts (die Tabellen sind tWorkflowQueue und tWorkflowLog) werden verwendet, wobei das mit dem Log ist nicht unbedingt notwendig.
Die Lösung ist individuell und wir nutzen die Spalte cLog für unsere Zwecke aus.
Wie immer, direkte Manipulation geschieht auf eigene Gefahr.
Ihr mvh-Team
 

forumjtlolshopag

Sehr aktives Mitglied
6. Juni 2018
752
203
Hallo,
wir haben uns auch zuerst JTLwawiExtern.dll angeschaut.
Jetzt benutzen wir Worker + Script, da wir über SQL Server-Agent zeitgesteuert die manuellen Workflows aufrufen.
Nur zwei SQL-Inserts (die Tabellen sind tWorkflowQueue und tWorkflowLog) werden verwendet, wobei das mit dem Log ist nicht unbedingt notwendig.
Die Lösung ist individuell und wir nutzen die Spalte cLog für unsere Zwecke aus.
Wie immer, direkte Manipulation geschieht auf eigene Gefahr.
Ihr mvh-Team
Das ist interessant. D.h. ihr tragt einfach im Queue den jeiligen Workflow mit dem passenden "Objekt" ein und der Worker führt es durch, richtig?
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
938
342
SQL:
SET QUOTED_IDENTIFIER ON
INSERT INTO eazybusiness.dbo.tWorkflowQueue (
    nEvent
    ,kWorkflow
    ,kObjektPk
    ,kBenutzer
    ,dStartDate
    ,nStatus
    )
SELECT nEvent  -- passendes nEvent zu kWorkflow, in dem Beispiel ist es ein Feld aus tWorkflow-Tabelle
     kWorkflow -- z.B. 23, in dem Beispiel ist es ein Feld aus tWorkflow-Tabelle
    ,1234 AS kObjektPk --z.B. kAuftrag oder kArtikel
    ,11 AS kBenutzer --Workflow Benutzer
    ,DATEADD(N, 1, GETDATE()) AS dStartDate --damit es Worker ausführt, Verzögerung für 1 Minute
    ,1 AS nStatus
FROM eazybusiness.dbo.tWorkflow twa --oder lvAuftrag, tArtikel,
--Dieser Code ist nur eine nicht notwendige zusätzliche Prüfung, 
--ob der Workflow schon gelaufen ist oder gerade in der Queue steht.
--OUTER APPLY (
--    SELECT TOP (1) kWorkflowLog AS Log_Vorhanden
--    FROM eazybusiness.dbo.tWorkflowLog wfl
--    WHERE wfl.kWorkflow IN (
--            23
--            )
--        AND wfl.kObjektPk = lvAuftrag.kBestellung
--        AND wfl.cObjectId = lvAuftrag.cBestellnr
--        AND wfl.cLog IN ( 'Der Workflow wurde erfolgreich beendet.')
--        AND kWorkflowAktion = - 1
--    ORDER BY dDatum DESC
--    ) workflow_log
--OUTER APPLY (
--    SELECT TOP (1) wfq.kWorkflowQueue AS Queue_Vorhanden
--    FROM eazybusiness.dbo.tWorkflowQueue wfq
--    WHERE wfq.kWorkflow IN (
--            23
--            )
--        AND wfq.kObjektPk = lvAuftrag.kBestellung
--        AND wfq.nStatus = 1
--    ORDER BY dStartDate DESC
--    ) workflow_queue


WHERE twa.cName='Mein Auftrag Erstellen'
--AND workflow_log.Log_Vorhanden IS NULL AND workflow_queue.Queue_Vorhanden IS NULL
Würdest du die Lösung zur Verfügung stellen?
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
938
342
SQL-Server-Agent-Auftrag.png
So könnte SQL-Server-Agent Auftrag aussehen.
Besonders die Zeitpläne sind sehr nützlich.
 
  • Gefällt mir
Reaktionen: wawi-dl

forumjtlolshopag

Sehr aktives Mitglied
6. Juni 2018
752
203
Danke für die Abfrage, so ähnlich hätten wir die dann auch für uns aufgebaut. Wir nutzen für "Zeitpläne" das NiFi, dann können wir noch weitere Bedingungen abfragen, die teilweise außerhalb der DB ggf. sogar außerhalb der SQL Welt liegen.
 
  • Gefällt mir
Reaktionen: mvh

wawi-dl

Sehr aktives Mitglied
29. April 2008
6.387
715
Die SQL-Anweisung hatte einen kleinen Fehler, es fehlte ein Komma vor kWorkflow bzw. nach nEvent:
SET QUOTED_IDENTIFIER ON;

INSERT INTO tWorkflowQueue (
nEvent,
kWorkflow,
kObjektPk,
kBenutzer,
dStartDate,
nStatus
)
SELECT
nEvent,
kWorkflow,
1234 AS kObjektPk,
11 AS kBenutzer,
DATEADD(N, 1, GETDATE()) AS dStartDate,
1 AS nStatus
FROM
tWorkflow
WHERE
tWorkflow.cName = 'mein Workflow-Name';

Der Workflow ist aber so nicht sofort ausführbar, richtig?
Wir hätten gerne einen Workflow direkt angestoßen, sofern das geht.

So wäre man doch immer von Worker und Laufzeit abhängig.
 
  • Gefällt mir
Reaktionen: dazligth

dazligth

Sehr aktives Mitglied
6. September 2018
337
86
Danke, dein Beitrag hat mir das Puzzleteil geliefert, dass noch fehlte.
Hier mein knappes Beispiel das einen manuellen Workflow (für Aufträge) in die Queue legt, die dann vom worker im nächsten durchlauf abgearbeitet werden können.

SQL:
INSERT INTO BSSW_EU.dbo.tWorkflowQueue
    (nEvent, kWorkflow, kObjektPk, kBenutzer, dStartDate, nStatus)
VALUES
    (120, -- nEvent eintragen wie es in der tWorkflow zu WF 102 steht.
    102, -- Workflow Nummer - 102 UK B2B: ZA ändern & RE erstellen
    738804, -- Kontextbezogender Key in dem Fall kAuftrag von Auftrag xyz
    8, -- Benuzer 8 Emma, Benutzer 14 = Automation
    GETDATE(), -- Ausfühungszeit sofort
    1); -- nStatus 1 = neu, 2 = geplant
 
  • Gefällt mir
Reaktionen: elevennerds.de

ple

Sehr aktives Mitglied
20. August 2019
695
144
Die SQL-Anweisung hatte einen kleinen Fehler, es fehlte ein Komma vor kWorkflow bzw. nach nEvent:


Der Workflow ist aber so nicht sofort ausführbar, richtig?
Wir hätten gerne einen Workflow direkt angestoßen, sofern das geht.

So wäre man doch immer von Worker und Laufzeit abhängig.
Ja das würde mich auch interessieren, wie man direkt einen worfklow auslösen könnte ohne diesen in den Queue zu schieben.
Hat das schon mal einer gemacht zufällig?
 
Ähnliche Themen
Titel Forum Antworten Datum
Workflows werden plötzlich nicht mehr ausgeführt / Worker Problem JTL-Workflows - Fehler und Bugs 3
Neu Manuelle Workflows auf bestimmte Benutzer einschränken User helfen Usern - Fragen zu JTL-Wawi 6
Customworkflows und manuelle Workflows in 1.10 eingeschränkt / gesperrt? JTL-Wawi 1.10 24
In Diskussion Wie lässt sich die Ausführung eines Workflows stoppen, sobald ein Produkt in einer gewissen Kategorie ist? JTL-Workflows - Fehler und Bugs 1
Workflows für Versandetiketten Export JTL-Wawi 1.10 5
Neu Lieferantenbestellung per CSV Import mit Ameise Artikel VPE JTL-Ameise - Fehler und Bugs 0
Neu howto: "Rabatte irgnorieren" für einen Artikel per Ameise importieren, so dass in einem angeschlossenen POS dieser Artikel keine Rabatte bekommt User helfen Usern - Fragen zu JTL-Wawi 11
Seit Update 1.10.12.0 – Keine Rechnungserstellung per Workflow bei FBA-Aufträgen JTL-Wawi 1.10 0
Neu PayPal Rechnung per Ratepay leitet immer auf Adresseingabeseite zurück Plugins für JTL-Shop 5
Neu Kategorie Beschreibung per Ameise ändern Betrieb / Pflege von JTL-Shop 9
In Diskussion Per Workflow aktuelle Kategorie als Attribut hinterlegen JTL-Workflows - Ideen, Lob und Kritik 5
Bestellung kann nicht per Mail verschickt werden JTL-Wawi 1.10 1
Neu Wenn keine Postnummer für Versand per DHL notwendig ist User helfen Usern - Fragen zu JTL-Wawi 0
In Diskussion Workflow kurze Pause per Batch - Fehler "Die Eingabeumleitung wird nicht unterstützt" JTL-Workflows - Ideen, Lob und Kritik 6
In Diskussion Per Workflow Versandart ändern - EK wird nicht korrigiert JTL-Workflows - Ideen, Lob und Kritik 1
Neu Menge von Auftragspositionen per Workflow ändern User helfen Usern - Fragen zu JTL-Wawi 4
Neu Externe Belege per Workflow speichern Amazon-Anbindung - Fehler und Bugs 3
Neu Per SQL eine Liste nicht lieferbarer Artikel im Auftrag erstellen User helfen Usern - Fragen zu JTL-Wawi 4
In Diskussion Rechnung per mail / Workflow gibt Fehler aus JTL-Workflows - Fehler und Bugs 6
Rechnungsversand per Email nicht mehr möglich JTL-Wawi 1.10 3
Neu Wie richte ich es so ein, dass alle vom Shop versendeten Mails per BBC an eine bestimmte Mail gehen (SMTP) Allgemeine Fragen zu JTL-Shop 1
Neu Lässt sich die Artikelsichtbarkeit pro Kundengruppe per Workflow steuern? User helfen Usern - Fragen zu JTL-Wawi 2
Neu andere Artikelbeschreibung für neue Marktplätze per Ameise, wie ? Arbeitsabläufe in JTL-Wawi 4
Neu alte Bestellungen und Rechnungen per Connector importieren WooCommerce-Connector 2
Neu Amazon: Rechnung per Mail abschalten User helfen Usern - Fragen zu JTL-Wawi 0
Neu Auftrag (Position) per SQL versenden User helfen Usern - Fragen zu JTL-Wawi 5
Neu Verfügbarkeit per Ameise einstellen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Import von Angeboten per Ameise möglich? JTL-Ameise - Ideen, Lob und Kritik 3
Neu Artikelübersicht: JTL-Shop lädt per AJAX gesamte Html-Seite in das Filter-Modal JTL-Shop - Fehler und Bugs 0

Ähnliche Themen